Skip to main content

Backup einer MySQL Datenbank erstellen

Einleitung

Es ist immer ratsam, Backups von einem System zu erstellen. Wir werden hier den Befehl mysqldump verwenden. Dieser kann dazu verwendet werden, um Backups einer bestimmten Datenbank oder mehreren Datenbanken zu erstellen.

Backup einer Datenbank

Um ein Backup einer Datenbank zu erstellen, brauchen wir den Namen der entsprechenden Datenbank. Wir können uns alle Datenbanken anzeigen lassen, mit dem folgenden Befehl in der MySQL Shell.

SHOW DATABASES;

Im Beispiel erstellen wir ein Backup der Datenbank _erp_prod. Um dieses Backup zu erstellen, verwenden wir dann den folgenden Befehl. Bei dem Befehl müssen wir nur den Datenbank-Namen und den Namen der Backup-Datei ändern.

mysqldump -u root -p _erp_prod > backup.sql

Der Befehl wird aus der Linux-Shell abgesetzt, nicht aus der MySQL-Shell!

Wir erhalten dann die Backup-Datei in unserem aktuellen Verzeichnis und können diese dann sichern, oder auf einem anderen Server wieder einspielen.

Backup mehrerer Datenbanken in einer Datei

Um mehrere Datenbanken in einer Datei zu sichern, verwenden wir einen ähnlichen Befehl. Dabei verändern wir wieder die Namen der Datenbanken und der Backup-Datei.

mysqldump -u root -p --databases datenbank_eins datenbank_zwei > backup.sql

Die beiden Datenbanken befinden sich dann jetzt in der einen .sql Datei und können diese auch wieder woanders sichern oder einspielen. 

Alle Datenbanken in einer Datei sichern

Wenn wir jetzt alle verfügbaren Datenbanken in einer Datei sichern möchten, müssen wir lediglich den folgenden Befehl verwenden. Dann wird wieder eine Backup-Datei erstellt und alle Daten der Datenbanken werden in diese Datei geschrieben.

mysqldump -u root -p --all-databases > alle_datenbanken.sql

Datenbanken in verschiedenen Dateien sichern

Jetzt zum Schluss können wir die einzelnen Datenbanken in jeweils einer eigenen Datei sichern. Dazu verwenden wir ein Bash-Skript welches wir auf unserem Server ausführen. Es werden dann einzelne Dateien angelegt, die den Inhalt der jeweiligen Datenbank haben.

for DB in $(mysql -e 'show databases' -s --skip-column-names); do
    mysqldump $DB > "$DB.sql";
done