MySQL Backup alle Datenbanken

Einrichtung einer regelmäßigen Datensicherung aller MySQL-Datenbanken auf einem Linux-Betriebssystem mit Cron und Gzip. Einfache Lösung mit Standard-Boardmitteln der meisten Linux-Distributionen.
 
Mit diesem Skript kann man manuell, oder per Cron alle MySQL-Datenbanken sichern.
Beispiel Aufruf des Skripts:
# mysql-backup.sh Montag /backups
 
 

MySQL Backup-Script

Name des Skripts: mysql-backup.sh
Das Skript nach /usr/local/sbin kopieren.

 
#! /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 <<< "SHOW DATABASES" | grep -v mysql | grep -v information_schema | grep -v Database )

        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.

Beispiel: Cronjob in /etc/cron.d/mysql-backup
# 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

 
Jetzt sollten täglich Sicherungsdateien erzeugt werden die unter /var/mysql-backups zu finden sind.

Viel Spaß!
 

Über uns

Wir sind ein agiles Team von Programmierern und haben uns auf Erweiterungen (extensions) für eine Vielzahl von Systemen spezialisiert. Unsere besondere Stärke ist das entwickeln von Erweiterungen für Shop-Systeme basierend auf dem Magento Framework oder die Entwicklung an Web-Anwendungen mit dem Symfony Framework. Eine weitere Stärke ist die Erweiterung von Content Management Systemen wie beispielsweise Wordpress, Typo3, Drupal und Joomla. Das entwickeln von Apps für Android, Windows und Apple OS Systemen ist selbstverständlich!