Backup der MySQL-Datenbank über einen cronjob
Aus Synology Wiki
Das Skript
- Das unten beschriebene Skript sowie die erstellten Backups sollte man am besten irgendwo auf Volume1 speichern, den gewünschten Pfad muss man im Skript überall dort eingeben, wo bis jetzt deinpfad steht. Auch das sqlpasswort muss noch entsprechend angepasst werden.
Man erstellt eine Datei mysqlbackup.sh mit folgendem Inhalt:
#!/bin/bash # # dieses Skript kann man beliebig oft ausführen # # Anzahl der Sicherungen die aufgehoben werden sollen KEEP=2 BACKUPS=`find /volume1/deinpfad/backup -name "mysqldump-*.gz" | wc -l | sed 's/\ //g'` while [ $BACKUPS -ge $KEEP ] do ls -tr1 /volume1/deinpfad/backup/mysqldump-*.gz | head -n 1 | xargs rm -f BACKUPS=`expr $BACKUPS - 1` done DATE=`date +%Y%m%d%H%M%S` rm -f /volume1/deinpfad/backup/.mysqldump-${DATE}.gz_INPROGRESS /usr/syno/mysql/bin/mysqldump --opt -uroot -psqlpasswort --all-databases | gzip -c -9 > /volume1/deinpfad/backup/.mysqldump-${DATE}.gz_INPROGRESS mv -f /volume1/deinpfad/backup/.mysqldump-${DATE}.gz_INPROGRESS /volume1/deinpfad/backup/mysqldump-${DATE}.gz exit 0
- Die Datei wird jetzt in /volume1/deinpfad gespeichert.
- Jetzt muss noch das Unterverzeichnis /volume1/deinpfad/backup angelegt werden.
- Testweise kann man das Skript schon mal mit "sh /volume1/deinpfad/mysqlbackup.sh" starten. Bei jedem Aufruf werden zunächst die überflüssigen Backups gelöscht und dann das neue Backup angelegt.
Cronjob
Das Skript muß noch in der Datei /etc/crontab eingetragen werden, um einen zeitgesteuerten Aufruf zu ermöglichen. Dazu wird das Kommando sh /volume1/deinpfad/mysqlbackup.sh mit einem passenden Präfix eingetragen, und anschließend der cron daemon neu gestartet. Details dazu sind im Artikel über Cron zu finden, hier einige Beispiele für Präfixe (Tabs verwenden, keine Leerzeichen!):
#minute hour mday month wday who command # Command jede Minute ausführen: * * * * * root sh /volume1/deinpfad/mysqlbackup.sh # Jeden Tag um 22:00 h ausführen 0 22 * * * root sh /volume1/deinpfad/mysqlbackup.sh # Jeden Sa. um 22:00 h ausführen 0 22 * * 6 root sh /volume1/deinpfad/mysqlbackup.sh # Alle 5 min ausführen */5 * * * * root sh /volume1/deinpfad/mysqlbackup.sh # Alle 2 Std. ausführen 00 */2 * * * root sh /volume1/deinpfad/mysqlbackup.sh # Von Mo. bis Fr. um 01:00 h ausführen 0 1 * * 1-5 root sh /volume1/deinpfad/mysqlbackup.sh
Links
- Referenz für mysqldump in MySQL 5.1