Backup einer MySQL-DB

Webi

Angesehenes Mitglied
Hallo

Ich möchte gerne täglich von unserer MySQL-DB automatisch einen Dump erstellen lassen. Dieser sollte dann in ein Verzeichnis auf dem Server gespeichert werden. Die Krönung wäre noch, dass Files, welche älter als x Tage sind automatisch gelösch werden. Kennt jemand ein solches Script?

Gruss
Roland
 
Ich habe wohl mal ein primitives PHP-Script für sowas geschrieben, welches mysqldump aufruft und einfach alle Daten in eine Datei speichert.
Es erstellt Dateien mit einen bestimmten muster an Dateinamen, worin auch das Datum enthalten ist, alle Dateien, welche älter als X Tage sind, werden nach dem Backup aus dem Verzeichnis gelöscht.

Ich danke eine große Dokumentation ist da nicht von Nöte, dass Programm ist eigentlich selbsterklärend, wenn man Programmieren kann.

Man könnte das Script aber noch wesendlich verfeinern, indem es die Dateien auch gleich auf einen FTP Server schiebt oder ähnlichem.



MfG Sascha Ahlers mysqlbackup.tar.gz

 
QUOTE Man könnte das Script aber noch wesendlich verfeinern, indem es die Dateien auch gleich auf einen FTP Server schiebt oder ähnlichem.


Um mehr Sicherheit zu erreichen, könnte der FTP-Server sich periodisch auf den Produktions-Server einloggen, um das Backup abzuholen. So findet der Hacker auf dem Server nicht auch noch das Passwort zum FTP Server.
 
Wenn es um Sicherheit geht, wäre FTPS oder noch besser ein SFTP natürlich besser.

Nur hierbei ist es natürlich auch die Frage, wo liegt die größere Gefahr, wenn man vom FTP-Server auf den Datenbankserver zugreift oder umgekehrt. Beides können wohl nur limitierte Account sein, aber wenn ich sensible Daten in der Datenbank gespeichert habe, spielt das ggf. nur eine untergeordnete Rolle.



MfG Sascha Ahlers
 
Sascha, habe das PHP Script erfolgreich auf den Server geladen, es kann auch ohne Fehlermeldung direkt aufgerufen werden. (also stimmen Pfade und sql login, oder?)

Was muss ich noch machen, damit das Backup läuft? Dachte ich kann per cronjob das php File aufrufen, doch wenn ich es manuell aufrufe wird die DB nicht gebackupt...
 
Das Archiv besteht aus zwei Teilen, einmal dem PHP-Script (backup.php) und den Shell-Script (mysqlbackup.sh).


Teil 1 backup.php:
  1. Die Datei kann an einen beliebigen Platz gespeichert werden, drauf sollte aber am besten nur der Administrator zugriff haben (chmod 700)
  2. Die Datei öffnen und das Array $config an den System anpassen, die Variablen sollten weitesgehend selbsterklärend sein.
    $config['backup']['days'] → stellt den Zeitraum dar, wie lange ein Backup aufgehoben werden soll, danach wird es gelöscht, die Einheit ist in Tagen angegeben
    $config['backup']['path'] → hier wird der Ordner angeben in den die Dateien gespeichert werden sollen.
    $config['mysqldump'] → Stellt den Pfad zu dem Programm mysqldump dar
    $config['db'] → Die Zugangsdaten zu der Datenbank

Teil 2 mysqlbackup.sh:
  1. Die Datei in das Verzeichnis /etc/cron.daily kopieren
  2. Die Zugriffrechte anpassen für den cronjob Benutzer (in unseren Falle ein Administativer Account, wie root; chmod 700)
  3. Die Datei öffnen und anpassen:
    php → stellt den Pfad zu php dar
    script → stellt den Pfad zum Backup-Script dar (backup.php)


MfG Sascha Ahlers
 
QUOTE (Sandro Feuillet @ Do 24.8.2006, 16:29) Muss man das Programm "phpdump" separat downloaden oder ist das normalerweise bei php dabei?

Nein, es geht hier um mysqldump und gehört zum Mysql-Paket und sollte deshalb installiert sein, der Pfad muss nur angepasst werden.



MfG Sascha Ahlers
 
Zurück
Oben