Backup aller mySQL Datenbanken

Ein komplettes Backup aller mysql-datenbanken lässt sich mit dem Befehl:

mysqldump -A -a -C -c -e --user=root --password=****** > dump.sql

durchführen.

Die Optionen bedeuten hier:

Kurze OptionLange OptionBedeutung
-A–all-databasesAlle Datenbanken sichern
-a–create-optionsErstellungseigenschaften der Tabelle einfügen
-C–compressDen Datenverkehr zwischen mysql Server und Client komprimieren
-c--complete-insertDie Spaltennamen in der Datei ausschreiben, also z.B.

 

INSERT INTO `table` VALUES
(1, 'Zeile1'),
(2, 'Zeile2'),
(3, 'Zeile3');
-e--extended-insertMehrere Reihen in eine Abfrage kombinieren
 
--skip-extended-insert

Da die Option --extended-insert seit längerem Standard ist, kann man mittels --skip-extended-insert
diese Option ausschalten und bekommt ein INSERT Statement pro Zeile, z.B.

INSERT INTO `table` VALUES (1, 'Zeile1');
INSERT INTO `table` VALUES (1, 'Zeile2');
INSERT INTO `table` VALUES (1, 'Zeile3');
(da diese Art sehr langsam ist, wird sie nur für kleine Tabellen oder zu Analysezwecken so empfohlen)

Hier noch eine Erklärung des Unterschieds zischen –complete-insert und –extended-insert.

Tipp

Will man das Passwort nicht unbedingt an der Konsole im Klartext eingeben, kann man mit der Zeile:

mysqldump -A -a -C -c -e --user=root --password > dump.sql

auch erreichen, dass ein Abfrage-Dialog erscheint und man das Passwort ohne Anzeige eingeben kann. (Dies funktioniert natürlich NICHT in automatischen Scripts… :D)

Dies ist für automatische Sicherungen aller Datenbanken praktisch.

Eine einzelne Datenbank kann man aber auch einfach wie folgt sichern (z.B. als „Quick Backup“ vor einem Applikations-Update):

mysqldump -u BENUTZER -p DB_NAME > db.sql

Wieder eingespielt wird das Backup mit dem Befehl:

mysql < backup-file.sql

Will man hingegen nur eine bestimmte Datenbank wieder einlesen, geschieht dies mit dem Befehl:

mysql DB_NAME < backup-file.sql

Evtl. muss man natürlich auch beim Einspielen den Benutzernamen und Passwort eingeben:

mysql --user=root --password < backup-file.sql