Seite 1 von 3

MySQL Datenbank automatisch sichern lassen

Verfasst: 29.08.2006 15:09
von mgutt
Erstellt im Ordner "admin/" ein Verzeichnis z.B.: "backup/" (der Name ist egal. Umso komplizierter umso sicherer ;))

Dann erstellt Ihr in dem neuen Ordner eine Datei mit wieder einem beliebigen Namen. Im Beispiel "dump.php" genannt.

Dessen Quellcode schaut so aus:

Code: Alles auswählen

<?
exec("mysqldump -u USERNAME -p PASSWORT --add-drop-table TABELLENNAME >dump" . date('Ymd') . ".sql");
exec("gzip dump" . date('Ymd') . ".sql");
echo "fertig...";
?>
Dort ersetzt Ihr nun "USERNAME", "PASSWORT" und "TABELLENNAME" mit Euren MySQL-Daten.

Jetzt könnt ihr das Backuptool wie folgt aufrufen: (das erste Mal sollte man das in jedem Fall machen, damit man weiß, dass es wirklich geklappt hat)
domain.com/admin/backup/dump.php

Je nachdem wie groß Eure Datenbank ist, dauert es ein paar Minuten bis alle Daten gesichert wurden. Wenn "fertig..." auf dem Bildschirm erscheint, dann wurde in Eurem Verzeichnis eine Datensicherung angelegt.

Jetzt könnte man in einem bestimmten Rhythmus hingehen und die Datei von Hand aufrufen. Das ist uns aber zu lästig. Dafür gibt es Cronjobs. Könnt Ihr auf Eurer Seite keine Cronjobs erstellen? Dann gibt es dafür auch kostenfreie Dienste. z.B.: den von www.cronjob.de (Da der Zugriff dann über eine externe Seite erfolgt, sollte man das "backup/" Verzeichnis woanders hin verfrachten und auch ein anderes Passwort per .htaccess dort vergeben)

Dort gibt ihr dann die gesamte Url an und den Rhythmus, in dem die Datensicherung erfolgen soll. Das wars.. schon habt ihr eine automatische Datensicherung :D

Sicherheitshinweise:
Das Verzeichnis "admin" ist ein äußerst sensitives Verzeichnis, dass man mit allen Mitteln vor fremden Zugriff schützen sollte. Auch sollte man die Datensicherung schützen. Am besten das Verzeichnis "admin/" per .htaccess Passwortabfrage. Wie das geht steht hier:
http://www.phpbb.de/doku/kb/artikel.php ... l=htaccess

Auch sollte man im Ordner "backup/" eine index.htm anlegen mit folgendem Inhalt:

Code: Alles auswählen

<html>
<head>
<title></title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>

<body bgcolor="#FFFFFF" text="#000000">

</body>
</html>
Das ist aus Sicherheitsgründen ebenfalls notwendig, damit ein Hacker keinen Rootzugriff erhaschen kann (hören-sagen ;) ).

Re: MySQL Datenbank automatisch sichern lassen

Verfasst: 29.08.2006 16:34
von saerdnaer
mgutt hat geschrieben:Das ist aus Sicherheitsgründen ebenfalls notwendig, damit ein Hacker keinen Rootzugriff erhaschen kann (hören-sagen ;) ).
Jo, gut das du das "hören-sagen" dazu geschrieben hast, denn das ist absoluter Unsinn. ;-)

Kann man den Diensten auch nen Username/Passwort Kombination geben, die sie via HTTP Auth übergeben, damit nur sie die entsprechende Datei aufrufen können?

(Oder hat schon mal jemand versucht ne URL in der Form http://Username:Passwort@domain.com/adm ... p/dump.php einzugeben?)

MfG ah

Verfasst: 29.08.2006 19:35
von errt
Klingt ja gut. Aber kann man das auch mit anderen Befehlen als "exec" machen? Scheint so, als hätte mein Host das deaktiviert...

Verfasst: 15.09.2006 23:20
von subreal
Hallo zusammen!!

Ich vermisse hierbei die Angabe zum DB-Host

Code: Alles auswählen

<? 
exec("mysqldump -u USERNAME -p PASSWORT --add-drop-table TABELLENNAME >dump" . date('Ymd') . ".sql"); 
exec("gzip dump" . date('Ymd') . ".sql"); 
echo "fertig..."; 
?>
Wie setze ich den hier ein??

LG
Subreal

Verfasst: 15.09.2006 23:52
von Gumfuzi
errt hat geschrieben:Klingt ja gut. Aber kann man das auch mit anderen Befehlen als "exec" machen? Scheint so, als hätte mein Host das deaktiviert...
ev. mit system(), falls der aktiviert ist.

Noch was:
Wenn man die Sicherung mit einer Ausgabe einer ev. Fehlermeldung haben möchte, falls etwas nicht klappt, dann ist diese Variante geeignet:
http://www.phpbb.de/doku/kb/artikel.php ... =db_export
(ebenso steht dort auch der Import dabei)

Verfasst: 16.09.2006 00:42
von Mahony
Hallo
Wozu das Rad neu erfinden. Mit dem >>>MySQLDumper<<<
kann man schon seit jeher automatisierte Backups machen (per Cronjob) und man kann sich die fertigen Backups sogar an seine E-Mail Adresse senden lassen.




Grüße: Mahony

Verfasst: 16.09.2006 00:53
von Gumfuzi
damit hatte ich leider immer doppelte Einträge beim Rücksichern - k.A. warum, aber ich nehme nun das obige Skript, damit funzt es, und das schneller als der Dumper.

Verfasst: 16.09.2006 13:00
von S2B
subreal hat geschrieben:Ich vermisse hierbei die Angabe zum DB-Host

Code: Alles auswählen

<? 
exec("mysqldump -u USERNAME -p PASSWORT -h HOST --add-drop-table TABELLENNAME >dump" . date('Ymd') . ".sql"); 
[...]

Re: MySQL Datenbank automatisch sichern lassen

Verfasst: 25.09.2006 17:11
von thoha
mgutt hat geschrieben:Erstellt im Ordner "admin/" ein Verzeichnis z.B.: "backup/" (der Name ist egal. Umso komplizierter umso sicherer ;))

Dann erstellt Ihr in dem neuen Ordner eine Datei mit wieder einem beliebigen Namen. Im Beispiel "dump.php" genannt.

Dessen Quellcode schaut so aus:

Code: Alles auswählen

<?
exec("mysqldump -u USERNAME -p PASSWORT --add-drop-table TABELLENNAME >dump" . date('Ymd') . ".sql");
exec("gzip dump" . date('Ymd') . ".sql");
echo "fertig...";
?>
Dort ersetzt Ihr nun "USERNAME", "PASSWORT" und "TABELLENNAME" mit Euren MySQL-Daten.
Wie muss das Script aussehen, wenn ich eine ganze Datenbank und nicht nur eine Tabelle Backupen möchte?

Verfasst: 25.09.2006 18:28
von S2B