Snippet – MySQL Datenbank sichern

Da der Raspberry PI ab und an die schlechte Angewohnheit hat, z.B. bei einem Stromausfall das Filessystem auf der SD-Karte zu schreddern weil z.B. noch Schreiboperationen liefen, musste eine Möglichkeit der automatisierten Sicherung der MySQL Datenbanken her.

Datenbank sichern

Hierzu habe ich mysqldump genutzt. Gesichert werden alle Datenbanken (–all-databases) inkl. deren Struktur und Daten des entsprechenden Benutzers (–user). Das Ergebnis des Dumps wird in eine Datei geschrieben und mit gzip komprimiert. Bei mir landet die Datei auf einem NAS welches unter /media gemountet ist.

Im Dateiname wird mittels `date +%Y%m%d` immer das aktuelle Datum eingemischt damit die Sicherung vom Vortag nicht überschrieben wird.

Das Shell-Script sieht dann folgendermaßen aus:

#!/bin/bash
sudo mysqldump --user=<benutzer> --password=<passwort> --all-databases | gzip > /media/nas/db_sicherung_`date +%Y%m%d`.sql.gz
exit 0

Das Script rufe ich dann täglich mittels Cron auf. In meinem Fall immer um 21:15 Uhr. Ausgaben des Scripts (auch Fehler!) schreibe ich nach /dev/null.

Also crontab -e aufrufen und folgende Zeile hinzufügen:

15 21 * * * sudo /usr/local/bin/sicherung.sh &> /dev/null

Sicherung zurückspielen

In der Weboberfläche von phpmyadmin kann der Dump bei Bedarf über den Menüpunkt „Importieren“ wieder zurückgesichert werden. Es kann direkt die gzip kompromierte Datei über „Durchsuchen“ ausgewählt mit Klick auf „OK“ wieder hergestellt werden.mysqlrestore

Aufräumen

Damit nicht unendlich viele Sicherungen auf dem NAS vorgehalten werden, lösche ich mittels find und rm alle Sicherungsdateien die älter als 10 Tage sind. Folgender Befehl kann in ein eigenes vom Cron aufgerufenes Shell-Script oder auch in das Sicherungsscript von oben.

find /media/nas/ -mtime +10 -exec rm {} \;

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert