15%

15% auf alle Hosting-Dienste sparen

Teste deine Fähigkeiten und erhalte Rabatt auf jeden Hosting-Plan

Benutze den Code:

Skills
Anfangen
21.10.2024
2 +1

Wie man eine MySQL-Datenbank mit MySQL Workbench sichert

MySQL Workbench ist ein plattformübergreifendes, visuelles Datenbankverwaltungstool, das ein integriertes Data Export-Dienstprogramm enthält, das vollständige logische Backups von MySQL- und MariaDB-Datenbanken als portable .sql Dump-Dateien erstellen kann. Ein auf diese Weise erstelltes logisches Backup erfasst sowohl das DDL-Schema als auch die DML-Daten als einfache SQL-Anweisungen, wodurch es für Menschen lesbar, versionskontrollfreundlich und auf jeder kompatiblen MySQL-Instanz wiederherstellbar ist, unabhängig vom Betriebssystem oder der Speicher-Engine.

Dieser Leitfaden führt durch jeden Schritt des Backup-Prozesses — von der anfänglichen Verbindungseinrichtung über die Export-Konfiguration, Verifizierung und Automatisierung — und behandelt dabei auch die architektonischen Kompromisse, die bestimmen, ob das Export-Tool von MySQL Workbench die richtige Wahl für Ihre Umgebung ist.

Warum logische Backups wichtig sind (und wann sie nicht ausreichen)

Die Data Export-Funktion von MySQL Workbench umhüllt das mysqldump-Dienstprogramm mit einer GUI. Das bedeutet, dass die Ausgabe ein logisches Backup ist: eine sequenzielle Menge von SQL-Anweisungen (CREATE TABLE, INSERT INTO usw.), die die Datenbank von Grund auf neu aufbauen, wenn sie wiedergegeben werden. Dies steht im Gegensatz zu physischen Backups (rohe Dateidatei-Kopien, die von Tools wie Percona XtraBackup oder MySQL Enterprise Backup erstellt werden), die InnoDB-Tablespace-Dateien direkt kopieren.

AttributLogisches Backup (Workbench / mysqldump)Physisches Backup (XtraBackup)
AusgabeformatEinfacher `.sql`-TextBinäre InnoDB-Tablespace-Dateien
PortabilitätJeder MySQL-kompatible ServerGleiche Hauptversion, gleiche OS-Architektur
Backup-Geschwindigkeit (große DBs)Langsam — zeilenweise SerialisierungSchnell — Kopie auf Dateiebene
WiederherstellungsgeschwindigkeitLangsam — wiederholt jede SQL-AnweisungSchnell — Dateikopie + Crash-Wiederherstellung
GranularitätTabelle, Datenbank oder vollständige InstanzVollständige Instanz oder einzelner Tablespace
Konsistenzgarantie`–single-transaction` (InnoDB) oder Tabellen-LockHot-Backup mit InnoDB-Redo-Log
Für Menschen lesbarJaNein
Geeignet fürEntwicklung/Staging, kleine bis mittlere DBs, MigrationenGroße Produktionsdatenbanken

Für Datenbanken unter einigen Gigabyte auf einem VPS Hosting oder einer Shared-Umgebung ist ein logisches Backup über MySQL Workbench völlig praktikabel. Bei Produktionsdatenbanken mit mehreren hundert Gigabyte sollten Sie den Workbench-Export als ergänzendes Tool oder als Tool für die Entwicklungsumgebung betrachten und sich für Produktions-RPO/RTO-Ziele auf physische oder binärlog-basierte Backups verlassen.

Schritt 1: MySQL Workbench installieren und Kompatibilität überprüfen

Laden Sie MySQL Workbench von der offiziellen MySQL-Downloads-Seite herunter. Das Installationsprogramm ist für Windows, macOS und Ubuntu/Debian/Fedora Linux-Pakete verfügbar.

Die Versionsübereinstimmung ist wichtig. MySQL Workbench 8.0.x sollte gegen MySQL 8.0.x-Server verwendet werden. Die Verwendung eines deutlich älteren Workbench-Clients gegen einen neueren Server (oder umgekehrt) kann dazu führen, dass der Export-Assistent Objekte, die er nicht parsen kann, stillschweigend auslässt, wie z. B. generierte Spalten, funktionale Indizes oder JSON-Schema-Validierungsklauseln, die in späteren Versionen eingeführt wurden.

Bestätigen Sie nach der Installation, dass die Client-Version mit Ihrem Server übereinstimmt:

SELECT VERSION();

Führen Sie diese Abfrage unmittelbar nach der Verbindung aus, um die Serverversion zu überprüfen, bevor Sie mit einem Export fortfahren.

Schritt 2: Eine Serververbindung erstellen und testen

Starten Sie MySQL Workbench. Suchen Sie auf dem Startbildschirm das MySQL Connections-Panel und klicken Sie auf das +-Symbol, um den Verbindungseinrichtungsdialog zu öffnen.

Füllen Sie die folgenden Felder aus:

  • Connection Name — eine beschreibende Bezeichnung (z. B. prod-db-01)
  • Hostname — die IP-Adresse oder der FQDN des Servers
  • Port — Standard ist 3306; ändern Sie ihn, wenn Ihr Server einen nicht standardmäßigen Port verwendet
  • Username — das MySQL-Benutzerkonto
  • Password — speichern Sie es im Workbench-Tresor oder geben Sie es zum Verbindungszeitpunkt ein

Klicken Sie auf Test Connection. Ein erfolgreicher Test bestätigt die TCP-Erreichbarkeit und die Gültigkeit der Anmeldedaten. Wenn der Test fehlschlägt, sind häufige Ursachen:

  • Die bind-address des MySQL-Servers ist auf 127.0.0.1 gesetzt und blockiert Remote-Verbindungen
  • Eine Firewall-Regel blockiert Port 3306
  • Dem Benutzerkonto fehlt das PROCESS– oder SELECT-Privileg, das für den Export erforderlich ist

Mindestprivilegien für einen vollständigen Export:

GRANT SELECT, SHOW VIEW, TRIGGER, LOCK TABLES, EVENT, PROCESS ON *.* TO 'backup_user'@'%';

Verwenden Sie niemals das root-Konto für routinemäßige Backup-Operationen. Erstellen Sie einen dedizierten schreibgeschützten Backup-Benutzer und gewähren Sie nur das Notwendige.

Schritt 3: Das Data Export-Tool öffnen

Navigieren Sie nach der Verbindung zu Server > Data Export in der oberen Menüleiste. Dies öffnet das Data Export-Panel, das die GUI-Oberfläche für mysqldump ist.

Das Panel ist in zwei Hauptbereiche unterteilt:

  • Linker Bereich — listet alle für den verbundenen Benutzer sichtbaren Datenbanken auf
  • Rechter Bereich — zeigt Exportformat, Ausgabeziel und erweiterte Optionen

Schritt 4: Datenbanken und Tabellen auswählen

Aktivieren Sie im linken Bereich das Kontrollkästchen neben jeder Datenbank, die Sie in das Backup aufnehmen möchten. Durch Erweitern eines Datenbankknotens werden einzelne Tabellen angezeigt, sodass Sie Teilexporte durchführen können — zum Beispiel nur eine users-Tabelle oder eine orders-Tabelle sichern, ohne große Protokollierungs- oder Analysetabellen zu exportieren, die neu generiert werden können.

Praktischer Tipp: Wenn Sie ein CMS wie WordPress oder eine benutzerdefinierte Anwendung auf Shared Web Hosting betreiben, haben Sie in der Regel eine einzige Anwendungsdatenbank. Wählen Sie diese vollständig aus. Wenn Sie eine mandantenfähige Anwendung mit Dutzenden von Datenbanken auf einem Dedicated Server verwalten, sollten Sie datenbankweise Exporte per Skript in Betracht ziehen, anstatt alles in einem Durchgang über die GUI zu exportieren.

Schritt 5: Export-Optionen konfigurieren

Dieser Schritt enthält die folgenreichsten Entscheidungen im gesamten Prozess.

Export-Inhaltstyp

Wählen Sie unter Objects to Export, was der Dump enthalten soll:

  • Dump Structure and Data — exportiert sowohl das DDL (CREATE TABLE, CREATE VIEW, gespeicherte Prozeduren, Trigger, Ereignisse) als auch alle Zeilendaten. Dies ist die richtige Wahl für ein vollständiges, wiederherstellbares Backup.
  • Dump Data Only — exportiert nur INSERT-Anweisungen. Verwenden Sie dies, wenn Sie Daten in ein bereits vorhandenes Schema migrieren.
  • Dump Structure Only — exportiert nur DDL. Nützlich zum Replizieren eines Schemas in eine Staging-Umgebung, ohne sensible Produktionsdaten zu kopieren.

Ausgabeziel

  • Export to Dump Project Folder — erstellt eine .sql-Datei pro Tabelle in einem Verzeichnis. Nützlich, wenn Sie einzelne Tabellen selektiv wiederherstellen müssen, erzeugt aber Dutzende von Dateien für große Datenbanken.
  • Export to Self-Contained File — schreibt den gesamten Export in eine einzige .sql-Datei. Dies ist die Standardwahl für die meisten Backup-Szenarien, da es ein einzelnes Artefakt erzeugt, das leicht zu komprimieren, zu übertragen und zu speichern ist.

Klicken Sie auf Browse, um den Ausgabepfad festzulegen. Wählen Sie einen Speicherort außerhalb des Web-Roots und idealerweise auf einem separaten Volume vom Datenbankdatenverzeichnis.

Erweiterte Optionen (Kritisch für Konsistenz)

Klicken Sie auf Advanced Options, um die zugrunde liegenden mysqldump-Flags anzuzeigen. Achten Sie besonders auf:

  • --single-transaction — umhüllt den gesamten InnoDB-Export in einer einzigen Transaktion mit wiederholbarem Lesen und erzeugt einen konsistenten Snapshot ohne Tabellen-Locks. Dies ist für Live-Produktionsdatenbanken, die InnoDB verwenden, unerlässlich. Aktivieren Sie es.
  • --routines — enthält gespeicherte Prozeduren und Funktionen. In einigen Workbench-Versionen standardmäßig deaktiviert.
  • --events — enthält geplante Ereignisse.
  • --triggers — standardmäßig enthalten; überprüfen Sie, ob es aktiviert ist.
  • --hex-blob — exportiert BLOB-, BINARY– und VARBINARY-Spalten als hexadezimale Zeichenketten und verhindert so Kodierungskorruption bei der Wiederherstellung auf Systemen mit unterschiedlichen Zeichensatz-Standardeinstellungen.

Wenn Sie eine Datenbank exportieren, die DEFINER-Klauseln verwendet, die an einen bestimmten Benutzer gebunden sind (häufig bei Views und gespeicherten Prozeduren), beachten Sie, dass die Wiederherstellung des Dumps auf einem anderen Server fehlschlägt, wenn dieser Benutzer nicht existiert. Entfernen oder ersetzen Sie DEFINER-Klauseln vor der Wiederherstellung:

sed 's/DEFINER=[^ ]* //g' original_dump.sql > cleaned_dump.sql

Schritt 6: Den Export ausführen

Klicken Sie auf Start Export. MySQL Workbench zeigt ein Echtzeit-Fortschrittsprotokoll an, das jedes Objekt bei der Verarbeitung anzeigt. Bei großen Datenbanken kann dies je nach Datenvolumen, Tabellenanzahl und Server-I/O-Kapazität mehrere Minuten bis Stunden dauern.

Überwachen Sie die Protokollausgabe sorgfältig. Warnungen wie Access denied for table oder Table doesn't exist weisen auf Privileg-Lücken oder Schema-Inkonsistenzen hin, die ein unvollständiges Backup erzeugen. Behandeln Sie diese nicht als kosmetisch — ein unvollständiges Backup ist kein Backup.

Nach Abschluss zeigt das Protokoll Export completed mit einem Zeitstempel an.

Schritt 7: Die Backup-Datei überprüfen

Navigieren Sie zum Ausgabeverzeichnis und bestätigen Sie, dass die .sql-Datei existiert und eine Größe ungleich null hat. Öffnen Sie dann die Datei in einem Texteditor oder führen Sie eine schnelle Integritätsprüfung durch:

head -50 your_backup.sql
tail -20 your_backup.sql

Ein gültiger Dump beginnt mit einem Kommentarblock, der die mysqldump-Version und die Serverversion enthält, gefolgt von SET-Anweisungen für Zeichensatz und Fremdschlüsselprüfungen. Er endet mit einem abschließenden -- Dump completed on YYYY-MM-DD HH:MM:SS-Kommentar. Wenn die Datei abgeschnitten ist oder abrupt endet, wurde der Export unterbrochen und das Backup ist unbrauchbar.

Führen Sie für zusätzliche Sicherheit eine Test-Wiederherstellung in eine Nicht-Produktionsdatenbank durch:

mysql -u root -p test_restore_db < your_backup.sql

Überprüfen Sie dann stichprobenartig die Zeilenanzahl gegenüber der Quelle:

SELECT COUNT(*) FROM test_restore_db.your_critical_table;

Ein Backup, das nie getestet wurde, ist eine Annahme, keine Garantie.

Schritt 8: Die Backup-Datei komprimieren und sichern

Rohe .sql-Dumps lassen sich aufgrund ihrer repetitiven Textstruktur sehr gut komprimieren. Komprimieren Sie unmittelbar nach dem Export:

gzip -9 your_backup.sql

Dies reduziert die Dateigröße typischerweise um 70–90 %. Für Datenbanken mit sensiblen Kundendaten verschlüsseln Sie das komprimierte Archiv vor der Speicherung oder Übertragung:

openssl enc -aes-256-cbc -salt -pbkdf2 -in your_backup.sql.gz -out your_backup.sql.gz.enc -k 'your-strong-passphrase'

Speichern Sie die Passphrase getrennt von der Backup-Datei — niemals im selben Verzeichnis oder Repository.

Wenn Ihre Anwendung HTTPS verwendet (durchgesetzt durch ein SSL Certificate), wenden Sie dieselbe Disziplin auf Backup-Übertragungen an: Verschieben Sie niemals unverschlüsselte Datenbank-Dumps über einfaches HTTP oder unverschlüsseltes FTP.

MySQL-Backups ohne die GUI von MySQL Workbench automatisieren

MySQL Workbench hat keinen nativen Scheduler. Für wiederkehrende Backups rufen Sie mysqldump direkt aus einem Shell-Skript auf und planen Sie es mit cron oder einem systemd-Timer.

Shell-Skript für automatisierte tägliche Backups

#!/bin/bash

DB_USER="backup_user"
DB_PASS="your_password"
DB_NAME="your_database"
BACKUP_DIR="/var/backups/mysql"
DATE=$(date +%F_%H-%M-%S)
FILENAME="${BACKUP_DIR}/${DB_NAME}_${DATE}.sql.gz"

mkdir -p "$BACKUP_DIR"

mysqldump 
  --user="$DB_USER" 
  --password="$DB_PASS" 
  --single-transaction 
  --routines 
  --triggers 
  --events 
  --hex-blob 
  "$DB_NAME" | gzip -9 > "$FILENAME"

# Retain only the last 14 days of backups
find "$BACKUP_DIR" -name "*.sql.gz" -mtime +14 -delete

Planen Sie dieses Skript täglich um 02:00 Uhr:

crontab -e

Fügen Sie die folgende Zeile hinzu:

0 2 * * * /usr/local/bin/mysql_backup.sh >> /var/log/mysql_backup.log 2>&1

Sicherheitshinweis: Das Speichern des Passworts in einem Shell-Skript ist nur akzeptabel, wenn das Skript chmod 700-Berechtigungen hat und dem Benutzer gehört, der den Cron-Job ausführt. Ein sichererer Ansatz ist die Verwendung einer MySQL-Optionsdatei:

# /root/.my.cnf — permissions must be 600
[client]
user=backup_user
password=your_password

Entfernen Sie dann die --user– und --password-Flags vollständig aus dem Skript; mysqldump liest die Anmeldedaten automatisch aus .my.cnf.

Für Teams, die mehrere Datenbanken auf verschiedenen Servern verwalten, sollten Sie diese Automatisierung mit einem VPS mit cPanel kombinieren, das einen integrierten geplanten Backup-Manager enthält, der Aufbewahrung, Remote-Speicherziele und E-Mail-Benachrichtigungen ohne manuelle Skripterstellung verwaltet.

Ein mit MySQL Workbench erstelltes Backup wiederherstellen

Die Wiederherstellung aus einem Workbench-generierten Dump ist unkompliziert, erfordert jedoch Aufmerksamkeit für einige Details.

Erstellen Sie die Zieldatenbank, falls sie nicht existiert:

CREATE DATABASE restored_db CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;

Aus der Dump-Datei wiederherstellen:

mysql -u root -p restored_db < your_backup.sql

Wenn der Dump mit --databases– oder --all-databases-Flags erstellt wurde (die CREATE DATABASE– und USE-Anweisungen einbetten), geben Sie keine Zieldatenbank in der Befehlszeile an — der Dump verwaltet dies intern. Der Einzeldatenbank-Export von Workbench enthält diese Anweisungen standardmäßig nicht, daher müssen Sie die Zieldatenbank manuell erstellen und angeben.

Für komprimierte Dumps:

gunzip -c your_backup.sql.gz | mysql -u root -p restored_db

Überwachen Sie die Wiederherstellungsausgabe auf Fehler. Fremdschlüssel-Constraint-Verletzungen während der Wiederherstellung werden in der Regel durch die Tabellenimportreihenfolge verursacht. Wenn dies auftritt, deaktivieren Sie vorübergehend die Fremdschlüsselprüfungen:

SET FOREIGN_KEY_CHECKS = 0;
-- run restore
SET FOREIGN_KEY_CHECKS = 1;

Entscheidungsmatrix: Wann welche Backup-Methode verwendet werden sollte

SzenarioEmpfohlenes Tool
Kleine Datenbank, gelegentliches manuelles BackupMySQL Workbench Data Export
Automatisierte tägliche Backups auf einem Linux VPS`mysqldump` via Cron-Skript
Große InnoDB-Datenbank, minimale AusfallzeitPercona XtraBackup
Anforderung zur Point-in-Time-WiederherstellungBinary Log + vollständiger Dump
Managed Hosting mit GUI-SchedulercPanel Backup Manager
Versionsübergreifende MigrationLogischer Dump (mysqldump / Workbench)
Disaster Recovery mit RPO unter einer MinuteMySQL Group Replication + physisches Backup

Technische Schlüssel-Checkliste

  • Verwenden Sie einen dedizierten Backup-Benutzer mit SELECT-, SHOW VIEW-, TRIGGER-, LOCK TABLES-, EVENT– und PROCESS-Privilegien — niemals root.
  • Aktivieren Sie immer --single-transaction für InnoDB-Tabellen, um Sperren zu vermeiden und einen konsistenten Snapshot zu gewährleisten.
  • Fügen Sie die Flags --routines, --triggers und --events hinzu; Workbench aktiviert möglicherweise nicht alle diese standardmäßig.
  • Überprüfen Sie, ob die Dump-Datei mit dem -- Dump completed-Kommentar endet, bevor Sie sie als gültig behandeln.
  • Führen Sie Test-Wiederherstellungen in eine Nicht-Produktionsdatenbank in regelmäßigen Abständen durch — mindestens monatlich.
  • Komprimieren Sie Dumps sofort mit gzip und verschlüsseln Sie sensible Archive mit AES-256 vor der Übertragung oder Offsite-Speicherung.
  • Entfernen oder ersetzen Sie DEFINER-Klauseln, wenn Sie auf einem Server mit einem anderen Benutzersatz wiederherstellen.
  • Für Datenbanken größer als ~10 GB sollten Sie physische Backup-Tools evaluieren; logische Backups in dieser Größenordnung führen für die meisten SLAs zu inakzeptablen Wiederherstellungszeiten.
  • Speichern Sie Backups auf einem separaten Volume oder Remote-Standort — ein Backup auf demselben Datenträger wie die Datenbank, die es schützt, ist kein Backup.

Häufig gestellte Fragen

Sperrt MySQL Workbench Tabellen während des Exports?

Für InnoDB-Tabellen mit aktivierter --single-transaction-Option werden keine Tabellen-Locks erworben. Der Export verwendet einen konsistenten Lese-Snapshot. Für MyISAM-Tabellen erwirbt mysqldump Lese-Locks, da MyISAM keine transaktionale Konsistenz unterstützt. Wenn Ihre Datenbank Speicher-Engines mischt, sperrt der Export MyISAM-Tabellen, während InnoDB-Tabellen transaktional gelesen werden.

Kann ich einen Remote-MySQL-Server mit MySQL Workbench sichern?

Ja. MySQL Workbench verbindet sich über TCP mit jedem erreichbaren MySQL-Server. Konfigurieren Sie die Verbindung mit der IP oder dem Hostnamen des Remote-Hosts und stellen Sie sicher, dass Port 3306 (oder Ihr benutzerdefinierter Port) in der Firewall geöffnet ist. Für Server ohne direkten öffentlichen Zugang unterstützt Workbench nativ SSH-Tunneling — konfigurieren Sie es unter dem SSH-Tab im Verbindungsdialog.

Was ist der Unterschied zwischen „Export to Dump Project Folder” und „Export to Self-Contained File”?

Die Projektordner-Option erstellt eine .sql-Datei pro Tabelle, was selektive Wiederherstellungen auf Tabellenebene ermöglicht, aber viele Dateien erzeugt. Die Self-Contained-File-Option schreibt alles in eine einzige .sql-Datei, die einfacher zu verwalten, zu komprimieren und zu übertragen ist. Für die meisten Anwendungsfälle ist die Self-Contained-Datei die richtige Wahl.

Wie groß wird meine .sql-Backup-Datei im Vergleich zur tatsächlichen Datenbankgröße sein?

Ein roher .sql-Dump ist typischerweise 1,5x bis 3x größer als die tatsächliche Datenbankgröße auf dem Datenträger, da Zeilendaten als ausführliche INSERT-Anweisungen serialisiert werden. Nach der gzip-Komprimierung schrumpft der Dump in der Regel auf 10–30 % der ursprünglichen Datenbankgröße, was komprimierte logische Backups für textlastige Datensätze sehr speichereffizient macht.

Kann MySQL Workbench Views, gespeicherte Prozeduren und Trigger sichern?

Ja, aber nur wenn die entsprechenden Optionen explizit aktiviert sind. Überprüfen Sie im Advanced Options-Panel, ob --routines (für gespeicherte Prozeduren und Funktionen) und --events aktiviert sind. Trigger sind standardmäßig enthalten. Views sind als Teil des Schema-Exports enthalten, wenn „Dump Structure and Data” oder „Dump Structure Only” ausgewählt ist.

15%

15% auf alle Hosting-Dienste sparen

Teste deine Fähigkeiten und erhalte Rabatt auf jeden Hosting-Plan

Benutze den Code:

Skills
Anfangen