1. Einführung
MySQL ist eines der am weitesten verbreiteten relationalen Datenbankmanagementsysteme (RDBMS) für Webdienste und Unternehmensanwendungen. Mit MySQL erstellte Datenbanken bilden oft das Kernstück des täglichen Betriebs und der Dienste. Wenn Daten aufgrund von Systemausfällen oder menschlichen Fehlern verloren gehen, kann das erhebliche Auswirkungen auf die Geschäftskontinuität haben.
Dies ist der Punkt, an dem „Backups“ entscheidend werden. MySQL stellt ein offizielles Befehlszeilen‑Tool namens „mysqldump“ bereit, mit dem Sie Datenbankinhalte einfach exportieren und als Sicherungsdateien speichern können.
Durch die Nutzung dieses Tools können Sie verschiedene betriebliche Anforderungen wie Disaster Recovery, Migration in eine andere Umgebung und periodische Archivierung erfüllen.
In diesem Artikel erklären wir, wie MySQL‑Datenbanken mit „mysqldump“ exportiert werden, von der Grundnutzung bis zu erweiterten Konfigurationen. Auch Anfänger können folgen, da wir detaillierte Erklärungen mit praktischen Befehlsbeispielen liefern.
2. Grundlegende Verwendung von mysqldump
mysqldump ist ein Befehlszeilen‑Tool zum Exportieren des Inhalts einer MySQL‑Datenbank in eine SQL‑Datei. Die Grundsyntax ist sehr einfach, und Backups können mit nur wenigen Befehlszeilen erstellt werden. In diesem Abschnitt erläutern wir häufig verwendete Exportmethoden.
Export einer einzelnen Datenbank
Der häufigste Anwendungsfall ist das Exportieren einer gesamten einzelnen Datenbank.
mysqldump -u username -p database_name > backup.sql
Nach der Ausführung werden Sie zur Eingabe des Passworts aufgefordert, und der Inhalt der angegebenen Datenbank wird in eine Datei namens backup.sql ausgegeben.
Export mehrerer Datenbanken
Wenn Sie mehrere Datenbanken auf einmal sichern möchten, verwenden Sie die Option --databases.
mysqldump -u username -p --databases db1 db2 db3 > multi_backup.sql
In diesem Format wird für jede Datenbank eine CREATE DATABASE‑Anweisung eingefügt, was die Wiederherstellung zuverlässiger und bequemer macht.
Export aller Datenbanken
Um alle Datenbanken auf dem Server zu sichern, verwenden Sie die Option --all-databases.
mysqldump -u username -p --all-databases > all_backup.sql
Dieser Befehl exportiert alle auf dem MySQL‑Server vorhandenen Datenbanken (einschließlich mysql, information_schema, performance_schema und anderer).
Beispiel: Datum im Ausgabedateinamen einbinden
Für geplante Backups erleichtert das Einbinden des Datums im Ausgabedateinamen die Verwaltung. Nachfolgend ein Beispiel mit einer UNIX‑Shell:
mysqldump -u username -p database_name > backup_$(date +%F).sql
Mit diesem Ansatz wird automatisch eine Datei wie backup_2025-04-13.sql erzeugt, wodurch die Backup‑Verwaltung übersichtlicher wird.
3. Exportvarianten
mysqldump kann mehr als nur eine gesamte Datenbank exportieren. Es unterstützt auch flexible Exportoptionen je nach Bedarf. In diesem Abschnitt stellen wir fortgeschrittene Techniken vor, wie das Exportieren bestimmter Tabellen, das Exportieren nur des Schemas oder nur der Daten sowie das Exportieren gefilterter Daten mittels Bedingungen.
Export bestimmter Tabellen
Wenn Sie nur bestimmte Tabellen einer Datenbank sichern möchten, können Sie die Tabellennamen explizit angeben.
mysqldump -u username -p database_name table1 table2 > selected_tables.sql
Beispiel:
mysqldump -u root -p mydb users orders > users_orders.sql
Dieser Befehl exportiert nur die Tabellen users und orders aus der Datenbank mydb.
Export nur von Daten oder nur des Schemas
mysqldump bietet Optionen, um nur Schema‑Definitionen oder nur Daten zu exportieren.
Nur Schema (Struktur) exportieren:
mysqldump -u username -p --no-data database_name > schema_only.sqlNur Daten exportieren (CREATE TABLE‑Anweisungen ausschließen):
mysqldump -u username -p --no-create-info database_name > data_only.sql
Diese Optionen sind nützlich, wenn nur das Schema zwischen Entwicklungs‑ und Produktionsumgebungen ausgetauscht werden soll oder beim Import von inkrementellen Daten.
Export von Daten mit Bedingungen (–where)
Um nur einen Teil der Daten zu exportieren, verwenden Sie die Option --where. Sie verwendet dieselbe Syntax wie eine SQL‑WHERE‑Klausel.
mysqldump -u username -p database_name table_name --where="condition" > filtered_data.sql
Beispiel:
mysqldump -u root -p mydb users --where="created_at >= '2025-01-01'" > users_2025.sql
In diesem Beispiel werden nur Datensätze, die ab dem Jahr 2025 in der Tabelle users erstellt wurden, exportiert.
4. Häufig verwendete Optionen und ihre Erklärungen
Obwohl mysqldump einfach ist, ermöglicht die Kombination von Optionen sicherere und effizientere Backups. In diesem Abschnitt erklären wir häufig genutzte Optionen in praktischen Umgebungen.
–single-transaction: Transaktionskonsistenz wahren
mysqldump -u username -p --single-transaction database_name > backup.sql
Diese Option ist wirksam, wenn transaktionsunterstützte Speicher‑Engines wie InnoDB verwendet werden. Sie führt den Dump‑Vorgang innerhalb einer einzigen Transaktion aus und gewährleistet so Konsistenz beim Export, ohne Lesesperren zu setzen. Das ist besonders nützlich, wenn Dienste während des Backups weiterlaufen müssen.
Hinweis: Diese Option hat keine Wirkung auf nicht‑transaktionale Engines wie MyISAM.
–quick: Speicherverbrauch reduzieren
mysqldump -u username -p --quick database_name > backup.sql
Mit dieser Option ruft mysqldump Zeilen einzeln ab, anstatt alle Daten auf einmal in den Speicher zu laden. Das reduziert den Speicherverbrauch und erhöht die Stabilität beim Export großer Tabellen.
–routines und –events: Stored Procedures und Events einbinden
Standardmäßig werden Stored Procedures und Events nicht in Exporte einbezogen. Verwenden Sie die folgenden Optionen, um sie einzuschließen:
mysqldump -u username -p --routines --events database_name > backup_with_logic.sql
--routines: Stored Procedures und Funktionen einbeziehen--events: Geplante Events einbeziehen
Wenn die Geschäftslogik stark auf Datenbankebene implementiert ist, vergessen Sie diese Optionen nicht.
–add-drop-table: Nützlich zum Überschreiben von Tabellen
mysqldump -u username -p --add-drop-table database_name > backup.sql
Diese Option fügt vor jeder Tabellendefinition eine DROP TABLE IF EXISTS‑Anweisung ein. Existieren bereits Tabellen mit demselben Namen in der Zielumgebung, werden sie vor dem Neuerstellen gelöscht.
–lock-tables: Wirksam für MyISAM
mysqldump -u username -p --lock-tables database_name > backup.sql
Obwohl sie für InnoDB normalerweise nicht nötig ist, sperrt diese Option bei Verwendung von MyISAM Tabellen, um Schreibvorgänge während des Exports zu verhindern. Sie ist nützlich, wenn Konsistenz entscheidend ist.

5. Wie man eine Exportdatei importiert
Mit mysqldump exportierte SQL‑Dateien können mit den üblichen Importmethoden von MySQL wiederhergestellt (importiert) werden. In diesem Abschnitt erklären wir die Grundlagen des Imports aus einer Sicherungsdatei, praktische Wiederherstellungsbeispiele und wichtige Vorsichtsmaßnahmen.
Grundlegender Importbefehl
Eine exportierte SQL‑Datei kann einfach mit dem Befehl mysql importiert werden. Die grundlegende Syntax lautet:
mysql -u username -p database_name < backup.sql
Beispiel:
mysql -u root -p mydb < backup.sql
Wenn Sie diesen Befehl ausführen, werden die in backup.sql enthaltenen SQL‑Anweisungen nacheinander ausgeführt und die Datenbank in ihren ursprünglichen Zustand zurückversetzt.
Import in eine neue Datenbank
Da eine Sicherungsdatei möglicherweise keine CREATE DATABASE‑Anweisung enthält, müssen Sie, wenn Sie in eine Datenbank mit einem anderen Namen importieren möchten, die neue Datenbank vorher erstellen.
Beispiel: Neue Datenbank „mydb_restore“ erstellen und importieren
CREATE DATABASE mydb_restore;
mysql -u root -p mydb_restore < backup.sql
Hinweis: Mit der Option --databases exportiertes SQL enthält CREATE DATABASE‑Anweisungen, sodass das Vorgehen in diesem Fall anders ist.
Import einer komprimierten Datei (.gz)
Wenn Ihre Sicherungsdatei mit gzip oder Ähnlichem komprimiert ist, können Sie sie beim Import direkt dekomprimieren:
gunzip < backup.sql.gz | mysql -u username -p database_name
Diese Methode ermöglicht es Ihnen, schnell wiederherzustellen und dabei Speicherplatz zu sparen.
Häufige Importfehler und wie man sie behebt
| Error | Cause | Solution |
|---|---|---|
ERROR 1049 (42000): Unknown database | The target database does not exist | Create it in advance with CREATE DATABASE |
Access denied | Insufficient permissions or incorrect credentials | Recheck the username, password, and privileges |
ERROR 1064 (42000): You have an error in your SQL syntax | SQL format incompatibility between versions | Verify the dump matches the MySQL version you are using |
Zusammenfassung: Import als Teil des Backup-Prozesses
Eine mit mysqldump erstellte Sicherungsdatei ist nicht wertvoll, wenn Sie sie nur erzeugen. Der eigentliche Wert einer Sicherung liegt darin, sicherzustellen, dass Sie sie bei Bedarf wiederherstellen können. Aus diesem Grund wird empfohlen, Importe regelmäßig zu testen und zu bestätigen, dass die Datei korrekt geladen wird.
6. Praktische Tipps und Vorsichtsmaßnahmen
Obwohl mysqldump einfach zu benutzen ist, erfordern große Datenbanken und Produktionsumgebungen manchmal einen sorgfältigen Betrieb und zusätzliche Strategien. In diesem Abschnitt stellen wir nützliche praktische Techniken und Vorsichtsmaßnahmen vor, um Probleme zu verhindern.
Große Datenbanken mit gzip komprimieren
Da mysqldump reine Text‑SQL‑Dateien ausgibt, können diese sehr groß werden. Für große Datenbanken, die mehrere Gigabyte überschreiten, ist es üblich, mysqldump mit gzip zu kombinieren, um die Ausgabe zu komprimieren.
mysqldump -u username -p database_name | gzip > backup.sql.gz
Diese Methode kann den Speicherverbrauch erheblich reduzieren und verringert zudem die Belastung bei Remote‑Übertragungen.
Export‑ und Import‑Verifizierung zur Gewohnheit machen
Eine Sicherung ist nutzlos, wenn Sie sie bei Bedarf nicht importieren können. Wir empfehlen folgende Vorgehensweisen:
- Regelmäßig Backups in einer separaten Umgebung wiederherstellen, um sie zu testen
- Dateiintegrität mit md5sum oder sha256sum überprüfen
- Mehrere Backup‑Generationen behalten für kritische Datenbanken
Auf Versionsunterschiede achten
Wenn die MySQL‑Version zwischen der Export‑Quelle und dem Import‑Ziel unterschiedlich ist, können Unterschiede in Syntax und internem Verhalten verhindern, dass die SQL‑Datei korrekt ausgeführt wird.
- Wenn möglich, auf derselben Version arbeiten
- Wenn Sie Versionen übergreifend arbeiten müssen, das Verhalten mit Optionen steuern (z. B.
--set-gtid-purged=OFF) - Vor und nach Upgrades stets die Kompatibilität der Schemadefinition bestätigen
Cron und Skripte für die Automatisierung verwenden
Wenn Sie automatische tägliche oder wöchentliche Backups ausführen möchten, macht die Verwendung von Shell‑Skripten und Cron die Verwaltung effizient.
#!/bin/bash
DATE=$(date +%F)
mysqldump -u root -p[password] mydb | gzip > /backup/mydb_$DATE.sql.gz
Indem Sie ein solches Skript unter /etc/cron.daily/ ablegen, können Sie Backups automatisch jeden Tag sammeln.
Hinweis: Aus Sicherheitsgründen sollten Passwörter nicht direkt geschrieben werden. Es wird empfohlen, sie sicher mit einer
.my.cnf‑Datei zu verwalten.
Sicherheit ebenfalls berücksichtigen
Backup‑Dateien können sensible Informationen enthalten. Implementieren Sie die folgenden Maßnahmen:
- Setzen Sie geeignete Zugriffsbeschränkungen am Speicherort
- Backups für Speicherung und Übertragung verschlüsseln (z. B. mit GPG oder SFTP)
- Beim Speichern in der Cloud sollten Sie automatische Backup‑Einstellungen und Lebenszyklus‑Management berücksichtigen
7. Häufig gestellte Fragen (FAQ)
In diesem Abschnitt fassen wir häufige Fragen und häufig auftretende Probleme bei der Verwendung von mysqldump im Frage‑Antwort‑Format zusammen.
F1. Warum erhalte ich beim Export einen „Access denied“-Fehler?
A. Der angegebene MySQL‑Benutzer hat möglicherweise nicht die erforderlichen Rechte wie „SELECT“ oder „LOCK TABLES“ für die Zieldatenbank. Überprüfen Sie die notwendigen Berechtigungen und bitten Sie Ihren Administrator, sie bei Bedarf zu gewähren. Wenn das Sperren von Tabellen fehlschlägt, kann die Verwendung der Option --single-transaction in einigen Fällen helfen.
F2. Die Größe der Sicherungsdatei ist extrem groß. Gibt es eine Möglichkeit, sie zu reduzieren?
A. Wenn Sie große Tabellen oder ein hohes Datenvolumen haben, kann die SQL‑Datei Gigabyte‑Größe erreichen. Sie können die Größe mit den folgenden Methoden reduzieren:
- Mit
gzipkomprimieren (Beispiel:mysqldump ... | gzip > backup.sql.gz) --no-dataoder--no-create-infoverwenden, um nur das zu exportieren, was Sie benötigen- Die Option
--wherenutzen, um exportierte Daten zu filtern (z. B. bestimmte Datumsbereiche)
F3. Wie kann ich nur bestimmte Tabellen exportieren?
A. Listen Sie die Tabellennamen am Ende des Befehls auf, um nur ausgewählte Tabellen zu exportieren.
mysqldump -u root -p mydb users orders > selected.sql
Dies ist praktisch, wenn Sie nur bestimmte Tabellen anstatt der gesamten Datenbank sichern möchten.
Q4. Gespeicherte Prozeduren und Ereignisse werden nicht in den Export einbezogen. Warum?
A. Standardmäßig schließt mysqldump gespeicherte Prozeduren (Routinen) oder geplante Ereignisse nicht ein. Um sie einzubeziehen, fügen Sie die folgenden Optionen hinzu:
--routines --events
Stellen Sie außerdem sicher, dass der Benutzer über ausreichende Berechtigungen zum Zugriff auf diese Objekte verfügt.
Q5. Worauf sollte ich achten, wenn ich eine Sicherungsdatei auf einen anderen Server übertrage?
A. Wichtige Punkte, die zu beachten sind:
- Zeichencodierung : Wenn die Codierung zwischen den Servern unterschiedlich ist, kann dies zu unlesbarem Text führen. Geben Sie bei Bedarf explizit
--default-character-set=utf8an. - Versionsunterschiede : Stellen Sie die Kompatibilität zwischen den MySQL-Versionen auf Quelle und Ziel sicher.
- Sichere Dateiübertragung : Verwenden Sie
scp,rsyncoderSFTPfür sichere Übertragungen. - Dateiintegritätsprüfungen : Überprüfen Sie die Integrität nach der Übertragung mit
md5sumodersha256sum.
Q6. Gibt es Unterschiede zwischen Windows- und Mac/Linux-Befehlen?
A. Die grundlegende Befehlssyntax ist identisch, jedoch gibt es Unterschiede im Verhalten der Shell, bei Batch-Verarbeitung und der Verwendung des date-Befehls. Beispielsweise kann Windows beim Erzeugen von Dateinamen mit Datum PowerShell oder die Variable %DATE% verwenden, während Linux und macOS den Befehl date nutzen.
8. Fazit
In diesem Artikel haben wir das MySQL-Backup- und Migrationswerkzeug „mysqldump“ behandelt, von der Grundnutzung bis zu fortgeschrittenen Techniken und Fehlersuche.
Obwohl mysqldump eine einfache Syntax verwendet, macht die Auswahl der richtigen Optionen und Befehlskonfigurationen je nach Zweck einen erheblichen Unterschied in der Qualität der Sicherung und der Zuverlässigkeit der Wiederherstellung.
✅ Wichtigste Erkenntnisse aus diesem Artikel
- Grundlegende mysqldump‑Syntax und drei Exportmethoden (einzelne, mehrere und alle Datenbanken)
- Flexible Exportvarianten wie nur Schema, nur Daten und ausgewählte Tabellen
- Wichtige Optionen für den praktischen Einsatz einschließlich
--single-transactionund--routines - Grundlegende Wiederherstellungsbefehle und wie man Importfehler behandelt
- Praktische Tipps wie gzip‑Kompression und Cron‑Automatisierung
- Nützliches Fehlersuch‑Wissen , das im FAQ‑Abschnitt bereitgestellt wird
🛡 Best Practices für die Verwendung von mysqldump
- Erstellen Sie nicht nur Backups – prüfen Sie, ob sie wiederhergestellt werden können
- Bereiten Sie sich auf Probleme durch Versionsunterschiede und Zeichencodierung vor
- Gestalten Sie Backup‑Vorgänge mit Kompression, Automatisierung und angemessener Zugriffskontrolle
- Beziehen Sie gespeicherte Prozeduren und Ereignisse ein, um Ihrer Produktionskonfiguration zu entsprechen
Ein korrekt entworfenes und betriebenes Backup‑System mit mysqldump ermöglicht eine schnelle Wiederherstellung im Falle unerwarteter Ausfälle und trägt zu zuverlässigen Systemabläufen bei. Besonders für Unternehmenssysteme und WordPress‑Seiten, bei denen Datenverlust kritisch sein kann, ist das Verständnis und die effektive Nutzung von mysqldump unerlässlich.
Verwenden Sie diesen Leitfaden als Referenz, um die optimale Backup‑Strategie für Ihre Umgebung zu erstellen.


