MySQL-Datenbanken sichern

veröffentlicht am 14. Mai 2011

Vorgestern habe ich meinen Server neu aufgesetzt und in dem Rahmen natürlich auch wieder meine tägliche Datensicherung. Für die Sicherung meiner Datenbanken habe ich mir ein Script geschrieben, mit deren Hilfe ich automatisch jede einzelne Datenbank meines MySQL-Servers in eine eigene Datei sichere. Dieser Artikel zeigt die Grundbefehle für eine MySQL-Datensicherung und natürlich stelle ich auch mein Script zur Verfügung.

MySQL-Datenbank sichern

MySQL-Datenbanken sichert man am Besten mit dem Kommandozeilen-Tool mysqldump, welches standardmäßig mit dem MySQL-Server mitinstalliert wird. Die Syntax zur Sicherung einer Datenbank lautet wie folgt:

mysqldump -u<Benutzername> -p<Passwort> <Datenbank> > <SQL-Datei>

Beispiel:

mysqldump –uroot –pgeheim techspread > /backup/techspread.sql

Natürlich bietet der mysqldump Befehl noch etliche weitere Parameter, in den meisten Fällen ist diese Variante jedoch vollkommen ausreichend.

MySQL-Datenbank wiederherstellen

Die Syntax zum Wiederherstellen der Datenbank lautet wie folgt:

mysql -u<Benutzername> –p<Passwort> <Datenbank> < <SQL-Datei>

Beispiel:

mysql –uroot –pgeheim techspread < /backup/techspread.sql

MySQL-Datenbank via Netzwerk sichern

Wer noch einen Schritt weiter gehen möchte, kann auch MySQL-Server per Netzwerk/Internet sichern. Dazu muss dem mysqldump-Befehl lediglich ein weiterer Parameter mit auf den Weg gegeben werden. Der angegebene Benutzer muss natürlich auch Zugriff via Netzwerk erhalten (was in der Standardeinstellung nicht der Fall ist):

mysqldump -h <Server> -u<Benutzername> -p<Passwort> <Datenbank> > <SQL-Datei>

Beispiel:

mysqldump -h techspread.de -uroot -pgeheim techspread > /backup/techspread.sql

MySQL-Backup-Script

Damit man sich nicht manuell um die Sicherung jeder einzelnen Datenbank kümmern muss, habe ich folgendes Script geschrieben:

#! /bin/bash

BACKUPDIR=<Sicherungsordner>
USERNAME=<Benutzername>
PASSWORD=<Passwort>

if [ -d $BACKUPDIR ];
then
	rm -r $BACKUPDIR
fi

mkdir $BACKUPDIR
cd $BACKUPDIR

DATABASES=`mysql -u$USERNAME -p$PASSWORD -Bse 'show databases'`
for DATABASE in $DATABASES;
do
	if [ "$DATABASE" != "information_schema" ];
	then
		mysqldump -u$USERNAME -p$PASSWORD $DATABASE > ${DATABASE}.sql
	fi
done

Schlussbemerkung

Auf Basis der vorgestellten Befehle und dem Script kann man sich noch weitaus mächtigere Scripte schreiben. So habe ich das Script auf Arbeit so eingerichtet, dass man über Parameter an das Script das Sicherungsverzeichnis, den Server, den Benutzernamen und das Passwort übergibt. Dadurch kann man komfortabel eine zentrale Sicherung für mehrere MySQL-Server einrichten.

Hinterlasse einen Kommentar