Möchte man ein Backup der gespeicherten Datensätze einer MySQL Datenbank exportieren, so genügt das Tool mysqldump, welches der Installation von mysql-server unter Linux beiliegt.
Zum Exportieren werden nur einzelne Befehle benötigt. Die wichtigsten Szenarien sind nachfolgend beschrieben. Dabei muss der angegebene MySQL-Benutzer natürlich die Rechte besitzen, die gewünschten Datenbanken zu lesen. In den Beispielen wird hierzu der MySQL-Benutzer root verwendet, welcher u.a. Leserechte auf alle Datenbanken besitzt.
mysqldump -u root -p DATENBANKNAME > /home/username/mysql_backup/datenbankname.sql
Der Parameter ‚-p‘ gibt hier an, dass die Passwortabfrage nachfolgend erfolgen soll. Besitzt der Anwender root also ein Passwort (hoffentlich!), dann muss dieses anschließend eingegeben werden, bevor die Daten exportiert werden können. Es ist ebenfalls möglich, dass Passwort als Parameter direkt anzugeben. Dies sollte aus Sicherheitsgründen wohl eher nicht erfolgen, aber der Vollständigkeit halber sollte es hier erwähnt sein. Dabei ist es wichtig, kein Leerzeichen nach dem ‚-p‘ anzugeben, also wie folgt:
mysqldump -u root -pPASSWORT DATENBANKNAME > /home/username/mysql_backup/datenbankname.sql
Statt ‚DATENBANKNAME‘ muss selbstverständlich die zu exportierende Datenbank angegeben werden. Anschließend erfolgt die Angabe des Pfades, unter welchem die Export-Datei gespeichert werden soll. Diese Datei besteht aus (sehr) vielen SQL-Befehlen, welche die exportierten Daten enthalten und wieder in eine MySQL-Datenbank importieren können.
Um die Daten wieder zu importieren, genügt folgender Befehl:
mysql -u root -p DATENBANKNAME < /home/username/mysql_backup/datenbankname.sql
Der Befehl ist dem Export über mysqldump sehr ähnlich. Er führt die angegebene SQL-Datei aus und schreibt die Daten zurück in die angebene Datenbank. Wichtig hierbei ist, dass die angegebene Datenbank bereits existiert, andernfalls wird der Befehl mit einem Fehler quittiert.
Es ist ebenfalls möglich, alle Datenbanken auf einmal zu sichern:
mysqldump -u root -p --all-databases > /home/username/mysql_backup/mysql_backup.sql
Hinweis: Die Datenbank sollte während des Exportvorgangs nicht geändert werden, da es hier zu Problemen kommen kann. Idealerweise werden die Anwendungen für die Dauer des Exports gestoppt.
Ansonsten kann die zu exportierende Datenbank auch für Schreibzugriffe gesperrt werden, sodass eine Anwendung durchaus noch lesend darauf zugreifen kann.
Hilfreiche Parameter für Exporte mit laufenden Datenbanken sind:
--single-transaction # Exportiert die Daten in einer einzigen Transaktion (nur für InnoDB-Tabellen) --lock-tables #sperrt alle Tabellen
Weitere Informationen zu mysqldump findet man in der offiziellen Dokumentation unter https://dev.mysql.com/doc/refman/8.0/en/mysqldump.html.