MySQL Datenbank per SSH Terminal exportieren: Unterschied zwischen den Versionen
(Artikel passenden Kundenkategorien zugeordnet) |
|||
| (4 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt) | |||
| Zeile 1: | Zeile 1: | ||
| − | < | + | Mit <code>mariadb-dump</code> beziehungsweise <code>mysqldump</code> können Sie eine MariaDB- oder MySQL-Datenbank als SQL-Datei exportieren. Ein solcher Dump eignet sich für Migrationen und als zusätzlicher Bestandteil einer Backup-Strategie. |
| − | < | + | |
| − | + | == Voraussetzungen == | |
| − | < | + | |
| − | < | + | * SSH-Zugang zum Server |
| − | < | + | * Datenbankname und Datenbankbenutzer |
| − | <p> | + | * ausreichende Datenbankrechte, mindestens zum Lesen der zu sichernden Objekte |
| − | < | + | * genügend freier Speicherplatz für die Dump-Datei |
| − | < | + | |
| − | < | + | == Dump einer MariaDB-Datenbank erstellen == |
| − | < | + | |
| − | [[Category: | + | Setzen Sie zuerst restriktive Rechte für neu erstellte Dateien: |
| + | |||
| + | <pre>umask 077</pre> | ||
| + | |||
| + | Exportieren Sie anschließend die Datenbank. Das Passwort wird interaktiv abgefragt und erscheint nicht in der Befehlszeile: | ||
| + | |||
| + | <pre>mariadb-dump --user=DB_BENUTZER --password --single-transaction --quick --databases DB_NAME > DB_NAME.sql</pre> | ||
| + | |||
| + | Ersetzen Sie <code>DB_BENUTZER</code>, <code>DB_NAME</code> und den Dateinamen durch Ihre Werte. | ||
| + | |||
| + | Bei Oracle MySQL verwenden Sie entsprechend: | ||
| + | |||
| + | <pre>mysqldump --user=DB_BENUTZER --password --single-transaction --quick --databases DB_NAME > DB_NAME.sql</pre> | ||
| + | |||
| + | == Dump prüfen == | ||
| + | |||
| + | Prüfen Sie, ob die Datei vorhanden und nicht leer ist: | ||
| + | |||
| + | <pre>ls -lh DB_NAME.sql | ||
| + | test -s DB_NAME.sql && echo "Dump-Datei ist nicht leer"</pre> | ||
| + | |||
| + | Führen Sie unmittelbar nach dem Dump <code>echo $?</code> aus. Nur <code>0</code> steht für einen ohne gemeldeten Fehler beendeten Befehl. Die zuverlässigste Prüfung ist ein Testimport in eine getrennte Testdatenbank. | ||
| + | |||
| + | == Dump komprimieren == | ||
| + | |||
| + | Mit <code>gzip -k</code> bleibt die unkomprimierte Datei erhalten: | ||
| + | |||
| + | <pre>gzip -k DB_NAME.sql</pre> | ||
| + | |||
| + | Danach existiert zusätzlich <code>DB_NAME.sql.gz</code>. | ||
| + | |||
| + | == Wichtige Hinweise == | ||
| + | |||
| + | * Schreiben Sie das Datenbankpasswort niemals direkt hinter <code>-p</code> oder <code>--password=</code>. Es kann sonst in Prozesslisten, Shell-Historie oder Protokollen erscheinen. | ||
| + | * <code>--single-transaction</code> erstellt für InnoDB-Tabellen einen konsistenten Stand ohne lange Tabellensperren. Für MyISAM- oder MEMORY-Tabellen gilt diese Garantie nicht. | ||
| + | * Vermeiden Sie während des Dumps Änderungen an Tabellenstrukturen, beispielsweise <code>ALTER TABLE</code>, <code>DROP TABLE</code> oder <code>TRUNCATE TABLE</code>. | ||
| + | * Ein SQL-Dump sichert nicht automatisch externe Dateien, Konfigurationen, Benutzerrechte oder alle Servereinstellungen. | ||
| + | * Bewahren Sie Dumps nicht dauerhaft im öffentlich erreichbaren Dokumentenstamm einer Website auf. | ||
| + | |||
| + | == Häufige Fehler == | ||
| + | |||
| + | ; <code>Access denied</code> | ||
| + | : Benutzername, Passwort oder Berechtigungen stimmen nicht. Prüfen Sie auch, ob der Benutzer nur von einem bestimmten Host zugreifen darf. | ||
| + | |||
| + | ; <code>No space left on device</code> | ||
| + | : Prüfen Sie <code>df -h</code> und <code>df -i</code>. Löschen Sie nicht wahllos Systemdateien. | ||
| + | |||
| + | ; <code>mariadb-dump: command not found</code> | ||
| + | : Auf MySQL-Systemen kann nur <code>mysqldump</code> vorhanden sein. Prüfen Sie zunächst die eingesetzte Datenbankdistribution. | ||
| + | |||
| + | [[Category:VServer und Root Server]] | ||
| + | |||
| + | [[Category:Datenbanken und phpMyAdmin]] | ||
| + | |||
| + | [[Category:Backups und Wiederherstellung]] | ||
Aktuelle Version vom 20. September 2026, 12:16 Uhr
Mit mariadb-dump beziehungsweise mysqldump können Sie eine MariaDB- oder MySQL-Datenbank als SQL-Datei exportieren. Ein solcher Dump eignet sich für Migrationen und als zusätzlicher Bestandteil einer Backup-Strategie.
Inhaltsverzeichnis
Voraussetzungen
- SSH-Zugang zum Server
- Datenbankname und Datenbankbenutzer
- ausreichende Datenbankrechte, mindestens zum Lesen der zu sichernden Objekte
- genügend freier Speicherplatz für die Dump-Datei
Dump einer MariaDB-Datenbank erstellen
Setzen Sie zuerst restriktive Rechte für neu erstellte Dateien:
umask 077
Exportieren Sie anschließend die Datenbank. Das Passwort wird interaktiv abgefragt und erscheint nicht in der Befehlszeile:
mariadb-dump --user=DB_BENUTZER --password --single-transaction --quick --databases DB_NAME > DB_NAME.sql
Ersetzen Sie DB_BENUTZER, DB_NAME und den Dateinamen durch Ihre Werte.
Bei Oracle MySQL verwenden Sie entsprechend:
mysqldump --user=DB_BENUTZER --password --single-transaction --quick --databases DB_NAME > DB_NAME.sql
Dump prüfen
Prüfen Sie, ob die Datei vorhanden und nicht leer ist:
ls -lh DB_NAME.sql test -s DB_NAME.sql && echo "Dump-Datei ist nicht leer"
Führen Sie unmittelbar nach dem Dump echo $? aus. Nur 0 steht für einen ohne gemeldeten Fehler beendeten Befehl. Die zuverlässigste Prüfung ist ein Testimport in eine getrennte Testdatenbank.
Dump komprimieren
Mit gzip -k bleibt die unkomprimierte Datei erhalten:
gzip -k DB_NAME.sql
Danach existiert zusätzlich DB_NAME.sql.gz.
Wichtige Hinweise
- Schreiben Sie das Datenbankpasswort niemals direkt hinter
-poder--password=. Es kann sonst in Prozesslisten, Shell-Historie oder Protokollen erscheinen. --single-transactionerstellt für InnoDB-Tabellen einen konsistenten Stand ohne lange Tabellensperren. Für MyISAM- oder MEMORY-Tabellen gilt diese Garantie nicht.- Vermeiden Sie während des Dumps Änderungen an Tabellenstrukturen, beispielsweise
ALTER TABLE,DROP TABLEoderTRUNCATE TABLE. - Ein SQL-Dump sichert nicht automatisch externe Dateien, Konfigurationen, Benutzerrechte oder alle Servereinstellungen.
- Bewahren Sie Dumps nicht dauerhaft im öffentlich erreichbaren Dokumentenstamm einer Website auf.
Häufige Fehler
Access denied- Benutzername, Passwort oder Berechtigungen stimmen nicht. Prüfen Sie auch, ob der Benutzer nur von einem bestimmten Host zugreifen darf.
No space left on device- Prüfen Sie
df -hunddf -i. Löschen Sie nicht wahllos Systemdateien.
mariadb-dump: command not found- Auf MySQL-Systemen kann nur
mysqldumpvorhanden sein. Prüfen Sie zunächst die eingesetzte Datenbankdistribution.

