Als eine der führenden frei verfügbaren Datenbanken ist MySQL eine beliebte Wahl für viele Webanwendungen. Da Ihre App dem Internet ausgesetzt ist, ist sie böswilligen Angriffen ausgesetzt. Wenn Ihr Server kompromittiert ist, müssen Sie die Anwendung bestenfalls neu installieren. im schlimmsten Fall können Sie Ihre Daten verlieren. Außerdem kann es vorkommen, dass Sie eine Datenbank von einem Server auf einen anderen migrieren müssen.
Wofür wird mysqldump verwendet?
Das mysqldump-Tool deckt Sie sowohl bei Serverkompromittierungen als auch bei Migrationssituationen ab. Seine grundlegende Funktion besteht darin, eine MySQL-Datenbank zu nehmen und sie als Textdatei auszugeben. Aber keine Textdatei; Die Datei besteht aus einer Reihe von SQL-Anweisungen. Wenn diese Anweisungen ausgeführt werden, rekonstruieren sie die Datenbank genau in dem Zustand, in dem sie sich befand, als der Speicherauszug ausgeführt wurde.
Verwenden Sie mysqldump, um Exporte einer Datenbank als Backups zu erstellen oder wenn Sie die Datenbank auf einen neuen Host verschieben. In beiden Fällen wird die Textdatei wieder in einen MySQL-Datenbankserver importiert. Es führt alle SQL-Anweisungen in der Datei aus, wodurch die Datenbank in ihrem ursprünglichen Zustand wiederhergestellt wird. Dieser Teil verwendet den mysqldump-Befehl nicht, aber es wäre ohne dieses Dienstprogramm auch nicht möglich.
Die MySQL-Dokumentation listet andere Methoden zum Erstellen von Backups auf, aber diese haben Nachteile:
- Hotcopy einer Datenbank von MySQL Enterprise ist eine großartige Möglichkeit, um diese Backups zu erstellen - wenn Ihnen der Enterprise-Preis nichts ausmacht.
- Das Kopieren der Datenbankdatenverzeichnisse kann beim Wechseln zwischen Betriebssystemen schwierig sein, da die Ziele unterschiedlich sind.
- Der Export in eine Textdatei mit Trennzeichen liefert Ihnen den Inh alt, aber Sie müssen die Struktur neu erstellen.
- Sie können häufig Datenbanken von GUI-Programmen wie MySQL Workbench sichern. Aber das ist ein manueller Prozess; nicht etwas, das Sie skripten oder in einen Batch-Job einfügen können.
Installieren Sie das mysqldump-Tool
Für Windows lesen Sie unsere Anweisungen zur Installation von MySQL unter Windows 7 (der Installationsprozess ist derselbe für Windows 10). Unter macOS lesen Sie unsere Anweisungen zur Installation von MySQL unter macOS 10.7 (wiederum älter, aber immer noch anwendbar). Benutzer von Ubuntu-basierten Linux-Systemen können den folgenden Befehl verwenden, um den MySQL-Client und die Dienstprogramme zu installieren:
sudo apt install mysql-client
MySQL-Dump extrahieren
Verwenden Sie nach der Installation mysqldump, um eine vollständige Sicherung einer Datenbank zu erh alten.
mysqldump -h [Name oder IP Ihres DB-Hosts] -u [Name des DB-Benutzers] -p [Name der Datenbank] > db_backup.sql
Hier ist eine Beschreibung der in diesem Befehl verwendeten Flags:
- - h: Dieses Flag ist der Datenbankhost. Dies kann ein vollständiger Hostname (z. B. myhost.domain.com) oder eine IP-Adresse sein. Lassen Sie dieses Feld leer, wenn Sie den Befehl auf demselben Host wie den MySQL-Server ausführen.
- - u: Ihr Benutzername.
- - p: Wenn Sie die MySQL-Installation ordnungsgemäß gesichert haben, benötigen Sie ein Passwort, um sich zu verbinden. Dieses Flag ohne Argument fordert Sie zur Eingabe eines Kennworts auf, wenn Sie den Befehl ausführen. Manchmal ist es sinnvoll, das Passwort direkt als Argument für dieses Flag anzugeben, beispielsweise in einem Backup-Skript. Aber an der Eingabeaufforderung sollten Sie das nicht tun, denn wenn jemand Zugriff auf Ihren Computer erlangt hat, könnte er dieses Passwort im Befehlsverlauf finden.
- > db_backup.sql: Dieser Teil weist mysqldump an, seine Ausgabe in eine Datei umzuleiten. Normalerweise gibt der Befehl alles an die Konsole aus, was bedeutet, dass Sie mehrere SQL-Anweisungen auf dem Bildschirm sehen. Das Symbol > leitet die Ausgabe in die benannte Textdatei. Wenn diese Datei nicht existiert, wird sie automatisch erstellt.
Wenn es fertig ist, haben Sie eine. SQL-Datei. Dies ist eine Textdatei mit SQL-Anweisungen. Sie können es in einem beliebigen Texteditor öffnen, um den Inh alt zu überprüfen. Hier ist ein Export aus einer WordPress-Datenbank, der zeigt, wie diese Dateien zusammengesetzt sind.
Die Datei ist in Abschnitte unterteilt. Der erste Abschnitt richtet die Tabelle für WordPress-Kommentare ein. Der zweite Abschnitt erstellt den Inh alt in diesen Tabellen neu (in diesem Beispiel die Kommentardatensätze). Wenn Sie den MySQL-Dump erneut importieren, arbeitet sich der Befehl durch die Datei, führt die Anweisungen aus und baut die Datenbank wieder so auf, wie sie war.
MySQL-Dump-Datei importieren
Bevor Sie die Dump-Datei importieren, benötigen Sie eine bereits erstellte Datenbank und deren gültigen Benutzernamen und Passwort. Sie sollten auch alle Berechtigungen für die Datenbank haben. Sie brauchen die GRANT-Berechtigung nicht, aber es ist einfacher, sie alle zu erteilen.
Erfahren Sie mehr über Datenbankberechtigungen, bevor Sie die Sicherheitsrollen in Ihrer Datenbank ändern.
Um Ihre Daten erneut zu importieren, melden Sie sich mit dem Befehl mysql beim MySQL-Server an. Geben Sie an der Eingabeaufforderung use [database name] ein und ersetzen Sie den Namen der Datenbank. Geben Sie source [Dateiname] ein und ersetzen Sie den Namen der zuvor erstellten Dump-Datei.
Wenn Sie fertig sind, erscheint eine Liste mit Meldungen, die darauf hinweisen, dass SQL-Anweisungen ausgeführt werden. Achten Sie auf Fehler, aber wenn Sie die richtigen Berechtigungen haben, sollte alles in Ordnung sein.
Wenn der Vorgang abgeschlossen ist, haben Sie ein Duplikat der ursprünglichen Datenbank. Um die Ähnlichkeit zwischen den Datenbanken zu überprüfen, führen Sie einen weiteren Dump durch und vergleichen Sie dann die beiden Ausgaben. Verwenden Sie einen Texteditor oder ein spezielles Diff-Tool, um die beiden Dateien zu vergleichen.
Es gibt zwei Unterschiede zwischen diesen Dateien, die durch rote Linien am oberen und unteren Rand der rechten Bildlaufleiste dargestellt werden. Die erste ist die Zeile, die den Datenbanknamen enthält, und diese ist anders, weil die Dateien anders benannt wurden. Der zweite ist der Zeitstempel für die Dump-Datei. Dies ist anders, da die zweite Datenbank nach der ersten neu erstellt wurde. Ansonsten sind die Dateien genau gleich, dh die Datenbanken, die sie generiert haben, sind es auch.
FAQ
Wie beheben Sie den mysqldump-Fehler: Zugriff verweigert bei Verwendung von Sperrtabellen?
Bitten Sie Ihren Datenbankadministrator, Ihnen das LOCK-Privileg zu erteilen. Wenn das Problem dadurch nicht behoben wird, versuchen Sie, denselben mysqldump-Befehl auszuführen, indem Sie das Flag - -single-transaction hinzufügen, wie z. B. [ $ mysqldump --single-transaction] [-u Benutzer] [-p DBNAME] > backup.sql
Können Sie eine "where"-Klausel mit mysqldump verwenden?
Verwenden Sie eine WHERE-Klausel, wenn Sie eine Sicherung erstellen, die nur die Zeilen enthält, die die angegebene Bedingung erfüllen. Um beispielsweise nur Daten aus Zeilen mit einer ID-Sp alte größer als 100 zu sichern, geben Sie "mysqldump my_db_name my_table_name --where="id > 100" > my_backup.sql" ein.