Dies ist eine alte Version des Dokuments!
Für MySQL Datenbanken gibt es afaik keine Backup-Agents, wie zB bei Microsoft SQL, welche die vorhanden Datenbanken im laufenden Betrieb sichern. Aber MySQL bringt mit dem »mysqldump« Utility bereits selbst ein geeignetes Werkzeug mit, welches sich gut in einem Skript verarbeiten lässt. Das folgende Skript sichert zB alle vorhandenen MySQL Datenbanken, verzippt diese, verschiebt diese Dumps in einen eigenen Ordner und löscht ältere Dumps wieder:
/root/sqldumper.sh
#!/bin/sh # MySQL dump script # v1.0 # prontosystems.org # where to save database dumps SAVEDIR="/home/SQLDUMPS/" # sql root password SQLPASS="mysqlpass" # dump file name ending FILEEND="`date +%Y%m%d`" # delete dumps older than n days DELOLDER="6" # absolute pathnames MYSQLDUMP=`which mysqldump` GZIP=`which gzip` # scriptname and pid SCRIPT="`basename $0`[$$]" # delete files for TODEL in `find ${SAVEDIR} -mtime +${DELOLDER}` ; do rm ${TODEL} if [ $? -eq 0 ] ; then logger "${SCRIPT}: deleted ${TODEL}" fi done # dynamic listing of databases at runtime DATABASES=`mysql -u root -p$SQLPASS -e 'show databases' | cat | grep -v "^Database$" | grep -v "^information_schema$"` # create SAVEDIR if it does not exist if [ ! -w ${SAVEDIR} ] ; then mkdir ${SAVEDIR} fi # dump databases for DB in ${DATABASES} ; do ${MYSQLDUMP} -u root -p${SQLPASS} --opt --quote-names ${DB} | ${GZIP} -9 > ${SAVEDIR}${DB}-${FILEEND}.sql.gz done exit 0
Im og Beispiel wird das Skript »sqldumper.sh« genannt und im Homeverzeichnis von »root« abgelegt. Abschließend wird dem Skript noch das Execute-Bit zugewiesen, damit es ausführbar wird und die Rechte für »Others« werden komplett entzogen:
# chmod 750 /root/sqldumper.sh
Damit das Skript regelmäßig ausgeführt wird, legen wir einen geeigneten Zeitpunkt in der »/etc/crontab« fest. Fügen Sie hierfür zB die Zeile »5 0 * * * root /root/sqldumper.sh > /dev/null 2>&1« in die »/etc/crontab« ein. Dadurch wird von Cron das angegebene Skript täglich um 00:05 Uhr ausgeführt:
/etc/crontab
SHELL=/bin/sh PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin # m h dom mon dow user command 17 * * * * root cd / && run-parts --report /etc/cron.hourly 25 6 * * * root test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.daily ) 47 6 * * 7 root test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.weekly ) 52 6 1 * * root test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.monthly ) # 5 0 * * * root /root/sqldumper.sh > /dev/null 2>&1
Weitere Hinweise zum Umgang mit »cron« finden Sie im Artikel -> Der Taskscheduler »cron«
— pronto 2011/05/23 12:58