mysqldump schlägt fehl

  • Moin moin,


    ich haben das Problem das Ich mit meinem Script kein Backup meiner Datenbank mehr erstellen kann, das komische dabei ist, das dies zu Anfang funktionierte, nun aber nicht mehr.


    Ich lasse die PHP Datei Online über "geplante Aufgaben" 1x am Tag selbstständig ausführen.



    Ich weiss echt nicht woran es liegen kann, habe auch schon andere Scripte aus dem Netz mal getestet aber nichts hat funktioniert.


    Nebenbei angemerkt ist das Ich mich fragen warum ein enfaches Mail Script genau so wenig funktioniert?! Aber das wäre eher so eine nebenbei geschichte! :)



    Ich danke euch für die Hilfe... ;)

  • Hallo,


    ich schließe aus erstgenanntem Skript mal, daß Du ein Webhosting hast, und somit keinen eigenen vServer mit einer mySQL Instanz betreibst;

    was bekommst Du denn da f. Fehler?

    schon mal nativ via SSH der terminal session probiert?


    zum zweiteren, ist das denn nicht beabsichtigt, weil mit welchem User meldest Du Dich da am SMTP an?

    kommt hier überhaupt ein SMTP ins Spiel, weil ein Webserver ist eher selten befugt zum Versenden von Mails;

    Grüße / Greetings

    Walter H.


    RS 1000 SAS G8 xRAM; RS 500 SSD G8; S 1000 G7; VPS 200 G8 Akt.; Webhost. 1000 m. 75%

  • Du hast doch SSH-Zugang zum Webspace. Warum lässt Du mysqldump nicht dort laufen?

    Über PHP bist Du an die dort vorgegebenen Limits gebunden und außerdem bekommst Du mit Deinem Skript ja keinen Fehlercode zurück. Falls etwas fehlschlägt, siehst Du es allenfalls in den Logs.

    Hm, SSH zum Webspace? Aber wie das eine Automatisierung erstellen?


    Ich habe nur ein Webhosting und kein VServer


    Für mich war die PHP Variante am schönsten, es hat ja auch zu Anfang super funktioniert, nun aber nicht mehr.


    In den Logs konnte Ich leider nichts darüber finden, in den Protokollen sehe Ich nur


    Code 200 auf die Datei, sie scheint also nicht fehlerhaft zu sein.



    Zu dem Mail Problem, es kommt kein SMTP ins Spiel, wollte es eigtl. so einfach wie möglich haben, benötige es auch nur um mir selbst per PHP Mails zu senden, geht nicht um wer weis wie viele Mails zu versenden.

  • Deine Fehlerbeschreibung kommt aktuell diesem Bild sehr nahe.


    Dein Skript in der Form würde mich als Hoster nicht mehr wirklich schalfen lassen. Besonders dein Funktionsaufruf system() mit einer nicht geprüfen Variable..., oder Debug Zeile wie "echo 'test'", besser kann mans machen! Aber wir sind hier nicht zum Kritik üben gekommen sondern zum helfen daher:


    Vernichte dieses Skript, bau dir einen Cronjob der dein MySQL Dump mit exportierten Variablen aufruft und fertig ist das Schiff. Da kannst du dir sogar eine Mail danach schicken lassen. Wenn du eventuell auch vorhast Sachen zu verifizieren, dann könntest du ein Bash-Skript drum rum stricken.


    P.S.: Welche Berechtigungen hat dein User überhaupt mit den du den Dump anstößt?

    In den Logs konnte Ich leider nichts darüber finden, in den Protokollen sehe Ich nur


    Code 200 auf die Datei, sie scheint also nicht fehlerhaft zu sein.

    What? Was für einen Code 200 bekommst für eine Datei?

  • Ich habe verschiedenste Scripte zum erstellen eines Backups per PHP ausprobiert, das ist das letzte was ich in der PHP Datei hatte, die funktion bleibt ja die selbe! ;)


    Ich werde mal schauen was für eine möglichkeit es per Cronjob und MYSQL Dump gibt, hätte aber trotzdem gerne verstanden warum das mit meinen Scripten von einem Tag auf den anderen nicht mehr funktioniert, ohne das Ich was geändert habe.

    Ich hatte an Berechtigungen nichts geändert, weil es ja funktionierte.


    Anbei hab Ich mal "Code 200" aus den Protokollen als Screenshot sngrehängt.

  • Kann es sein, dass die PHP funktion "system()" deaktiviert ist?

    Irgendwo in Plesk kannst du anschauen, welche funktionen deaktiviert sind. Stichwort "disable_functions"

    Meine (Netcup) Produkte: VPS 1000 G7 SE, S 1000 G7, VPS 200 G8 Ostern 2019, IPs, Failover..

  • Hm, SSH zum Webspace? Aber wie das eine Automatisierung erstellen?

    SSH (ich habe ein Webhosting Spezial Mini um 16 Cent - selbst da geht das):

    pasted-from-clipboard.png



    Wenn Du keine Keys angibst, sollte es mit ssh username hostingXXXXXX (Deine Hostingnummer) und entsprechendem Passwort auf Deinen Domainname gehen.


    Cronjob? -> Geplante Aufgaben.

  • Kann es sein, dass die PHP funktion "system()" deaktiviert ist?

    Irgendwo in Plesk kannst du anschauen, welche funktionen deaktiviert sind. Stichwort "disable_functions"

    Es war wie gesagt das letzte Script was Ich getestet habe.


    Anbei das eingtl. Script mit dem es auch funktioniert hatte, nun aber nicht mehr. Sorry.


  • Ich habe gerade gesehen, das in der PHP Info


    disable_functions exec,passthru,shell_exec,system,proc_open,popen,show_source

    steht, dann ist ja alles was Ich eigtl. dafür benötige (mal abgesehen vom Cronjob) disable.


    Wo bekomme Ich denn das wieder aktiviert? Auch im Webinterface?

  • Es könnte mit zunehmender Datenbankgröße auch ein Problem mit der Skriptlaufzeit sein. (Gzip braucht auch Zeit).

    Siehe https://www.php.net/manual/en/function.passthru.php - respektive konkret: https://www.php.net/manual/en/function.passthru.php#11298



    Wo bekomme Ich denn das wieder aktiviert? Auch im Webinterface?


    Normalerweise Im WCP /Plesk unter

    pasted-from-clipboard.png


    Aber da könnte es aktuell ein Problem geben - siehe https://forum.netcup.de/anwend…ec-aktivieren/#post131030

  • steht, dann ist ja alles was Ich eigtl. dafür benötige (mal abgesehen vom Cronjob) disable.

    Das habe ich mir schon fast gedacht.



    Aber da könnte es aktuell ein Problem geben - siehe https://forum.netcup.de/anwend…ec-aktivieren/#post131030

    Wie hier erwähnt, hat sich seitens Netcup da scheinbar etwas verändert.

    (hab selbst kein Webhosting und kann das deshalb nicht überprüfen)

    Aber scheinbar ist die option entfernt worden und durch einen Standardwert ersetzt worden.

    Wenn die Option immer noch fehlt würde ich vllt mal den Support anschreiben :/

    Meine (Netcup) Produkte: VPS 1000 G7 SE, S 1000 G7, VPS 200 G8 Ostern 2019, IPs, Failover..

  • Das ist wohl z.Zt. das aktuelle Problem, wenn Ich die Hauptdomain nehme dann funktioniert das Script wieder.


    Ich werde mir das mit Crone trotzdem nochmal anschauen aber habe es jetzt erstmal zum laufen bekommen.

  • Es könnte mit zunehmender Datenbankgröße auch ein Problem mit der Skriptlaufzeit sein. (Gzip braucht auch Zeit).

    so habe ich auch seit Threadstart gedacht, das script läuft in irgend ein limit. Zeit, Speicher, dumpspace (2x dB gröse, ungepackt+gepackt)

    jeder der einen Schreibfehler in meinem Post findet, darf ihn Kommentarlos behalten

    P.S. gilt auch für Schignaturen ;)

  • So hab es mal ganz einfach für dich zusammengefasst, ist natürlich Verbesserungswürdig hier aber die einfachste Variante:


    1. Via FTP auf den Webspace connecten

    2. In den Ordner /backups/ den Ordner "datenbank" erstellen

    3. Folgende Datei als backup-datenbank.sh in den Ordner /backups/ erstellen. (Natürlich $dbuser / $dbpassword usw... ersetzen durch die Werte der Datenbank)

    Shell-Script
    1. #!/bin/sh
    2. mysqldump --user=$dbuser --password=$dbpassword --host=$dbhost $dbname | gzip -c > /backups/datenbank/"backup"`date +"%d-%m-%Y_%H-%M"`".sql.gz"

    4. Ins WCP anmelden und auf der Rechten Seite "Geplante Aufgaben" aufrufen.

    pasted-from-clipboard.png

    5. Aufgabe hinzufügen

    pasted-from-clipboard.png

    6. Die erstellte .sh Datei müssen wir nun noch aufrufen:

    pasted-from-clipboard.png


    Hier kannst du dich nun auch via Mail informieren lassen wenn das Backup durchgeführt wurde.


    Vorteile:

    - Keiner von "außen" kann die Datei aufrufen.

    - Deine Backups sind nicht irgendwo im httpdocs Verzeichnis und somit auch nicht von außen erreichbar.

    - Du kannst dich informieren lassen ob alles gut lief oder Fehler auftratten.

    - Du umgehst die PHP Limits weil du es direkt ausführst.


    PS: Mit "Jetzt ausführen" kannst du es jederzeit Testen. Plesk zeigt dir dann an ob es ging oder nicht.