MySQL Backup alle Datenbanken
2 Comments# mysql-backup.sh Montag /backups
MySQL Backup-Script
#! /bin/bash PREFIX=$1 destination=$2 backupfolder=$destination/$PREFIX"_sqlbackup" user="root" password="secret" # # usage message # printUsage () { echo "USAGE: <prefix> <destination path>" exit 1 } # # backup function # backup () { echo "starting MySQL backup" databases=$( mysql -u$user -p$password -e 'show databases' --batch | grep -v mysql | grep -v information_schema | grep -v Database | grep -v performance_schema ) if [ ! -d $backupfolder ]; then mkdir $backupfolder fi for database in $databases do filename=$PREFIX.$database.sql.gz mysqldump -u$user -p$password $database | gzip > $backupfolder/$filename #Verbosity #echo done $filename done echo "done MySQL backup" } # # main section # if [ $# -ne 2 ]; then printUsage fi backup
cron job
Abschließend muss jetzt noch ein cron job angelegt werden, der die Sicherung regelmäßig startet. Das Sicherungs-Skript erwartet 2 Parameter. Der erste Parameter ist ein Datei-Präfix, welcher vor den Sicherungs-Dateinamen geschrieben wird. Wir geben hier den Tag für die tägliche Sicherung und den Monat für die monatliche Sicherung mit Hilfe des date Kommandos mit. Das %-Zeichen muss bei der Verwendung innerhalb von Crontab allerdings noch mittels Backslash (\) escaped werden. Der zweite Parameter ist der Ziel-Ordner in dem die Sicherungsdateien abgelegt werden.
# Datensicherung täglich Nachts um 1:00 Uhr 0 1 * * * root /usr/local/sbin/mysql-backup.sh $(date +\%a) /var/mysql-backups/daily # Datensicherung 1 x pro Monat immer am 1. um 3 Uhr 0 3 1 * * root /usr/local/sbin/mysql-backup.sh $(date +\%b) /var/mysql-backups/monthly