MySQL und MariaDB enthalten das Dienstprogramm mysqldump, um den Vorgang zum Erstellen eines Backups einer Datenbank oder eines Systems von Datenbanken zu vereinfachen. Verwenden von mysqldump
erstellt ein logisches Backup . Sie können dieses Tool nur verwenden, wenn Ihr Datenbankprozess zugänglich ist und ausgeführt wird.
Wenn auf Ihre Datenbank aus irgendeinem Grund nicht zugegriffen werden kann, können Sie stattdessen eine physische Sicherung erstellen , die eine Kopie der Dateisystemstruktur ist, die Ihre Daten enthält.
Die Anweisungen in diesem Handbuch gelten sowohl für MySQL als auch für MariaDB. Der Einfachheit halber wird für beides der Name MySQL verwendet.
Bevor Sie beginnen
-
Sie benötigen eine funktionierende MySQL- oder MariaDB-Installation und einen Datenbankbenutzer, um die Sicherung auszuführen. Hilfe bei der Installation finden Sie in der Linode MySQL-Dokumentation.
-
Sie benötigen Root-Zugriff auf das System oder ein Benutzerkonto mit
sudo
Privilegien.
Eine Datenbank sichern
Der mysqldump
Die allgemeine Syntax des Befehls lautet:
mysqldump -u [username] -p [databaseName] > [filename]-$(date +%F).sql
mysqldump
fordert zur Eingabe eines Passworts auf, bevor der Sicherungsvorgang gestartet wird.- Abhängig von der Größe der Datenbank kann es eine Weile dauern, bis der Vorgang abgeschlossen ist.
- Die Datenbanksicherung wird in dem Verzeichnis erstellt, in dem der Befehl ausgeführt wird.
-$(date +%F)
fügt dem Dateinamen einen Zeitstempel hinzu.
Beispiele für Anwendungsfälle sind:
-
Erstellen Sie ein Backup eines gesamten Datenbankmanagementsystems (DBMS):
mysqldump --all-databases --single-transaction --quick --lock-tables=false > full-backup-$(date +%F).sql -u root -p
-
Sichern Sie eine bestimmte Datenbank. Ersetzen Sie
db1
mit dem Namen der Datenbank, die Sie sichern möchten:mysqldump -u username -p db1 --single-transaction --quick --lock-tables=false > db1-backup-$(date +%F).sql
-
Sichern Sie eine einzelne Tabelle aus einer beliebigen Datenbank. Im folgenden Beispiel
table1
wird aus der Datenbankdb1
exportiert :mysqldump -u username -p --single-transaction --quick --lock-tables=false db1 table1 > db1-table1-$(date +%F).sql
Hier ist eine Aufschlüsselung von mysqldump
oben verwendete Befehlsoptionen:
--single-transaction
:Setzen Sie eine BEGIN-SQL-Anweisung ab, bevor Sie Daten vom Server ausgeben.--quick
:Erzwingen Sie das Dumping von Tabellen Zeile für Zeile. Dies bietet zusätzliche Sicherheit für Systeme mit wenig RAM und/oder großen Datenbanken, bei denen das Speichern von Tabellen im Arbeitsspeicher problematisch werden könnte.--lock-tables=false
:Tabellen für die Sicherungssitzung nicht sperren.
Automatisieren Sie Backups mit Cron
Einträge können zu /etc/crontab
hinzugefügt werden um regelmäßige Datenbanksicherungen zu planen.
-
Erstellen Sie eine Datei mit den Anmeldeinformationen des MySQL-Root-Benutzers, der die Sicherung durchführt. Beachten Sie, dass der Systembenutzer, in dessen Home-Verzeichnis diese Datei gespeichert ist, mit keinem MySQL-Benutzer verwandt sein kann.
- Datei:/ home/example_user/.mylogin.cnf
1 2 3
[client] user = root password = MySQL root user's password
-
Beschränken Sie die Berechtigungen der Datei mit den Anmeldeinformationen:
chmod 600 /home/example_user/.mylogin.cnf
-
Erstellen Sie die Cronjob-Datei. Unten ist ein Beispiel für einen Cron-Job, um das gesamte Datenbankverwaltungssystem jeden Tag um 1 Uhr morgens zu sichern:
- Datei:/ etc/cron.daily/mysqldump
1
0 1 * * * /usr/bin/mysqldump --defaults-extra-file=/home/example_user/.my.cnf -u root --single-transaction --quick --lock-tables=false --all-databases > full-backup-$(date +\%F).sql
Weitere Informationen zu cron finden Sie auf den Handbuchseiten zu cron(8) und cron(5).
Ein Backup wiederherstellen
Die allgemeine Syntax des Wiederherstellungsbefehls lautet:
mysql -u [username] -p [databaseName] < [filename].sql
-
Stellen Sie eine vollständige DBMS-Sicherung wieder her. Sie werden nach dem Passwort des MySQL-Root-Benutzers gefragt:
Dadurch werden alle aktuellen Daten im MySQL-Datenbanksystem überschriebenmysql -u root -p < full-backup.sql
-
Stellen Sie einen einzelnen Datenbank-Dump wieder her. Es muss bereits eine leere oder alte Zieldatenbank vorhanden sein, in die die Daten importiert werden können, und der MySQL-Benutzer, unter dem Sie den Befehl ausführen, muss Schreibzugriff auf diese Datenbank haben:
mysql -u [username] -p db1 < db1-backup.sql
-
Wenn Sie eine einzelne Tabelle wiederherstellen, müssen Sie eine Zieldatenbank haben, die bereit ist, die Daten zu empfangen:
mysql -u dbadmin -p db1 < db1-table1.sql
Weitere Informationen
Weitere Informationen zu diesem Thema finden Sie in den folgenden Ressourcen. Obwohl diese in der Hoffnung bereitgestellt werden, dass sie nützlich sind, beachten Sie bitte, dass wir nicht für die Genauigkeit oder Aktualität extern gehosteter Materialien garantieren können.
- Seite „MySQL-Datenbanksicherungsmethoden“
- mysqldump - Ein Datenbanksicherungsprogramm, MySQL-Referenzhandbuch