MySQLRemoteBackup

Vorgeschichte bzw. was ist „MySQLRemoteBackup“?

MySQLRemoteBackup ist ein kleines PHP-Skript, welches eine schnelle und einfache Datensicherung einer MySQL-Datenbank ermöglicht. Der Unterschied zu „großen“ MySQL-Backup-Lösungen besteht darin, dass MySQLRemoteBackup dafür entwickelt wurde, eine entfernte (remote) und vor allem automatisierte Sicherung zu ermöglichen.

Im Laufe der Jahre haben sich bei mir viele Webprojekte (für mich selbst und für Kunden) angesammelt, die im Hintergrund eine MySQL-Datenbank laufen haben. Meistens sind es Installationen von Joomla, WordPress aber auch ein paar Eigenentwicklungen nutzen die MySQL-DB zur Datenspeicherung.
Das Problem bestand für mich immer darin, dass die Datenbanken auf unterschiedlichen Servern bei unterschiedlichen Providern liegen. Mal ist der externe Zugriff erlaubt, mal nicht. Eine manuelle Sicherung per phpMyAdmin o.ä. wäre zu aufwendig; die Lösung sollte eine direkte Sicherung von meinem NAS aus ermöglichen.

MySQLRemoteBackup basiert auf PHP-Code, der ursprünglich von David Walsh in seinem Blog veröffentlich wurde. Ich habe es für meine Zwecke adaptiert und ein bißchen erweitert. Dabei ist MySQLRemoteBackup nur ein Teil meiner Backup-Lösung. Das Skript selbst speichert keine Zugangsdaten zu den Datenbanken. Es wird auf einem Webserver abgelegt und anschließend von einem „Downloader“ aufgerufen.

Als Downloader verwende ich wget auf meinem NAS. Im Prinzip funktioniert das ganze aber mit jedem anderen Programm, welches Dateien aus dem Internet laden kann. Zu Testzwecken ist dies natürlich auch mit dem normalen Browser möglich.

Um wget herum habe ich eine Batchdatei gebaut, die die einzelnen Server abklappert und die Dateien auf meinem NAS ablegt. Die Batchdatei läuft zeitgesteuert per cron und sichert mittlerweile fast 30 Datenbanken für mich.

Quellcode

Für die Verwendung der hier vorgestellten Lösung übernehme ich keine Haftung! Ich bin nicht für evtl. Datenverluste o.ä. verantwortlich. Die Benutzung erfolgt auf eine eigene Gefahr.

Wenn Ihr MySQLRemoteBackup benutzt, wäre es schön, wenn Ihr einen kurzen Kommentar hinterlassen würdet. Danke!

Versionsgeschichte

1.0 – erste Veröffentlichung.

Installation

Die Datei mysqlrb.php muss per FTP, SSH o.ä. auf einen Webserver hochgeladen werden, der Zugriff auf die zu sichernde Datenbank(en) hat.

Konfiguration

In der Datei mysqlrb.php können zwei Parameter konfiguriert werden.

  • $allowedHost – Hostname des Rechners, der eine Sicherung ausführen darf. Da ich einen „normalen“ DSL-Anschluss habe, nutze ich einen dyndns.org-Account.
  • $parm – legt das PHP-Array fest, aus dem die Zugangsdaten ausgelesen werden sollen. Ich nutze $_POST, möglich wäre hier auch $_GET.

Backup mit wget erstellen

wget ist sozusagen das Standardprogramm, um auf einem Linux-Gerät Dateien per http(s) aus dem Internet herunterzuladen. In meiner Batchdatei zur Sicherung nutze ich folgende Syntax:

wget -O /pfad/zum/backup/dateiname.sql –post-data=’server=localhost&user=USERNAME&pass=PASSWORD&db=DBNAME‚ http://www.meinserver.com/mysqlrb.php

Die Datei „dateiname.sql“ im Verzeichnis „/pfad/zum/backup“ enthält dann nach dem erfolgreichen Download ein SQL-Skript, welches eine Datenbank komplett wiederherstellen kann.

Wiederherstellung

Die SQL-Datei, die man herunterlädt muss auf dem Ziel-MySQL-Server ausgeführt werden. Das kann mit den bekannten Tools wie phpMyAdmin etc. erfolgen.

Vorsicht bei der Wiederherstellung: das Skript macht immer ein DROP TABLE der wiederherzustellenden Tabellen.

Kommentar hinterlassen

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