automatisches MySQL-Datenbank-Backup

Aus aktuellem Anlass habe ich mir Heute Gedanken gemacht wie ich meine Datenbanken in regelmäßigen Abständen sichern kann. Da der Mensch von Natur aus faul und vergesslich ist, sollte das ganze automatisch passieren. Beim ersten Lösungsansatz wollte ich auf Cronjobs verzichten um möglichst unabhängig zu sein. Dennoch ist die Lösung relativ simpel (für Windows!):

  • MySQLDumper auf dem eigenen Webspace installieren (ACHTUNG: für jeden mySQL-Datenbank-User ist eine eigene Installation nötig!) - Videotutorial zur Installation
  • herunterladen von WinTrigger und entpacke (keine Installation nötig)
  • erstellen einer Batchdatei die WinTrigger für jede Datenbank die Upgedatet werden soll aufruft
  • einrichten eines geplanten Tasks

Zur Konfiguration von MySQLDumper gibt es genügend Anleitungen im Netz, falls es Probleme gibt, steht auch das MySQLDumper-Forum zur Verfügung. Auf jeden Fall sollte der Verzeichnisschutz eingerichtet werden! Auch dazu gibt es ein Videotut. Nach der Installation zuerst manuell versuchen ob der Dumper auf dem Webspace funktioniert!

Auch die Batchdatei kann jeder einfach erstellen. Man öffnet den Windows Editor (Start - Ausführen - notepad) und wählt unter Datei - Speichern unter…. Nun speichert man die Datei in den Programmordner von WinTrigger. Als Datei Name wählt man “dbBackup.bat“. Nun fügt man die folgenden Zeilen ein und passt diese, wie unten beschrieben, an:

@echo off
echo Es werden nun folgende mySQL-Datenbanken gesichert:

::meine erste Datenbank die ich sichern will:
echo Host: server.at        Datenbankname: meineDB
::Aufruf von WinTrigger.exe fur diese DB:
WinTrigger.exe /exit /hide /url:server.at/msd/dump.php /user:usr /pass:pw

Die letzten vier Zeilen müssen für jeden Datenbankuser bzw. für jeden Server individuell erstellt werden. Also einfach diese vier Zeilen für jede DB-User bzw. Server kopieren und editieren. Was die einzelnen Parameter bedeuten kann in der doku.txt, welche WinTrigger beiliegt, nachgelesen werden. Nachdem das Script erstellt wurde, alles speichern und testen! Also wird wenn die Batch ausgeführt wird, ein Backup erstellt?

Einrichten des geplanten Tasks ist der letzte Schritt. In der Systemsteuerung wählt man den Punkt Geplante Tasks. Nun klickt man auf geplanten Task hinzufügen. Wählt die erstellt Batchdatei aus, setzt den Ausführungszeitpunkt (z. B.: wöchentlich - Dienstag - 12:00) und gibt nun noch das Passwort für den eigenen Windows-User-Account an.

Immer wieder wird davon gesprochen, dass die Sicherung auch problemlos mit cronjobs möglich ist. Dies ist aber nur bedingt richtig: Damit dies auch funktioniert MUSS der Webserver auf dem die Sicherung ausgeführt werden soll, Perl unterstützen. Der cronjob ruft dann ein Perlscript auf und NICHT direkt die dump.php aus dem MySQLDumper Verzeichnis. Bei kleinen Datenbanken kann der direkte Aufruf der dump.php durchaus funktionieren, aber sichere Backups sind so leider nicht möglich, da die Ausführungszeit der Scripte meist zu lang ist!