Mysql Rücksicherung per PHP bzw. Cronjob
Rücksicherung einer Mysql Datenbank automatisieren.
Frohe Weihnachten allerseits.
Ich möchte eine Datenbank automatisch (per CronScript) rücksichern. Zweck der Übung ist, dass ich eine Demoumgebung haben möchte, die quasi alle 24 Stunden zurückgesetzt wird. Dazu soll ein vorher erstellter Dump der Datenbank per CronScript zurückgesichert werden. Ich habe schon folgendes Ausprobiert:
Leider funktioniert das nicht. Der Webhoster ist All-inkl. Ich habe natürlich Zugriff auf CronJobs. Die PHP Datei oben soll der Cronjob werden...
Hat jemand eine Idee? Danke.
Frohe Weihnachten allerseits.
Ich möchte eine Datenbank automatisch (per CronScript) rücksichern. Zweck der Übung ist, dass ich eine Demoumgebung haben möchte, die quasi alle 24 Stunden zurückgesetzt wird. Dazu soll ein vorher erstellter Dump der Datenbank per CronScript zurückgesichert werden. Ich habe schon folgendes Ausprobiert:
<?php
exec('mysql -u dbuser -p dbname < ./dump.sql');
?>
Hat jemand eine Idee? Danke.
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 104718
Url: https://administrator.de/forum/mysql-ruecksicherung-per-php-bzw-cronjob-104718.html
Ausgedruckt am: 23.12.2024 um 06:12 Uhr
9 Kommentare
Neuester Kommentar
Zitat von @8schpi:
Also ich habe die obigen Zeilen mal ausprobiert. Ich bekomme jetzt den
Inhalt von der dump.sql Datei beim Aufruf der PHP Datei angezeigt.
Warum wird der Inhalt der Datei nicht in die Tabelle eingefügt,
sondern auf dem Bildschirm angezeigt?
Also ich habe die obigen Zeilen mal ausprobiert. Ich bekomme jetzt den
Inhalt von der dump.sql Datei beim Aufruf der PHP Datei angezeigt.
Warum wird der Inhalt der Datei nicht in die Tabelle eingefügt,
sondern auf dem Bildschirm angezeigt?
Sorry, readfile gibt den Inhalt sofort aus und nicht als Rückgabewert. Ersetze mal readfile gegen file_get_contents.
Auch wenn du Zugriff auf exec hast halte ich das zur Rücksicherung in diesem Fall nicht notwenig da PHP die nötigen Funktionen bietet.
Woruaf man Zugriff hat? Naja ausprobieren^^ oder mit phpinfo nachgucken welche Module geladen sind. Fehlermeldungen kann man sich anzeigen lassen indem man am Anfang der PHP Datei schreibt: error_reporting(E_ALL);
Damit werden alle Fehler/Warnungen angezeigt. Hoffe ich habe die Frage richtig verstanden...
Mit file_get_contents wird auch nix mehr angezeigt. Du könntest überprüfen mit mysql_error() ob ein Fehler beim ausführen des SQL Querys aufgetreten ist.
Also nach mysql_query()
Ich denke mal du hast auch alles ausgetauscht wie den Benutzernamen, Passwort und die Datei???
Da ich nicht weiß was in deiner SQL Datei steht kann ich auch nicht sagen ob das überhaupt funktionieren kann wie du dir das vorstellst. Wenn nämlich in deiner SQL alles INSERT's sind und die Datenbanken auch erstellt werden dann müsste man vorher die Datenbanken löschen.
Also nach mysql_query()
echo mysql_error();
Ich denke mal du hast auch alles ausgetauscht wie den Benutzernamen, Passwort und die Datei???
Da ich nicht weiß was in deiner SQL Datei steht kann ich auch nicht sagen ob das überhaupt funktionieren kann wie du dir das vorstellst. Wenn nämlich in deiner SQL alles INSERT's sind und die Datenbanken auch erstellt werden dann müsste man vorher die Datenbanken löschen.
Zitat von @8schpi:
es liegt nur noch an der form der sql datei... ich hab mal eine
manuelles "drop table 'wichtige_tabelle'" statt
des fil_get_contents('pfad_zur_sql_datei') geschrieben. dann
habe ich gemerkt, dass der rest funktioniert. jetzt muss ich nur noch
rausbekommen, wie ich die datei in die richtige form bekomme.
es liegt nur noch an der form der sql datei... ich hab mal eine
manuelles "drop table 'wichtige_tabelle'" statt
des fil_get_contents('pfad_zur_sql_datei') geschrieben. dann
habe ich gemerkt, dass der rest funktioniert. jetzt muss ich nur noch
rausbekommen, wie ich die datei in die richtige form bekomme.
Du weißt aber das dort der Pfad zu deinem SQL Dump drin stehen muss? ALso z.B. "./ordner./dumps./file.sql".
Wie ich schon sagte. Ich weiß nicht was in deiner SQL Datei steht vielleicht ist auch ein manuelles DROP Table nötig