MySQL Datenbank per SSH Terminal exportieren: Unterschied zwischen den Versionen

Aus HOSTING-STATION55 - Webhosting Wiki / FAQ
Zur Navigation springen Zur Suche springen
(Artikel passenden Kundenkategorien zugeordnet)
 
(2 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt)
Zeile 1: Zeile 1:
−
<p>Sie können eine MySQL Datenbank per SSH Terminal exportieren, in unserem Beispiel wird die MySQL Datenbank exportiert.</p>
+
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.
−
<p><strong>SSH Befehl:</strong></p>
+
 
−
<blockquote>
+
== Voraussetzungen ==
−
<p>mysqldump --opt -p -u [BENUTZER] [DATENBANK] > [MYSQL-DB.sql]</p>
+
 
−
<br /><hr>
+
* SSH-Zugang zum Server
−
<p><strong>Beispiel:</strong></p>
+
* Datenbankname und Datenbankbenutzer
−
<p>mysqldump --opt -p -u web1 usr_web1 > usr_web1.sql</p></blockquote>
+
* ausreichende Datenbankrechte, mindestens zum Lesen der zu sichernden Objekte
−
<p>Nun muss noch das MySQL Passwort der zu exportierenden Datenbank eingegeben werden und Sie haben es geschafft.</p>
+
* genügend freier Speicherplatz für die Dump-Datei
−
<p><strong>Hinweis</strong></p>
+
 
−
<p>[BENUTZER], [DATENBANK] und [MYSQL-DB.sql] müssen durch eigene Angaben geändert werden.</p>
+
== Dump einer MariaDB-Datenbank erstellen ==
−
[[Category:vServer und Root Server]]
+
 
 +
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 &gt; 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 &gt; 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 &amp;&amp; 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.

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 -p oder --password=. Es kann sonst in Prozesslisten, Shell-Historie oder Protokollen erscheinen.
  • --single-transaction 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 ALTER TABLE, DROP TABLE oder TRUNCATE 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 -h und df -i. Löschen Sie nicht wahllos Systemdateien.
mariadb-dump: command not found
Auf MySQL-Systemen kann nur mysqldump vorhanden sein. Prüfen Sie zunächst die eingesetzte Datenbankdistribution.