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ö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ü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ö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ä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ökönnen diese auch wieder woanders sichern oder einspielen.
Alle Datenbanken in einer Datei sichern
Wenn wir jetzt alle verfüverfügbaren Datenbanken in einer Datei sichern mömöchten, mü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ökönnen wir die einzelnen Datenbanken in jeweils einer eigenen Datei sichern. Dazu verwenden wir ein Bash-Skript welches wir auf unserem Server ausfü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