Backup der MySQL-Datenbank über einen cronjob: Unterschied zwischen den Versionen

Aus Synology Wiki
Wechseln zu: Navigation, Suche
(Die Seite wurde neu angelegt: Hier soll dieser Artikel rein: http://www.synology-forum.de/showthread.html?t=895&highlight=cronjob)
 
(Inhalt eingefügt)
Zeile 1: Zeile 1:
Hier soll dieser Artikel rein: http://www.synology-forum.de/showthread.html?t=895&highlight=cronjob
+
==Vorbemerkungen==
 +
* 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:
 +
<pre>
 +
#!/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</pre>
 +
* 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.
 +
* Zum Schluss muss man dieses Skript noch in der Datei /etc/crontab einfügen, um einen zeitgesteuerten Aufruf zu ermöglichen. Man fügt dazu folgende Zeile in die crontab ein (Tabs verwenden, keine Leerzeichen!):
 +
<pre>
 +
1      0      *      *      *      root    sh /volume1/deinpfad/mysqlbackup.sh
 +
</pre>
 +
* Diese Zeile bewirkt, dass das Skript täglich um 0:01 Uhr ausgeführt wird (direkt nach dem Aktualisieren der Uhrzeit).
 +
* Zum Abschluss muss der cron-Dienst bzw. die Synology Station neu gestartet werden.

Version vom 19. September 2008, 11:52 Uhr

Vorbemerkungen

  • 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.
  • Zum Schluss muss man dieses Skript noch in der Datei /etc/crontab einfügen, um einen zeitgesteuerten Aufruf zu ermöglichen. Man fügt dazu folgende Zeile in die crontab ein (Tabs verwenden, keine Leerzeichen!):
1       0       *       *       *       root    sh /volume1/deinpfad/mysqlbackup.sh
  • Diese Zeile bewirkt, dass das Skript täglich um 0:01 Uhr ausgeführt wird (direkt nach dem Aktualisieren der Uhrzeit).
  • Zum Abschluss muss der cron-Dienst bzw. die Synology Station neu gestartet werden.