- Werbung -

Wer mit MySQL-Datenbanken arbeitet kennt meistens auch das Administrationstool phpMyAdmin. Damit kann man so ziemlich alle administrativen Arbeiten erledigen - auch Datenbanken sichern und Sicherungen zurückspielen. Leider schwächelt phpMyAdmin gerade bei dieser wichtigen Aufgabe. So gibt es weder eine Verwaltung der erstellten Backups noch automatische Backups zu bestimmten Zeiten. Viel gravierender ist allerdings eine Einschränkung, die das Backup  großer Datenbanken betrifft.

phpMyAdmin vs. MySQLDumper

phpMyAdmin besteht aus PHP-Skripten, die auf dem Webserver ausgeführt werden. Damit schlecht programmierte Skripte, die z.B. in eine Endlosschleife geraten, nicht den Server blockieren, beendet dieser jedes PHP-Skript nach einer bestimmten Zeit. Häufig ist diese Zeitspanne vom Administrator auf 30 Sekunden eingestellt. Braucht das Skript länger als diese 30 Sekunden, so wird es vom Server beendet und damit kann das Backup nicht durchgeführt werden. Das gleiche gilt aber auch für das Wiedereinspielen eines Backups. So kann es geschehen, dass das Erstellen und Herunterladen eines Backups noch geglückt ist, das Hochladen dagegen misslingt. Zwar bietet phpMyAdmin eine Möglichkeit, dieses Problem zu umgehen: Es gestattet neben der Sicherung einer kompletten Datenbank auch eine oder mehrere Tabellen in ein Backup-File zu schreiben. Womit das Problem der Sicherung sehr großer Datenbanken allerdings nur aufgeschoben, jedoch nicht gelöst ist. Spätestens wenn eine einzelne Tabelle so groß geworden ist, dass es dem Skript nicht mehr gelingt diese zu sichern, ist guter Rat teuer. Konnte eine Sicherungsdatei dagegen noch erstellt werden, ist aber zum Wiedereinspielen zu groß, so gibt es einen Trick: Man öffnet die Datei mit einem geeigneten Editor (z.B. PSPAD) und zerteilt sie von Hand in kleinere Einzelabschnitte. Diese sichert man dann einzeln zurück. Wer das einmal gemacht hat, weiß wie mühsam und arbeitsintensiv das ist und wünscht sich eine andere Lösung. Genau dafür ist MySQLDumper gemacht.

Der Trick

MySQLDumper umgeht das Timeout-Problem mit Hilfe eines einfachen aber cleveren Tricks: Er liest zunächst nur eine kleine Anzahl von Datensätzen aus der zu sichernden Datenbank aus. Dabei merkt es sich, wie weit es gekommen ist und wieviel Skriptlaufzeit es dafür benötigt hat. Nun ruft es sich selbst auf und erhält dadurch erneut die volle Skriptlaufzeit (30 Sekunden - je nach Serverkonfiguration). Nun wird die Zahl der zu lesenden Datensätze um 10% erhöht und es wird erneut die benötigte Zeit gemessen. So geht das Spiel weiter, bis das Programm merkt, dass die verbleibende Restlaufzeit des Skriptes nicht mehr genügt, um die Zahl der Datensätze zu erhöhen (oder bis es die maximale Anzahl von 5.000 Datensätzen bei einem Durchlauf erreicht hat). Damit wird der Timeout-Fehler elegant umgangen und kann auf diese Weise auch sehr große Datenbanken sichern. Das gleiche Prinzip benutzt MySQLDumper auch beim Wiederherstellen der Daten aus einer Sicherungsdatei, so dass auch das Wiederherstellen problemlos gelingt. Während des Sicherns komprimiert MySQLDumper die Daten, so dass diese Platz sparend auf dem Server abgelegt werden können. Das Skript für die Wiederherstellung kann direkt aus einer solchen gepackten Datei lesen. Ein Entpacken auf dem Server ist nicht damit überflüssig.

Komfortable Backups

Neben diesen Grundfunktionen bringt MySQLDumper noch einige Komfortfunktionen mit, die einem die Arbeit sehr erleichtern. So kann es große Datenbanken automatisch auf mehrere Dateien verteilen (die gewünschte maximale Größe der Teildateien ist dabei einstellbar). Derartige Sicherungsdateien können so auch per PHP-Skript wieder hochgeladen werden (z.B. per Web-FTP), auch wenn das gesamte Backup größer ist, als PHP für einen Upload erlaubt (auch dieser Wert wird vom Serveradministrator festgelegt und beträgt sehr oft nur 5 MB). Bei der Wiederherstellung eines solchen "Multipart-Backup" sucht MySQLDumper dann automatisch die korrekte erste Teildatei und lädt alle Teile selbständig nach. Die Verwaltung der Backup-Dateien ist komfortabel und beinhaltet neben dem automatischen Löschen veralteter Backups (nach Regeln, die man selber festlegen kann, wie z.B. Anzahl oder Alter der Backupdateien) einen automatische Versand der Backup-Datei per FTP auf einen anderen Server. Es kann auch eine E-Mail-Benachrichtigung über erfolgte Backupläufe senden und dabei sogar das komplette Backup als Mailanhang mitschicken - wobei man allerdings sicherstellen sollte, dass diese Mailanhänge die maximal erlaubte Größe nicht überschreiten. Auch ein automatisches, zeitgesteuertes ist in Verbindung mit einem Cronjob möglich.

Sicherheit

Zur Sicherheit bietet MySQLDumper die Möglichkeit einen Verzeichnisschutz zu erstellen. Dazu generiert es eine .htaccess-Datei mit dazugehöriger Passwortdatei und schützt damit das eigene Programmverzeichnis, sowie alle Unterverzeichnisse in denen es seine Konfiguration speichert und die Backups ablegt. Einen solchen Schutz sollte man unbedingt einrichten, denn schließlich ist MySQLDumper sonst frei zugänglich und jeder könnte an die Datenbankbackups.

Installation

Die Installation von MySQLDumper ist einfach und Dank guter Tutorials auf der Homepage auch für Anfänger zu bewältigen. Zunächst lädt man sich das aktuelle Paket (ich verwende zur Zeit MySQLDumper 1.23 pre-release) und entpackt es auf der lokalen Festplatte. Nun geht man mit seinem FTP-Client auf den eigenen Webspace und transferiert den ausgepackten Ordner mit dem MySQLDumper in das Wurzelverzeichnis seines Webspace. Anschließend ruft man dieses Verzeichnis in seinem Webbrowser auf (also z.B. www.meine-domain.de/mysqldumper) und wird dann durch die Konfiguration geleitet. Eine sehr gute und ausführliche Beschreibung findet man in den ausgezeichneten Video-Tutorials auf der MySQLDumper-Homepage. Wichtig ist, dass man vor der Konfiguration die Zugangsdaten für die Datenbanken bereit hält, die man sichern möchte. Hat man alles eingerichtet kann man eine erstes Backup machen. Dabei zeigt MySQLDumper sehr schön, wie es nach und nach alle Tabellen sichert und jeweils schrittweise die Zahl der pro Durchgang gesicherten Datensätze erhöht. War alles erfolgreich, so sieht man nun in seiner Backupverwaltung einen neuen Eintrag für das soeben durchgeführte Backup.  Verwaltungsseite von MySQLDumper mit einer Übersicht der vorhandenen Backups
Verwaltungsseite von MySQLDumper mit einer Übersicht der vorhandenen Backups

Fazit

MySQLDumper ist sehr durchdacht und überwiegend einfach in der Bedienung. Einmal konfiguriert sind Datenbankbackups mit einem Mausklick erledigt. Dank der guten Verwaltung hat man stets einen guten Überblick über alle vorhandenen Backups, deren Alter und Speicherplatzverbrauch. Die Möglichkeit, Backups automatisch auf einen anderen Server zu sichern, sorgt in Verbindung mit dem zeitgesteuerten Backup für ein sehr hohes Maß an Sicherheit. Links Homepage MySQLDumper (deutsch): http://www.mysqldumper.de/ Homepage phpMyAdmin (englisch): http://www.phpmyadmin.net/

Stichworte: