Backup einer 250mb mySQL Datenbank

  • Hallo

    Ich habe meine Webseite mit Forum bei all-inkl.com gehostet. Leider ist dort ein automatisches Backup nicht im Tarif mit drin, deshalb muss ich mich selbst darum kümmern. Im Moment mache ich die Backups manuell mit dem mySQL Dumper, ich möchte das aber gerne automatisieren.

    Das Problem ist, dass Perl Scripte auf eine Laufzeit von 8 Sekunden begrenzt sind, das heißt ich kann das Backup nicht von all-inkl durch einen Cronjob starten lassen weil sich 250mb beim besten willen nicht in 8 Sekunden backuppen lassen. Welche Möglichkeiten gibt es noch ein Backup automatisch in Gang zu setzen??

    Danke für alle Tipps!

  • Die PHP Laufzeit ist kein Problem, das kann der mySQL-Dumper auch umgehen. Das Problem ist wie ich das ganze auslöse. Ich möchte ja nicht mehr manuell auf einen Button klicken müssen sondern das ganze soll sich selbst backupen. Das würde man ja normalerweise über einen cronjob machen, der kann aber nur Perl Scripte aufrufen und die sind in der Laufzeit auf 8 Sekunden begrenzt und können sich nicht selbst aufrufen, wie der mySQL-Dumper das macht.

    • Offizieller Beitrag

    Bist Du dir wirklich sicher, das der cronjob von all-inkl keine PHP Scripte starten kann oder liegt es eher daran, das auf deinem Webspace der exec-Befehl nicht freigeschaltet ist ?
    Versuche mal das Programm von 1und1 und setze bei der Dateiname noch ein "x" dazu zb backup.phpx
    Dann findet zwar eine Umschaltung auf PHP-CGI statt, aber eben mit Pausen, welches die 8 Sekunden von Perlscripte umgehen kann
    Ich kann im übrigen jedes beliebige Programm, egal ob perl oder php über cronjob starten

  • Habe gerade festgestellt, dass ich hier schon einen Account habe ^^ Schlimm wenn man sich in so vielen Foren registriert hat...

    Ich habe mir mal das 1&1 Script heruntergeladen, konfiguriert und es manuell ausgeführt:

    Code
    {Tabellen Name} ... 
    [B]Warning[/B]:  system() has been disabled for security reasons in [B]/{Pfad-zum-Script}/backup.php[/B] on line [B]18[/B]

    Zeile 18 ist:

    Code
    system(sprintf("mysqldump --opt -h $host -u $dbuser -p$dbpw $db $table | gzip > %s/$table.sql.gz",$path));

    Aber außerdem umgeht das Script mein Problem nicht, da es nur jede Tabelle einzeln sichert. Einer meiner Tabellen (Forenposts) ist aber alleine schon 180mb groß...

    Danke für die Hilfe, aber mit dem Script wird das wohl nichts denke ich..

  • Ich fürchte mir steht kein echter Cronjob zur Verfügung:
    [Blockierte Grafik: http://img9.imageshack.us/img9/8405/cronjobs.png]

    So wie ich das sehe kann ich da nur Scripte starten. Vielleicht gibt es eine Möglichkeit das ganze von einem externen Rechner zu machen?

    Code
    mysqldump --opt -h $host -u $dbuser -p$dbpw $db $table | gzip > %s/$table.sql.gz",$path

    Kann ich diesen Befehl nicht von einem anderen Rechner ausführen und den dort als Cronjob anlegen und der zieht mir dann das Backup?

  • Ich fürchte mir steht kein echter Cronjob zur Verfügung:

    Das ist ... sehr schwach :(

    Zitat

    Kann ich diesen Befehl nicht von einem anderen Rechner ausführen und den dort als Cronjob anlegen und der zieht mir dann das Backup?

    Ja, vorausgesetzt dein MySQL-Server lässt Zugriffe deiner MySQL-Nutzerkennung auch von extern zu. Wenn nicht: dann nicht.

  • So, ich habe das ganze dann mal mit diesem Befehl probiert:

    Code
    mysqldump --opt --quick --max_allowed_packet=1G -h *host* -u *User* -p*Passwort* *datenbank*  | gzip > /home/niklas/Desktop/testbackup.sql.gz

    Und diesen Fehler bekommen:

    Code
    mysqldump: Error 2013: Lost connection to MySQL server during query when dumping table `phpbb_posts` at row: 189102

    egal wie ich mit dem Optionen herumgespielt habe, immer dieser Fehler bei dieser Tabelle, immer bei Zeilen um 200.000. Die betreffende Tabelle ist 230 MB groß. Mit dem Windows Client mySQL Front lässt sich die Datenbank sichern, aber ich möchte eigentlich nicht immer Windows starten müssen, da kann ich ja dann auch den mySQL Dumper benutzen. Ich möchte das ganze eigentlich in meine Crontab eintragen und gut ist. Und wenn mysql Front das kann, muss das doch über die Linux Konsole auch gehen, oder?

    Danke!

    3 Mal editiert, zuletzt von Niklas (13. April 2009 um 12:45)