Für den Export / Backup der MySQL Datenbank habe ich auch ein kleines Skript eingeplant.
Da ich pro Datenbank gerne ein eigenes Backupfile habe anstatt mit
mysqldump –all-databases
alle Datenbanken in ein einziges großes File zu schreiben, arbeitet für mich folgendes Skript:
for a in $(mysql -u root -s -e "show databases;" |grep -v Database| grep -v schema); do mysqldump --add-drop-database -u root $a > /sql_backup/$a.sql && zip -m /sql_backup/$a.sql.zip /sql_backup/$a.sql; done
In der Crontab noch einplanen:
#SQL Backup 0 23 * * * sh /usr/local/bin/sqlbackup.sh >/dev/null 2>/dev/null
Anstatt >/dev/null 2>/dev/null kann man natürlich auch z.B. /var/log/sqlbackup.log angeben, wenn man das Backup kontrollieren möchte.
Kurz erklärt.
Das Skript holt sich die Datenbanknamen aus der MySQL DB, entfernt die Einträge mit "Database" und "schema" und führt dann in einer Schleife, pro selektierten Datenbanknamen, den mysqldump und anschließenden zip Befehl aus.
Ja, ich weiß. Bei einem mysqldump –all-databases könnte man bei einem Import auch die gewünschte DB angeben, anstatt alles aus dem Backupfile zu importieren.
Aber ich, für mich, habe so eine bessere Übersicht und brauche gegebenenfalls nur mit "mysql -u username -p < Backupfile" die Datenbank wiederherstellen, die in dem File drin ist, ohne mir viel Gedanken über andere Parameter zu machen. 🙂
{jcomments on}