Unterstütze unsere Tutorials mit einem WerbeClick!

Linux Tipps

Debian Tipp #21: Wenn Ihre Debian Maschine an einer langsamen Netzwerk Verbindung hängt, Sie aber auch Zugang zu einer Schnellen haben, schauen Sie sich doch mal das Paket apt-zip an.

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ß!
 
Unterstütze unsere Tutorials mit einem Werbeclick!

Über uns

Wir sind ein agiles Team von Softwareentwicklungen, UX-Designern und IT-Supporten und haben uns auf individuelle Softwarelösung für den Mittelstand spezialisiert. Unsere besondere Stärken sind  Web-Anwendungen mit dem Symfony Framework sowie individuelle Industrielösungen für Produktionslinien, Servicetechniker oder Inspekteure zu entwickeln. 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!