HOWTO · MySQL
Exportieren MySQL-Datenbank mit Mysqldump
Wir werden lernen, wie man eine MySQL-Datenbank mit dem Befehlszeilenprogramm mysqldump exportiert. Wir werden auch lernen, wie man Tabellen aus einer bestimmten Datenbank exportiert.
Auf dieser Seite
Verwenden Sie mysqldump, um eine MySQL-Datenbank in eine SQL-Datei zu exportieren. Fügen Sie Tabellennamen hinzu, um den Export einzuschränken. Für einen größeren Umfang verwenden Sie --databases oder --all-databases; mit --no-data exportieren Sie die Struktur ohne Datensätze. Die Beispiele erläutern die Befehlsargumente und die Passwortabfrage. Sie überprüfen nicht, ob sich ein Dump wiederherstellen lässt.
Eine MySQL-Datenbank mit mysqldump exportieren
mysqldump ist ein Befehlszeilenprogramm, mit dem sich MySQL-Datenbanken als SQL-Anweisungen exportieren lassen. Ein Dump kann Tabellendefinitionen und Daten, ausgewählte Tabellen, mehrere benannte Datenbanken, alle Datenbanken oder nur die Struktur einer Datenbank enthalten. Die folgenden Befehle schreiben den Dump in eine Datei. Sie überprüfen nicht, ob sich die erstellte Sicherung wiederherstellen lässt.
Syntax und Optionen von mysqldump verstehen
Ein typischer Befehl sieht so aus: mysqldump -u USER -p [OPTIONS] DATABASE [TABLE ...] > FILE.sql. Ersetzen Sie die Platzhalter in Großbuchstaben durch Ihr Benutzerkonto, den Datenbanknamen, optionale Tabellennamen und den Zielpfad. Der Datenbankname steht vor den Tabellennamen. Der Shell-Operator > leitet die Standardausgabe in die Zieldatei um und überschreibt sie, falls sie bereits vorhanden ist. Wählen Sie einen neuen Pfad oder verschieben Sie eine vorhandene Sicherung zuvor, wenn Sie diese behalten möchten.
Mit der Option -u geben Sie den Benutzernamen für MySQL an. Verwenden Sie -p allein, damit das Programm nach dem Passwort fragt. Geben Sie das Passwort nicht hinter -p ein, da es sonst im Verlauf der Shell oder in Prozessdetails sichtbar sein könnte. Die Option --no-data lässt Tabellenzeilen aus, --databases wählt benannte Datenbanken aus und --all-databases wählt alle Datenbanken aus. Weitere Optionen und Einzelheiten zu Ihrer installierten Version finden Sie in der MySQL-Referenz zu mysqldump.
Das eigenständige Shell-Beispiel wurde für diese Überarbeitung nicht ausgeführt. Der unveränderte Beispieltext darin bleibt Englisch. Entsprechend der Shell-Umleitung schreibt es Beispieltext in eine temporäre Datei und gibt diese Datei anschließend aus; es verbindet sich weder mit MySQL noch führt es mysqldump aus.
Der Code und die angezeigten Bezeichnungen oder Ausgaben in diesem Abschnitt bleiben auf Englisch.
work_dir="$(mktemp -d)"
trap 'rm -rf "$work_dir"' EXIT
printf '%s\n' 'CREATE TABLE customer (id INT);' > "$work_dir/person.sql"
cat "$work_dir/person.sql"
Eine Datenbank exportieren
Um eine einzelne Datenbank zu exportieren, führen Sie mysqldump -u root -p person > person_backup.sql aus. Geben Sie bei der Abfrage das Passwort für root ein. Der Dateiname ist relativ zum aktuellen Verzeichnis des Befehls. Verwenden Sie einen absoluten Pfad, zum Beispiel /backups/person_backup.sql, um ein bestimmtes Ziel festzulegen. Stellen Sie sicher, dass das Konto die Datenbank lesen kann und das Zielverzeichnis beschreibbar ist.
Ausgewählte Tabellen exportieren
Geben Sie zuerst den Datenbanknamen und danach die einzuschließenden Tabellen an. Für eine Tabelle verwenden Sie mysqldump -u root -p person customer > customer_table.sql. Für zwei Tabellen verwenden Sie mysqldump -u root -p person customer employee > customer_employee.sql. Standardmäßig exportieren diese Befehle Definitionen und Daten der ausgewählten Tabellen. Wenn Sie ein anderes Verhalten benötigen, ergänzen Sie passende Optionen, die für Ihre MySQL-Version dokumentiert sind.
Mehrere oder alle Datenbanken exportieren
Wenn Sie eine oder mehrere benannte Datenbanken exportieren, setzen Sie --databases vor die Datenbanknamen: mysqldump -u root -p --databases person courses > person_courses.sql. Diese Option nimmt Anweisungen zum Erstellen der Datenbanken in den Dump auf. Das erleichtert den Import der benannten Datenbanken.
Um alle für das Konto verfügbaren Datenbanken zu exportieren, verwenden Sie die korrekt geschriebene Option --all-databases: mysqldump -u root -p --all-databases > all_databases.sql. Die Berechtigungen des Kontos bestimmen, welche Datenbanken und Objekte einbezogen werden können. Speichern Sie die Ausgabe an einem geschützten Ort, da ein vollständiger Dump vertrauliche Daten enthalten kann.
Eine Datenbankstruktur ohne Daten exportieren
Verwenden Sie --no-data, um Tabellendefinitionen ohne ihre Datensätze zu exportieren: mysqldump -u root -p --no-data person > person_structure.sql. Das ist nützlich, wenn Sie eine Schemakopie für die Entwicklung oder Dokumentation benötigen. Der Befehl stellt weiterhin eine Verbindung zum MySQL-Server her und setzt geeignete Zugriffsrechte voraus. Er wandelt keine vorhandene Datei ohne Serververbindung um.
Fazit
Wählen Sie den Befehl passend zum gewünschten Umfang: Geben Sie für einen vollständigen Export den Datenbanknamen an, ergänzen Sie Tabellennamen, um bestimmte Tabellen auszuwählen, verwenden Sie --databases für benannte Datenbanken, --all-databases für alle Datenbanken des Servers oder --no-data für die Struktur ohne Datensätze. Geben Sie Passwörter an der Eingabeaufforderung ein und wählen Sie einen Speicherort, an dem der Dump sicher aufbewahrt wird. Ein erfolgreicher Befehl erstellt eine Dump-Datei. Bevor Sie sich darauf als Sicherung verlassen, sollten Sie die Wiederherstellung separat testen.