Logo

Datenbanksicherung in MySQL

MySQL-Server 5.6

MySQL-Workbench vs. MySQL-Administrator

Mit früheren Versionen von MySQL-Server wurde häufig das Tool "MySQL-Administrator" eingesetzt. Damit war die Verwaltung der MySQL-Datenbanken auf visueller Ebene durch Aktionen mit grafischen Elementen möglich. Mit Hilfe dieser grafischen Benutzeroberfläche (GUI) konnten Datenbanksicherungen angelegt und zur späteren (regelmäßigen) Ausführung geplant werden.

Mit MySQL-Server ab Version 5.5 kann das MySQL-Administrator-Tool nicht mehr verwendet werden. An dessen Stelle rückt nun die "MySQL-Workbench". Trotz des darin enthaltenen großen Funktionsumfanges mit übersichtlich gestalteter Benutzeroberläche wird man die Funktion zur Planung von Datenbanksicherungen zur späteren Ausführung vergeblich suchen.

Eine Alternative zur fehlenden Funktionität bietet das mitgelieferte Kommandozeilen-Tool, mit dessen Hilfe die Datenbanksicherung zeitgesteuert durchgeführt werden kann.

Voraussetzungen

Um die Kommandozeilen-Tools von MySQL-Server verwenden zu können, ist es erforderlich, die "Client-Anwendungen" zu installieren.

Diese können während der Installation (oder nachträglich über die Systemsteuerung durch Aufrufen des MySQL-Installer) als zusätzliches Paket installiert werden.

Zur Datenbanksicherung wird die in den Client-Anwendungen enthaltene Datei "mysqldump.exe" verwendet.

Sicherung über die Kommandozeile

Die Sicherung einer MySQL-Datenbank lässt sich über die Kommandozeile mit dem folgenden Befehl ausführen:

mysqldump.exe --user=root --password=dbPassword --databases --routines 
--log-error C:\<LogFilePath>\<LogFile>.txt <dbname> > "<TargetPath>\<TargetFile>.sql"

Dieser Befehl sichert die Datenbank mit dem Namen <dbname> und die sich darin befindenden Routinen als SQL-Datei im Ziel "<TargetPath>\<TargetFile>.sql".

Achten Sie darauf, dass Sie vor der Ausführung des Befehls ggf. in das Verzeichnis der MySQL-Dateiablage, dem sog. Datenbankspeicherort, wechseln. Ansonsten wird die Sicherung mit dem oben angegebenen Befehl nicht durchgeführt werden. Alternativ zum erforderlichen Verzeichniswechsel können Sie für den Parameter <dbname> den vollständigen Pfad zum Datenbankspeicherort angeben.

Automatisierung der Datensicherung mit einem Batch-Job

Sollen mehrere Datenbanken nacheinander gesichert werden, kann dazu ein Batch-Job eingesetzt werden. Zur besseren übersicht sollten die dafür benötigten Informationen wie Pfadangabe, Dateiname, etc. in Variablen abgelegt werden.

set dbUser=DBUser
set dbPass=DBPassword
set targetDir=\\Servername\Share
set mysqldumpexe="<PathToMySQLServer>\MySQL Server 5.6\bin\mysqldump.exe"
set mysqlDataPath="<PathToMySQLServerData>\MySQL Server 5.6\data"
pushd %mysqlDataPath%
FOR /D %%F IN (*) DO (
	IF NOT %%F == performance_schema (
		%mysqldumpexe% --user=%dbUser% --password=%dbPass% --databases --routines --log-error %targetDir%\BkpError.txt %%F > "%targetDir%\Backup_%%F.sql"
	)
)
		

Da die notwendigen Daten zur Authentifizierung (Zeilen 1+2) und Verzeichnisse (Zeilen 3-5) festgelegt wurden, werden alle Datenbanken im MySQL-Data-Verzeichnis mit Ausnahme der Datenbank "performance_schema" gesichert.
Die Sicherung erstellt für jede Datenbank eine SQL-Datei im Ziel-Verzeichnis.

Dynamisches Ziel-Verzeichnis

Eine Erweiterung dieses Batch-Jobs besteht darin, dynamische Ziel-Verzeichnisse anzugeben, um bspw. die Sicherungen pro Tag in einem separaten Verzeichnis abzulegen.

(siehe auch: Windows Server 2008 R2 - Automatisiertes Backup)