Tutorials  /  Databases

MySQL-Datenbank sichern und wiederherstellen mit mysqldump

Ccentron Redaktion · August 2025 ·8 Min. Lesezeit ·Databases, Tutorial

Das Tool mysqldump ist ein integriertes Dienstprogramm von MySQL zur Sicherung und Wiederherstellung von Datenbanken. Es extrahiert sowohl die Struktur als auch die Daten einer Datenbank in eine textbasierte Datei, die später zur Wiederherstellung verwendet werden kann. Normalerweise enthält diese Datei SQL-Befehle wie CREATE, INSERT und DROP. Alternativ lassen sich auch Ausgaben in anderen Formaten generieren.

Diese Anleitung zeigt dir, wie du mit mysqldump eine oder mehrere MySQL-Datenbanken in Formate wie .sql, .csv oder .txt exportierst und sie anschließend über die MySQL-Befehlszeile wiederherstellst.

Voraussetzungen

Stelle vor dem Start sicher, dass folgende Bedingungen erfüllt sind:

  • Zugriff auf einen laufenden MySQL-Datenbankserver
  • Ein installierter MySQL-Client auf deinem System
DB

Passende Infrastruktur bei centron

Datenbanken im Betrieb wollen gepflegt werden: centron übernimmt auf Wunsch Updates, Backups und Monitoring – von der einzelnen Instanz bis zum Cluster. Managed Cluster ansehen →

Überblick zur Syntax von mysqldump

Das Dienstprogramm mysqldump ist Teil der MySQL-Client-Tools und folgt folgender Befehlssyntax:

Code
mysqldump -h [host] -u [benutzer] -P [port] -p [datenbank] > [export-datei]

Erklärung der Parameter:

  • -h [host]: Optional. Hostname des MySQL-Servers, Standard ist localhost.
  • -u [benutzer]: Benutzername mit den Rechten SELECT, LOCK, VIEW und TRIGGER.
  • -P [port]: Optional. Port des MySQL-Servers.
  • -p: Fordert zur Passworteingabe auf.
  • [datenbank]: Name der zu exportierenden Datenbank.
  • > [export-datei]: Zielpfad der Ausgabedatei.

Unterstützte Exportformate

Mit mysqldump kannst du Daten in verschiedenen Formaten sichern, darunter:

  • .sql: Standard-SQL-Datei mit Struktur und Daten
  • .sql.gz: Gzip-komprimierte SQL-Datei
  • .sql.zip: ZIP-Archiv einer SQL-Datei
  • .sql.tar: Tar-Archiv einer SQL-Datei
  • .bak: Allgemeine Backup-Datei
  • .csv: Kommagetrennte Textdatei (CSV)
  • .txt: Reine Textdatei
  • .xml: XML-strukturierte Datei
  • .dump: Vollständiger Dump, vergleichbar mit einer SQL-Datei

Vorbereitung der MySQL-Datenbank für den Export

Bevor du die Datenbank exportierst, verbinde dich mit dem Server und stelle sicher, dass die gewünschte Datenbank vorhanden ist. Wenn sie aktiv verwendet wird, empfiehlt sich ein Sperren oder kurzzeitiges Herunterfahren. Gehe wie folgt vor:

  1. Verbinde dich mit dem MySQL-Server über ein Konto mit ausreichenden Rechten:
Konsole
$ mysql -u root -p

Gib das Passwort ein, sobald du dazu aufgefordert wirst.

  1. Zeige alle verfügbaren Datenbanken an:
Code
mysql> SHOW DATABASES;

Beispielausgabe:

Code
+--------------------+
| Database           |
+--------------------+
| exampledb          |
| information_schema |
| mysql              |
| performance_schema |
| sys                |
+--------------------+
5 rows in set (0.01 sec)
  1. Wechsle in die gewünschte Datenbank:
Code
mysql> USE exampledb;
  1. Liste alle Tabellen in der Datenbank auf:
Code
mysql> SHOW TABLES;
  1. Prüfe, ob du Lesezugriff auf eine Tabelle hast:
Code
mysql> SELECT * FROM table_name;

MySQL-Datenbank mit mysqldump exportieren

Um eine oder mehrere Datenbanken zu sichern, befolge die folgenden Schritte. Stelle sicher, dass dein MySQL-Benutzer die nötigen Berechtigungen hat.

  1. Erstelle einen Ordner für deine Backups:
Konsole
$ mkdir database-backups
  1. Wechsle in den soeben erstellten Ordner:
Konsole
$ cd database-backups
  1. Exportiere eine einzelne Datenbank, z. B. exampledb:
Konsole
$ mysqldump -u root -p exampledb > exampledb.sql

Um während des Exports alle Tabellen zu sperren:

Konsole
$ mysqldump -u root -p --lock-all-tables exampledb > exampledb.sql
  1. Wiederhole den Befehl für jede weitere Datenbank mit eigenem Dateinamen.
  2. Exportiere alle vorhandenen Datenbanken in eine einzige Datei:
Konsole
$ mysqldump -u root -p --all-databases > all-databases.sql

Mit diesem Befehl werden alle Datenbanken exportiert, auf die der Benutzer Zugriff hat.

  1. Zeige die gesicherten Dateien im aktuellen Verzeichnis an:
Konsole
$ ls

Erwartete Ausgabe:

Code
exampledb.sql  all-databases.sql

Export einer MySQL-Datenbank als CSV- oder Textdatei

Obwohl mysqldump grundsätzlich nur SQL-Dateien erzeugt – selbst wenn die Dateiendung .csv lautet –, ist für echten CSV-Export eine SQL-Abfrage mit INTO OUTFILE direkt in der MySQL-Shell notwendig.

Eine einzelne Tabelle als CSV-Datei exportieren

Verbinde dich zunächst mit dem MySQL-Server:

Konsole
$ mysql -u root -p

Führe eine SQL-Abfrage aus, um die Tabelle als CSV-Datei zu speichern:

Code
mysql> SELECT * FROM example_table
       INTO OUTFILE '/tmp/example_table.csv'
       FIELDS TERMINATED BY ',' ENCLOSED BY '"'
       LINES TERMINATED BY '\n';

Die Tabelle wird als Datei unter /tmp/example_table.csv auf dem Server gespeichert. Passe gegebenenfalls die Zugriffsrechte an oder nutze sudo für den Zugriff.

Beende die MySQL-Sitzung:

Code
mysql> EXIT;

Kopiere die CSV-Datei in das aktuelle Arbeitsverzeichnis:

Konsole
$ sudo cp /tmp/example_table.csv .

Mehrere Tabellen per Bash-Skript als CSV exportieren

Erstelle zunächst ein neues Skript:

Konsole
$ nano export_all_csv.sh

Füge den folgenden Inhalt ein:

SQL
#!/bin/bash

DB_NAME="exampledb"
MYSQL_USER="root"
MYSQL_PASS="yourpassword"
OUTPUT_DIR="/var/lib/mysql-files"

tables=$(mysql -u "$MYSQL_USER" -p"$MYSQL_PASS" -e "SHOW TABLES IN $DB_NAME;" | tail -n +2)

for table in $tables; do
    mysql -u "$MYSQL_USER" -p"$MYSQL_PASS" -e "
    SELECT * FROM $DB_NAME.$table
    INTO OUTFILE '$OUTPUT_DIR/${table}.csv'
    FIELDS TERMINATED BY ',' ENCLOSED BY '\"'
    LINES TERMINATED BY '\n';
    "
    echo "Exported: $table -> $OUTPUT_DIR/${table}.csv"
done

Du kannst das Skript anpassen – z. B. andere Trennzeichen, Dateipfade oder Escape-Zeichen festlegen. Stelle sicher, dass das Verzeichnis mysql-files vom MySQL-Prozess beschrieben und von deinem Nutzer gelesen werden kann.

Mache das Skript ausführbar:

Konsole
$ chmod +x export_all_csv.sh

Führe das Skript aus:

Konsole
$ sudo ./export_all_csv.sh

Backup testen und Datenbank wiederherstellen

Nach dem Export über mysqldump solltest du prüfen, ob das Backup korrekt erstellt wurde, bevor du es im Produktivsystem nutzt. Folge diesen Schritten:

Stelle sicher, dass die Exportdatei existiert und nicht leer ist:

Konsole
$ ls -lh

Stelle die Verbindung zum MySQL-Server her:

Konsole
$ mysql -u root -p

Lege eine Testdatenbank zum Einspielen des Backups an:

Code
mysql> CREATE DATABASE restore_db;

Beende die MySQL-Sitzung:

Code
mysql> EXIT;

Spiele das SQL-Backup in die Testdatenbank ein:

Konsole
$ mysql -u root -p restore_db < exampledb.sql

Melde dich erneut an, um die Daten zu überprüfen:

Konsole
$ mysql -u root -p restore_db

Liste alle Tabellen auf:

Code
mysql> SHOW TABLES;

Prüfe die Integrität einzelner Tabellen:

Code
mysql> CHECK TABLE table_name;

Lösche die Testdatenbank, wenn alles erfolgreich war:

Code
mysql> DROP DATABASE restore_db;

Beende die Sitzung:

Code
mysql> EXIT;

Backup in Produktivdatenbank wiederherstellen

Bevor du ein Backup in die Live-Datenbank einspielst, erstelle eine zusätzliche Sicherung:

Konsole
$ mysqldump -u root -p exampledb > backup-before-restore.sql

Importiere anschließend die neue SQL-Datei in die Produktivdatenbank:

Konsole
$ mysql -u root -p exampledb < exampledb.sql

Falls die Datenbank noch nicht existiert, lege sie vorher an:

Konsole
$ mysql -u root -p -e "CREATE DATABASE exampledb;"

Öffne die Datenbank zur Prüfung:

Konsole
$ mysql -u root -p exampledb

Führe erneut eine Tabellenprüfung durch:

Code
mysql> CHECK TABLE table_name;

Verlasse die Sitzung abschließend:

Code
mysql> EXIT;

Fazit

In dieser Anleitung hast du gelernt, wie du mit mysqldump ein MySQL-Backup erstellst, die Integrität überprüfst und die Wiederherstellung sicher testest. Diese Vorgehensweise ist essenziell für eine zuverlässige Backup-Strategie. Weitere Funktionen wie partielle Exporte, Trigger oder Zeichensatzoptionen findest du in der offiziellen mysqldump-Dokumentation.

Jetzt 200 € Guthaben sichern

Testen Sie Ihr Setup auf ccloud³

Registrieren Sie sich in der ccloud³ und erhalten Sie 200 € Startguthaben für Ihr Projekt – z. B. für eine PostgreSQL-VM mit automatischen Backups.

centron Redaktion Technische Redaktion

Das Redaktionsteam von centron schreibt Anleitungen aus dem Betriebsalltag: getestet auf unserer eigenen Plattform, betrieben im Rechenzentrum in Hallstadt bei Bamberg.

Kategorie Databases
Teilen
Noch offene Fragen?

Our team will help you with your specific setup - in German or English, by people who run the platform themselves.

War dieses Tutorial hilfreich?

Your answer is stored anonymously and helps us improve our tutorials.

Kommentare

No comments yet - be the first to ask a question about this tutorial.

Sign in to comment

Comments are open to centron customers. Sign in to your account to ask a question about this tutorial.

Weiterlesen

Das könnte Sie auch interessieren

Jetzt kostenlos anfangen

Melden Sie sich an und erhalten Sie in den ersten 60 Tagen ein Guthaben von 200 € bei centron.

Dieses Werbeangebot gilt nur für neue Konten. Angebot ausschließlich für Gewerbetreibende.

Jetzt loslegen Sales kontaktieren