You are here

Datenbanken einfach und zuverlässig sichern mit mysqldumper

Ein Datenbank-Backup ist eine ebenso lästige wie wichtige Pflicht. Insbesondere vor dem Einspielen einer neuen CMS- oder Webshop-Version ist es ein absolutes Muss. Sehr häufig bieten die Provider hierfür ihren Webhosting-Kunden das allseits beliebte "Schweizer Taschenmesser" für mySQL den phpMyAdmin an.Mit diesem Programm lassen sich so ziemlich alle Arbeiten an und mit mySQL-Datenbanken erledigen - auch ein Backup lässt sich damit machen.Warum also ein eigenes Tool, nur um Backups zu machen? Nun, ganz einfach: Man kann auch mit einem schweizer Taschenmesser Äste schneiden oder sogar Bäume fällen. Wenn der Baum aber nicht gerade dünner ist, als ein Finger, so wird man doch sehr schnell überlegen, ob man nicht lieber ein spezielles Werkzeug zuhilfe nimmt - beispielsweise eine Axt oder Motorsäge. MySQLDumper ist ein solches Werkzeug. Damit gelingt auch die Sicherung sehr großer Datenbanken im Handumdrehen. Aber fangen wir von vorne an.

Mit dem Problem, dass bei der Sicherung großer Datenbanken bei Verwendung von phpMyAdmin auftritt:

Wie der Name schon verrät besteht phpMyAdmin aus PHP-Skripten. Diese werden nach einer bestimmten Laufzeit vom Webserver abgebrochen um dessen Ressourcen zu schonen. Dies geschieht häufig nach 30 Sekunden. Braucht das Skript länger als diese 30 Sekunden, so wird es vom Server beendet und das Backup wird nicht vollständig durchgeführt. Das gleiche gilt auch für das Wiedereinspielen eines Backups. Einen Ausweg bietet phpMyAdmin: Es gestattet neben der Sicherung einer kompletten Datenbank auch eine oder mehrere Tabellen in ein Dumpfile zu schreiben. Aber damit ist das Problem der Sicherung sehr großer Datenbanken nur aufgeschoben. Spätestens wenn eine einzelne Tabelle so groß geworden ist, dass es dem Skript nicht mehr gelingt diese zu sichern, ist guter Rat teuer.

Ist eine Sicherungsdatei zum Einspielen zu groß gibt es ebenfalls einen Trick: Man öffnet die Datei mit einem geeigneten Editor (z.B. PSPAD) und zerteilt sie von Hand in kleinere Einzelabschnitte. Wer das einmal gemacht hat, weiß wie mühsam und arbeitsintensiv das ist. Mit MySQLDumper gehört diese Strafarbeit für Admins der Vergangenheit an.

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 Tabelle aus. Dabei merkt es sich, wie weit es gekommen ist und wieviel Skriptlaufzeit noch übrig wären. Nun ruft sich selbst auf und erhält dadurch erneut die volle Skriptlaufzeit (30 Sekunden oder was der Serveradministrator zugestanden hat). Nun wird die Zahl der zu lesenden Datensätze um 10% erhöht und 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 die maximale Anzahl von 5.000 Datensätzen bei einem Durchlauf erreicht wurde. Damit wird der Timeout-Fehler elegant umgangen. Das gleiche Prinzip benutzt MySQLDumper auch beim Wiederherstellen der Daten aus einer Sicherungsdatei.

Während des Sicherns komprimiert MySQLDumper, so dass diese Platz sparend auf dem Server abgelegt werden. Das Skript für die Wiederherstellung kann direkt aus einer solchen gepackten Datei lesen. Ein Entpacken auf dem Server ist nicht erforderlich.

Neben diesen Grundfunktionen bringt MySQLDumper noch diverse Komfortfunktionen mit. So kann es große Datenbanken automatisch auf mehrere Dateien verteilen (die gewünschte maximale Größe der Teildateien ist dabei einstellbar). Bei der Wiederherstellung eines solchen "Multipart-Backup" sucht MySQLDumper automatisch die korrekte erste Teildatei. Die Verwaltung der Backup-Dateien ist komfortabel und beinhaltet neben dem automatischen Löschen veralteter Backups (nach selbst definierten Regeln, wie z.B. Anzahl oder Alter der Backupdateien),  einen automatische Versand der Backup-Datei per FTP auf einen anderen Server, oder eine E-Mail-Benachrichtigung über erfolgte Backupläufe. Dabei kann das Backup sogar als Mailanhang mitgeschickt werden - was natürlich nur bis zu einer bestimmten Größe funktioniert.Ein mitgeliefertes Perl-Skript gestattet sogar zeitgesteuerte, vollautomatische Backups in Verbindung mit einem Cronjob.

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 Programmverzeichnis, sowie alle Unterverzeichnisse in denen es unter anderem die Backups ablegt. Einen solchen Schutz sollte man übrigens unbedingt einrichten, denn schließlich ist MySQLDumper sonst frei zugänglich und jeder könnte an die Datenbankbackups. Also immer schön die Tür abschließen, dann haben Datenbankräuber ;-) keine Chance. Natürlich kann man einen solchen Verzeichnisschutz auch selber einrichten.

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 und deren Speicherplatzverbrauch. Ein unentbehrlicher Helfer.

http://www.mysqldumper.de/