Artikel mit dem Tag "Backup"

MySQLDu in neuer Version 1.1

Meine kleine MySQL-Backup-Lösung MySQLDu gibt es in der neuen Version 1.1.

Neben zwei kleinen Änderungen ist die neu hinzugefügte FTP-Unterstützung interessant. Backups können jetzt automatisch auf einen FTP-Server hochgeladen werden.

MySQLDu 1.1 herunterladen

Share
Geschrieben von Philip Ehret am 16.08.2010 | Kommentare weiterlesen...

Automatisches MySQL-Backup per Mail

Wem seine Daten lieb sind, der sichert sie häufig. Ob Wöchentlich, täglich oder stündlich hängt dabei von der Änderungsrate ebendieser ab, völlig unabhängig davon ist aber, dass die manuelle Erstellung von Backups kostbare Zeit kostet, die anderweitig besser investiert wäre.

Bei Internetprojekten ist die frei verfügbare MySQL-Datenbank mittlerweile ein Standard, administriert wird sie meistens mit phpMyAdmin, einem ebenso kostenlosem Web-Interface. Wer MySQL-Datenbanken normalerweise sichert, der erstellt in phpMyAdmin ein Datenbank-Dump und lässt es sich wahlweise als Textdatei oder in einem Archiv verpackt liefern. Doch aufgrund der nötigen Autorisierung am Server dauert die Erstellung schon einige Zeit, wieso da nicht einfacher? Mit einem automatischen Backup zum Beispiel.

Mithilfe eines Cronjobs, dem Tipp, wie man mit wget ein PHP-Script aufruft und MySQLDu lässt sich einfach eine Backup-Lösung erstellen. Wie das geht wird im Folgenden erklärt.

Laden wir zunächst die aktuelle Version von MySQLDu (1.0) herunter und entpacken das Archiv auf den Webserver, auf dem auch die MySQL-Datenbank liegt.

Als nächstes löschen wir die Dateien testoutput.php, testmail.php, testfile.php, msdu.sql und das Unterverzeichnis dump/, da diese entweder zu Testzwecken dienen oder für die Sicherung per Mail nicht erforderlich sind.

Ganz wichtig ist, dass das Unterverzeichnis tmp/ durch den Webserver-Benutzer schreibbar ist (am Besten setzen Sie die Rechte auf 0777).

Jetzt erstellen wir eine neue Datei cronbackup.php mit folgendem Inhalt:

<?php
	define("MYSQLDU_MODE","mail"); // legt den Mail-Modus fest

	// Datenbankzugangsdaten
	define("MYSQLDU_DB","");
	define("MYSQLDU_USER","");
	define("MYSQLDU_PASSWORD","");
	define("MYSQLDU_HOST","localhost");	

	// Mail-Optionen
	define("MYSQLDU_MAIL_FROM","noreply@philip-ehret.de");
	define("MYSQLDU_MAIL_FROMNAME","MySQLDu V!version");
	define("MYSQLDU_MAIL_TITLE","MySQL dump of !database on !d.!m.!Y (!H:!i:!s)");
	define("MYSQLDU_MAIL_TEXT","Hi there, this mail contains your dump of database !database created by MySQLDu V!version on !d.!m.!Y (!H:!i:!s).\n".
		"See attached file!\n\n".
		"Thanks for using MySQLDu (http://philip-ehret.de/projekte/mysqldu/)\n".
		"See also mysqldump.php from Huang Kai (http://atutility.com/software/mysqldumpphp/) on which MySQLDu is based on\n".
		"This mail was automatically generated and sent by PHPMailer(http://phpmailer.worxware.com/)");
	define("MYSQLDU_MAIL_SENDTO","mail@philip-ehret.de");
	define("MYSQLDU_MAIL_ATTACHMENT_NAME","!server.!database.!date.dump.sql");

	require_once("mysqldu-1.0.php");
?>

Wichtig ist, dass Sie die Konstanten MYSQLDU_USER, MYSQLDU_HOST, MYSQLDU_PASSWORD, MYSQLDU_DB an die Zugangsdaten Ihrer MySQL-Datenbank anpassen und MYSQLDU_MAIL_FROM und MYSQLDU_MAIL_SENDTO passend setzen (Das erste ist die E-Mail-Adresse, die später als Absender der Backup-Mail erscheint, das zweite die E-Mail-Adresse, an die das Backup gesandt werden soll).

Die Konstanten MYSQLDU_MAIL_TITLE und MYSQLDU_MAIL_TEXT können Sie nach belieben anpassen, mögliche Platzhalter finden Sie in der mysqldu-1.0.php in der Variablen $MYSQLDU_REPLACE_ARRAY.

Rufen Sie das Script jetzt einmal mit Ihrem Browser auf. Die Ausgabe sollte bei Erfolg die folgende sein. Eventuell öffnet Ihr Browser auch einen Download-Dialog, die heruntergeladene Datei enthält dann die Ausgabe.

{"status":"success","text":"Mail was successfully delivered"}

Es handelt sich hierbei um eine JSON-codierte Ausgabe. Das ist deswegen so, damit andere Scripte, die das Backup-Script aufrufen könnten, die Rückmeldungen einfach verarbeiten können.

Sollten Sie eine andere Ausgabe erhalten, so sehen Sie sich den JSON-codierten Fehlertext an. Dieser gibt Rückschlüsse darauf, was falsch läuft. Überprüfen Sie die Schreibrechte für das Unterverzeichnis tmp/ und stellen Sie sicher, dass Sie die Datenbankzugangsdaten korrekt eingegeben haben.

Wenn die Ausgabe stimmt, gehen Sie in das E-Mail-Postfach der für MYSQLDU_MAIL_SENDTO angegebenen E-Mail-Adresse. Dort sollte bereits eine E-Mail auf Sie warten, welche die Datenbanksicherung als Anhang enthält.

Um das E-Mail-Backup jetzt auch noch vollautomatisch zu erhalten, führen Sie sich den Artikel zur Ausführung eines PHP-Scriptes mithilfe eines Cronjobs zu Gemüte, welcher nicht nur für Plesk seine Gültigkeit hat.

Meine persönlichen Datenbanken sind zum Großteil in Unicode, da das etliche Vorteile bietet, welche den gegenüber anderen Datencodierungen höheren Speicherverbrauch meiner Meinung nach durchaus rechtfertigen.
Sollten Sie eine andere Codierung haben und die Dump-Datei fehlerhaft sein, versuchen Sie das Problem zu beheben, indem Sie an den Anfang der cronbackup.php folgenden Code einfügen:

define("MYSQLDU_UTF8",0);
Share
Geschrieben von Philip Ehret am 13.08.2010 | Kommentare weiterlesen...