Wie erstellt man ein Backup und stellt eine MySQL-Datenbank wieder her
Wenn Sie Daten in einer MySQL-Datenbank speichern und diese nicht verlieren möchten, sollten Sie regelmäßig Backups erstellen. Dieser Artikel zeigt Ihnen, wie Sie schnell über die Konsole Backups erstellen und diese in einer MySQL-Datenbank wiederherstellen können. Außerdem können Sie Daten auf einen anderen Server übertragen.
- Wie man ein Backup über die Kommandozeile erstellt (mit mysqldump)
- Wie man ein MySQL-Datenbank-Backup mit Kompression erstellt
- Wie man eine MySQL-Datenbank aus einem Backup wiederherstellt
- Backup und Wiederherstellung mit Adminer
Wie man ein Backup über die Kommandozeile erstellt (mit mysqldump)
Wenn Sie Zugriff auf den Server via Konsole (SSH) haben, können Sie schnell Backups erstellen und diese wiederherstellen. Das ermöglicht die schnelle Erstellung eines Datenbank-Dumps (ein Dump ist eine Textversion der DB) und die Rücksicherung, schneller als mit phpMyAdmin, Adminer usw. Der Datenbank-Dump besteht aus SQL-Befehlen zum Erstellen einer Kopie Ihrer Datenbank. Hier der Befehl zum Erstellen des Dumps:
$ mysqldump --opt -u [Benutzername] -p[Passwort] [Datenbankname] > [backupfile.sql]
[Benutzername] – DB-Benutzername (z.B. root)
[Passwort] – Passwort des Benutzers, kann direkt ohne Leerzeichen geschrieben werden, z.B. -proot, -ppassword
[Datenbankname] – Name Ihrer DB
[backupfile.sql] – Name der Datei, in der das Backup gespeichert wird
[--opt] – Option für mysqldump, kann weggelassen werden
Angenommen, Sie haben eine Drupal-Datenbank, der Benutzer heißt root mit Passwort password und die Datei soll backup.sql heißen, dann lautet der Befehl:
$ mysqldump -u root -ppassword DrupalDB > backup.sql
Wenn Sie das Passwort weglassen oder es Sonderzeichen oder Leerzeichen enthält, müssen Sie das Passwort separat eingeben, dann lautet der Befehl:
$ mysqldump -u root -p DrupalDB > backup.sql
Sie können auch einzelne Tabellen sichern, indem Sie sie mit Leerzeichen trennen, z.B. nodes users:
$ mysqldump -u root -p DrupalDB nodes users > backup.sql
Darüber hinaus können Sie mehrere Datenbanken sichern, indem Sie den Parameter --databases verwenden und die DB-Namen mit Leerzeichen trennen:
$ mysqldump -u root -p --databases DrupalDB Drupal7 Drupal8 > backup.sql
Wenn Sie den MySQL-Server komplett übertragen wollen, kopieren Sie alle Daten mit --all-databases:
$ mysqldump -u root -p --all-databases > alldb_backup.sql
Wichtige Parameter von mysqldump:
--add-drop-table – fügt vor CREATE TABLE SQL-Befehle zum Löschen (DROP TABLE) der Tabellen ein.
--no-data – sichert nur die Struktur ohne Daten, z.B. für Cache-Tabellen mit tausenden nicht benötigten Einträgen.
--add-lock – fügt LOCK TABLES und UNLOCK TABLES ein. Bei großen Datenbanken kann das zu längeren Sperrzeiten führen.
Wie man ein MySQL-Datenbank-Backup mit Kompression erstellt
Die beste Methode, da Backups so um das 10- bis 20-fache komprimiert werden und große Datenbanken kleinere Dateien erzeugen. Wir nutzen gzip:
$ mysqldump -u root -p DrupalDB | gzip -9 > backup.sql.gz
Zum Entpacken der Datei (nur entpacken, nicht die DB wiederherstellen) verwenden Sie:
$ gunzip backup.sql.gz
Wie man eine MySQL-Datenbank aus einem Backup wiederherstellt
Für die Wiederherstellung brauchen Sie eine leere Datenbank. Sie können Tabellen mit Adminer oder phpMyAdmin löschen. Wenn Sie --add-drop-table verwendet haben, werden Tabellen automatisch gelöscht, bevor sie wiederhergestellt werden, dann ist kein manuelles Löschen nötig. Befehl zum Wiederherstellen aus einem Dump:
$ mysql -u root -p DrupalDB < backup.sql
Für ein komprimiertes Backup verwenden Sie:
gunzip < backup.sql.gz | mysql -u root -p DrupalDB
Backup und Wiederherstellung mit Adminer (Alternative zu PhpMyAdmin)
Adminer ist eine Alternative zu PhpMyAdmin mit vergleichbarem Funktionsumfang, aber als eine einzelne kleine Datei sehr praktisch:
Kopieren Sie die Datei in das Root-Verzeichnis Ihrer Website und rufen Sie sie im Browser auf:
http://IhrWebseitenName/adminer-4.2.1.php (Sie können sie zur Vereinfachung in adminer.php umbenennen):
Loggen Sie sich ein und wählen Sie die gewünschte Datenbank, z.B. Drupal7.
Klicken Sie auf Export (Dump), um die Daten zu exportieren. Sie können z.B. Cache-Daten vom Export ausschließen:
Zum Hochladen des Dumps verwenden Sie den Tab Import: