Datenbank Backup mit PHP und MySQL

Es ist mehr als wichtig, eine MySQL Datenbank mindestens einmal pro Tag zu sichern, auch die DB von WordPress. Der Provider „all-inkl.com“, bei dem dieses WordPress hier gehostet wird, hat hierfür ein Script vorgeschlagen, was perfekt funktioniert, um den gesamten Inhalt einer Datenbank als sogenannten Dump zu sichern.
Wenn eine Datenbank korrupt wird, Daten versehentlicht gelöscht werden oder andere Fehler auftreten, ist mitunter eine monatelange Arbeit an einem Blog zerstört. Das Thema Backup ist deshalb mehr als notwendig und verdient deutliche Aufmerksamkeit. Vorsorge treiben und nicht erst anfangen zu sichern, wenn das Kind in den Brunnen gefallen ist!
Zurück zum Dump: Es ist ein PHP Script, was sehr einfach gehalten ist!

  • Datenbank und Passwort setzen
  • Dumpfile definieren (hier dump_dbname_20110907_0015.sql, setzt sich zusammen aus DBName, Zeitstempel), dies ist natürlich nicht zwingend macht aber für die einfache Identifizierung durchaus Sinn
  • mit dem „EXEC-Befehl“ wird das MySQL Kommando ausgeführt
  • mit dem 2. „EXEC-Befehl“ wird der Dump komprimiert (Programm gzip)
<?php
####################################################################
// WordPress blog db
$db_name = "user";
$db_passwd = "password";
$sql_file = "dump_" . $db_name . "_" . date('Ymd_Hi') . ".sql";
exec("mysqldump -u $db_name -p'$db_passwd' --allow-keywords --add-drop-table --complete-insert --quote-names $db_name > $sql_file");
exec("gzip $sql_file");
$datei = $sql_file . ".gz";
####################################################################
?>

Die Besonderheit bei dem Script ist jetzt technisch bedingt bei dem Provider. Die Endung des Scriptes ist db_backup.phpx, denn im Script befinden sich „externe“ exec-Kommandos, die max. nur 30sec laufen dürfen, der exec Befehl wäre bei php Script nicht freigeschaltet. Es soll so vermieden werden, dass viele Scripte hängenbleiben und womöglich einen Webserver lahmlegen. Also in erster Linie ein Sicherheitskonzept.

Noch zu erwähnen: Der Provider (und andere natürlich auch) bieten cronjobs an, d.h. man kann zu bestimmten Zeiten solche Scripte starten, also z.B jede Nacht um 3 Uhr, alle 6 Stunden, nur Montags usw. Es bietet sich an, solche Backups zu automatisieren, also einen Webhoster nach cronjob-Möglichkeit fragen.

In einem weiteren Beitrag gehe ich auf auf die Versionsverwaltung der Dump-Files ein.


Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.

*