HowTo: MySQL-/ MariaDB Datenbanken exportieren - Backup erstellen mit mysqldump
- Aktualisiert: Freitag, 25. März 2022 10:09
- Geschrieben von Mazin Shanyoor
Das Programm mysqldump erstellt eine Backup-Datei für eine MySQL-Datenbank in Form von SQL-Anweisungen. Listing 1 bis 9 zeigen die komplexen Möglichkeiten für die Erzeugung einer Backup-Datei mittels mysqldump.
Listing 1: Syntaxe
mysqldump -u root -p [optionen] dbname > backup.sql
Backup einer Datenbanken plus Komprimierung mit GUNZIP
Listing 1.1: Syntaxe
mysqldump -u root -p [optionen] dbname | gzip -c > backup.sql.gz
Einzelne Datenbanken in einer Backup-Datei sichern
Listing 1.2
mysqldump -u username -p --databases db_name1 [db_name2 ...] > backup.sql
Die beste Option für MyISAM-Tabellen ist die Option --look-all-tables. Das Kommando bewirkt, dass während des Datenbankdumps ein LOCK-Befehl alle Tabelle blockiert und dadurch die Tabellenintegrität in der Backup-Datei gewährleistet ist.
Listing 2: Beispiel für MyISAM-Tabellen
mysqldump -u root -p --lock-all-tables dbname > backup.sql
Sinnvoll ist das direkte Komprimieren der Backup-Datei durch GUNZIP beim Erstellen des Backups (Listing 4 und 5).
Listing 3: Backup-Komprimierung mit GUNZIP
mysqldump -u root -p --lock-all-tables dbname | gzip -c > backup.sql.gz
Listing 4: Komplettes Backup aller Datenbanken plus Komprimierung mit GUNZIP (für ältere MySQL-Versionen)
mysqldump -u root -p --all-databases | gzip > backup.sql.gz
Listing 5: Komplettes Backup aller Datenbanken plus Komprimierung mit GUNZIP
mysqldump -u root -p --events --all-databases | gzip > backup.sql.gz
Erzeugung einer performateren Backup-Datei
Wichtig für das Einspielen einer Backup-Datei ist die Erzeugen einer korrekten und performanten Backup-Datei. Regelmäßig kommt es bei dem Einspielen von Backup-Dateien zu Fehlermeldung und Abbrüchen (siehe MySQL-Fehlermeldungen). Oft liegt die Ursache in der erzeugten Dump-Datei. In Listing 6, 7, 8 und 9 finden man Lösungsansätze zur Erzeugung von performanten Backup-Dateien.
Listing 6: Datenbankdump über alle Datenbanken ohne Komprimierung
mysqldump -u root -p --events --all-databases --ignore-table=mysql.innodb_index_stats --ignore-table=mysql.innodb_table_stats > dump.sql
Listing 7: Datenbankdump über alle Datenbanken mit Komprimierung
mysqldump -u root -p --events --all-databases --ignore-table=mysql.innodb_index_stats --ignore-table=mysql.innodb_table_stats | gzip > backup.sql.gz
Listing 8: Backup einer Datenbanken
mysqldump -u root -p --events dbname --ignore-table=mysql.innodb_index_stats --ignore-table=mysql.innodb_table_stats > backup.sql
Listing 9: Backup einer Datenbanken mit Komprimierung
mysqldump -u root -p --events dbname --ignore-table=mysql.innodb_index_stats --ignore-table=mysql.innodb_table_stats | gzip > backup.sql.gz