Hallo Freunde des Mysqldumpers
Da das Forum von Daniel Schlichtholz (dem Programmierer des Mysqldumpers) nun leider nicht mehr online ist, und daher leider auch einige Tutorials, stelle ich hier mal das Tutorial (aus dem nicht mehr erreichbaren Forum) zur korrekten Konfiguration des Perl Cronscripts zur Verfügung.
Erklärung wofür man das Perl Cronscript benötigt: Das Perl Cronscript wird benötigt, um automatisierte Backups per Cronjob anfertigen zu können.
...und los geht es mit dem Tutorial
Crondump-Einstellungen für das Perlscript
Grundvorraussetzung ist natürlich, dass Perl von Deinem Webspace auch verstanden und ausgeführt wird. Ob die Ausführung eigener Perlscripte im Lieferumfang Deines Hosting-Vertrages liegt, musst Du selbst wissen oder Deinen Hoster fragen.
Wenn Du beim Ausführen der Perldateien einen Download angeboten bekommst oder Du den Quelltext siehst, dann wird Perl definitiv nicht ausgeführt. Erkundige Dich dann bei Deinem Hoster, ob und wie Du in den Genuß von Perl kommen kannst.
- config.gif (37.51 KiB) 42113 mal betrachtet
- config.gif (37.51 KiB) 42113 mal betrachtet
Dateiendung des Scripts: Hier wird festgelegt, welche Endungen die Perlskripte haben. Im Auslieferungszustand ist diese "
pl".
Manche Provider lassen aber nur Skripte mit der Endung "
cgi" zu. In diesem Fall müssen die Perlskripte manuell umbenannt werden. Damit der Mysqldumper ( MSD ) weiß, wie die Skripte heißen und man diese aus der Web-Oberfläche heraus starten kann, muss die richtige Endung hier eingestellt werden.
Pfad der Perlskripte: Im Auslieferungszustand ist dies der Unterordner
msd_cron. Erlaubt sind absolute und relative Pfadangaben, d.h.: fängt der Pfad mit
/ an, ist es eine absolute Pfadangabe, die vom Web-Root ausgehend ist. Fängt der Pfad direkt mit einem Namen an, so ist dies eine relative Pfadangabe und bezieht sich auf Unterordner des Mysqldumper ( MSD ) Hauptverzeichnisses. Darfst Du Perlskripte nur in einem eigenen cgi-bin-Ordner ausführen, der oberhalb des Web-Roots liegt, dann wäre die richtige Adressierung des Ordners "
./../../cgi-bin/".
Lese auch den unteren Artikel über die Grundvoraussetzungen.
Textausgabe: Wenn diese ausgeschaltet ist, sendet das perlskript keinerlei Textausgaben außer der Header-Anweisung, die Bedingung ist.
Manche Crons verweigern die Ausführung von Skripten mit Textausgabe.
Komplette Ausgabe loggen: Unabhängig von der Einstellung der Textausgabe wird hier bestimmt, ob alle Aktionen des Dumpers in ein ausführliches Logfile (complette_log) geschrieben werden sollen. Dieses kann man unter "
Log/Complete-Perl Log" einsehen. Hier findet man ausführliche Informationen im Fehlerfall.
Datenbank: Hier wird vorgegeben, ob eine bestimmte Datenbank, alle Datenbanken oder gemäß den Multidump-Einstellungen mehrere, ausgewählte Datenbanken gesichert werden sollen.
Ob die erstellten Backups danach per E-Mail verschickt oder per FTP auf einen anderen Server übertragen werden, hängt von den Einstellungen im jeweiligen Bereich ab.
Zusatzinformationen zum lauffertigen Perlskript
Perlskripte müssen bestimmte Bedingungen erfüllen, damit sie laufen.
1. Perlskripte müssen immer im Ascii-Modus übertragen werden. Der Grund dafür sind die Zeilenumbrüche, die im UNIX-Format sein müssen. Editiert man die Skripte in einem Windowseditor, so werden i.d.R. Windows-Zeilenumbrüche geschrieben. Der Ascii-Transfermodus konvertiert diese Zeilenumbrüche ins UNIX-Format.
Hat man einen Editor, der die Dateien im UNIX-Format speichern kann, spielt der Transfermodus keine Rolle.
2. Perlskripte müssen den
chmod-Wert 755 haben. Dies gilt auch für den Ordner, in dem sie sind.
3. Ist Perl auch außerhalb des
cgi-bin erlaubt, kann man das Perlskript im Ordner
msd_cron lassen, ansonsten muss man die Skripte ins
cgi-bin kopieren (dies gilt für die meisten Serverkonfigurationen)
Um das Perlskript lauffähig zu machen, geht wie folgt vor:
1. Rufe den Mysqldumper ( MSD ) im Browser auf
2. Wähle im Menü "
Backup" und klicke auf
Backup Perl.
3. kopiere die Pfadangabe hinter "
Eintrag in crondump.pl für absolute_path_of_configdir"
4. öffne das Skript
crondump.pl im Editor.
5. Suche die Zeile
my $absolute_path_of_configdir="";
6. Setze den Cursor zwischen die
"" und füge den kopierten Pfad ein.
7. Speicher
8. Kopiere das Skript sowie die beiden Testskripts per Ascii-Modus ins
cgi-bin-Verzeichnis
9. Änder den chmod aller Skripte auf
755
10. Trage im Mysqldumper ( MSD ) unter
Konfiguration /
Cronskript unter "
Pfad der Perlskripte" ein:
/cgi-bin/
11. Gehe auf die Backupseite.
12. Prüfe die Lauffähigkeit mit "
Perl testen" - es sollte funktionieren.
Sollte es nicht gehen, stimmen die Voraussetzungen nicht.
Eine fehlerhafte Konfiguration erkennt ihr am 500er-Fehler.
Wenn der Browser die Skripte zum Download anbietet oder den Quelltext anzeigt, so läuft kein Perl in dem besagtem Verzeichnis.
Das
cgi-bin-Verzeichnis muss ebenfalls
chmod 755 haben.
Falls alles nicht hilft, müsst Ihr Euch an den Provider wenden.
Zusatz: Einige Provider belegen Perlskripte ebenfalls mit einem Timeout nach x sek. Wenn das Perlskript mittendrin abbricht, ist dieses Timeout erreicht. Im Perllogfile (complete_log) muss als letzte Zeile "#EOS" stehen (End of Script). Fehlt diese Angabe und die letzten Einträge sind Punkte, so ist es aufgrund dieser Zeitbegrenzung abgebrochen worden.
Der Weg zum automatisierten Cronjob
Nichts liegt näher als das Perlskript zu automatisieren, d.h. es in bestimmten Zeitintervallen aufzurufen.
Dieses kann das Skript nicht leisten, es wird vom Server vom sogenannten Cron erledigt. Dies ist ein kleines Programm, das Jobs nach bestimmten Regeln aufruft.
Wer Cronjobs auf seinem Server einrichten kann, der kann das Perlskript in die Crontab eintragen. Hierfür gibt es mehrere Möglichkeiten:
1. Über Oberflächen wie Webmin, Confixx, ... - dort ist der Eintrag leicht
2. über die Konsole: crontab -e
Dazu muss man das Format der Einträge kennen. Das Format lautet:
Minute(n) Stunde(n) Tag(e) Monat(e) Wochentag(e) Kommando(s)
Soll das Skript z.B. morgens um 5 Uhr ausgeführt werden, lautet der Eintrag
0 5 * * * Kommando
Braucht man mehrere Aufrufe, z.B. Aufruf alle 10 min., geht das so:
0,10,20,30,40,50 * * * * Kommando
Ist der Cronjob auf dem gleichen Server, so lautet das Kommando:
entweder, wenn cgi-bin auf diesem Server als Alias konfiguriert ist:
perl /pfad_zum_webroot/cgi-bin/crondump.pl config=mysqldumper.conf
oder
perl /pfad_zu_mysqldumper/msd_cron/crondump.pl config=mysqldumper.conf
Wer keinen Cronjob einrichten kann, der kann sich an externe Cronjobanbieter wenden. Hier muss man das Kommando wie im Browser angeben:
Code: Alles auswählen
http://www.meinedomain.de/cgi-bin/crondump.pl?config=mysqldumper.conf
Edit DSB:
Da immer wieder danach gefragt wird -> es gibt keine zuverlässige PHP-Alternative für das Automatisieren des Backups durch Aufruf einer PHP-Datei (Timeout-Problematik). Einige wollen besonders "clever" sein und rufen trotz unserer Erklärungen per Cronjob die Datei dump.php auf. Ein Cronjob ist kein Browser und so werden die Selbstaufrufe, welche durch Javascript realisiert sind, nicht ausgeführt, da dies normalerweise im Browser passiert. Das geht natürlich in die Hose und liefert keinesfalls ein vollständiges Backup!
Klipp und klar: kein Perl = keine Automatisierung des Backup-Vorgangs durch einen Cronjob!
Emailversand mit MIME::Lite
Das Perl-Zusatzmodul Mime::Lite wird vom Crondump.pl-Script des MySQLDumpers benötigt, um die Backups oder Textnachrichten per E-Mail zu verschicken. Auch wenn der Versand aus der Web-GUI des Dumpers heraus funktioniert, kann es sein, dass dies im Perlskript nicht funktioniert. Perl und PHP sind 2 unterschiedliche Sprachen, die nichts mit einander zu tun haben.
Ob das Modul Mime::Lite auf dem Server installiert ist, kann man unter "Backup/Backup Perl/ Perl Module testen" in Erfahrung bringen.
Ist das Modul nicht installiert, so wird der E-Mail-Versand beim Aufruf des Perlskripts automatisch deaktiviert. Dies kann man unter "Log/Perl Complete Log" nachlesen.
Wer über den Perltest im MySQLDumper festgestellt hat, dass auf seinem Webspace kein Mime::Lite zur Verfügung steht, kann es selbst installieren.
Es gibt 2 Wege:
1.Man installiert es über cpan oder manuell in den Perl-Modules-Pfad. Das ist der sicherste Weg und es gibt keine Probleme.
2.Man kopiert es in den cgi-bin-Pfad (MIME/Lite.pm)
Bei der zweiten Lösung gibt es keine Probleme, wenn man das Script im Browser aufruft, da Mime::Lite immer im aktuellen Pfad mitgesucht und so auch gefunden wird.
Wird das Script aber über einen Cronjob aufgerufen, so ist der Pfad zu Mime::Lite nicht bekannt. Für diesen Fall kann man den Pfad händisch in der Datei crondump.pl angeben. Dafür gibt es die Zeilen
Code: Alles auswählen
my $absolute_path_of_configdir="";
my $cgibin_path=""; # this is needed for MIME::Lite if it is in cgi-bin
my $default_configfile="mysqldumper.conf";
Die 2.Zeile ist die entscheidende! Dort muss man den Pfad des cgi-bin-Verzeichnisses eintragen (
absoluter Pfad, mit "/cgi-bin" und ohne Slash und ohne den Unterordner MIME am Ende!).
Dieser wird dann dem Suchpfad hinzugefügt und es funktioniert.
Downloadlink von Mime::Lite:
http://search.cpan.org/dist/MIME-Lite/ (direkter Download-Link >>>
http://search.cpan.org:80/CPAN/authors/ ... 030.tar.gz ).
Oder direkt hier im Anhang, die Version MIME-Lite-3.030 als gz-Datei und als zip-Datei
Und hier eine schöne Übersicht von RPM-Paketen für die händische Installation:
http://rpmfind.net/linux/rpm2html/searc ... -MIME-Lite
Noch ein Tipp von Hamlet für die Installation unter Debian:
Can't locate Email/Date/Format.pm
Nach einem Tipp von Draconknight
Draconknight hat geschrieben:Sollte folgende Fehlermeldung "Can't locate Email/Date/Format.pm ..." am Ende der Cronausführung stehen kann man sich das Modul Format.pm hier herunterladen:
http://search.cpan.org/~rjbs/Email-Date ... /Format.pm . Hier einfach den Ordner EMail aus dem Verzeichnis lib hochladen in das Verzeichnis CGI-BIN. Dann sollte der Mailversand mit SMTP funktionieren
Für den Fall, dass ihr die Datei dort nicht findet, oder diese irgendwann mal entfernt wird, stelle ich diese mal hier zur Verfügung (als gz-Datei und als zip-Datei).
Grüße: Mahony