Plesk Onyx: PostgreSQL Backup mit Fehler

  • Hallo zusammen,


    ich nutze Plesk Onyx auf meinem Ubuntu 16.04 Server.


    Hier nun erstmal die Systeminfos:

    Code
    root@plesk:~# lsb_release -a
    No LSB modules are available.
    Distributor ID: Ubuntu
    Description:    Ubuntu 16.04.2 LTS
    Release:        16.04
    Codename:       xenial


    Code
    root@plesk:~# cat /usr/local/psa/version
    17.0.17 Ubuntu 16.04 1700161117.16


    Code
    root@plesk:~# psql -V
    psql (PostgreSQL) 9.5.6
    root@plesk:~# grep PGSQL /etc/psa/psa.conf
    PGSQL_DATA_D /var/lib/postgresql/9.5/main
    PGSQL_CONF_D /etc/postgresql/9.5/main
    PGSQL_BIN_D /usr/lib/postgresql/9.5/bin


    Aktuellste Updates sind sowohl für Ubuntu, wie auch für Plesk installiert.



    Nun bekomme ich beim automatischen Backup der postgresql Datenbank immer folgenden Fehler.


    Code
    Warning: postgresql "mysitehere_db"
    Failed to execute backup database
    Warning: postgresql "mysitehere_db"
    Not all the data was backed up into /var/lib/psa/dumps/domains/mysitehere.de/databases/mysitehere_db_2 successfully. /usr/lib/postgresql/9.5/bin/pg_dump: invalid option -- 'i' Try "pg_dump --help" for more information.


    Dies betrifft mehrere Datenbanken. Ich konnte bisher nur den folgenden Thread finden: Link
    Dort hat der Bug die Nummer PPP-27343 bekommen. Kennt jemand einen Workaround für den diesen Bug?


    Vielen Dank

  • "Leider" (zum Glück!) nutze ich kein Plesk.


    Sagen kann ich dir nur dass "pg_dump" garkeine -i Option unterstützt.
    Kannst du nicht zum Backuppen der Postgres-DB selber einen Cronjob einrichten der einfach pg_dump mit der nötigen Datenbank aufruft?
    Das sollte doch Problemlos ausreichen!


    Thomas

  • Hallo Thomas,


    danke für deine Idee, diese ist mir auch schon gekommen. Leider betrifft es ja mehrere Datenbanken, und dank Plesk werden die Backups auch automatisch auf einen FTP Server gespeichert und verschlüsselt. Es kann auch sein, dass jederzeit eine Datenbank hinzukommt, oder eben wegfällt. Daher ist mir das momentan zu aufwendig für eine Funktion, für die ich schon Geld bezahle.
    Der Plesk Support hat mich halt direkt an den Verkäufer der Lizenz, also netcup, weiterverwiesen.

  • Code
    Der Plesk Support hat mich halt direkt an den Verkäufer der Lizenz, also netcup, weiterverwiesen


    So kann man Probleme als Support natürlich auch loswerden. Zu 99% ist netcup jedenfalls nicht verantwortlich. Zumal es dein eigener Server ist.
    Das Problem ist jetzt hier nur: Plesk kostet Geld und deshalb kann ich es nicht mal schnell installieren und für dich ausprobieren.


    Wenn du dir natürlich die Mühe machst und mir ne Demomaschine baust würde ich schauen ob ich das Problem/Fehler finden kann. Irgendwie alle Aufrufe mitprotokollieren (atop?, strace) und dann schauen was genau da aufgerufen wird...


    Thomas

  • Hallo Cherok,

    Leider betrifft es ja mehrere Datenbanken, und dank Plesk werden die Backups auch automatisch auf einen FTP Server gespeichert und verschlüsselt. Es kann auch sein, dass jederzeit eine Datenbank hinzukommt, oder eben wegfällt.

    das man neu hinzugekommene/wegfallende DB mit erfassen will, kann man per Script die existierenden DB aus der template1 auslesen:
    pgsql -q -t -A -d template -c "select datname from pg_database where datname !='template0' "


    Die Option -i ist mindestens seit Postgres 8.4 deprecated, und wird bis m.E. 9.4 ignoriert, ab 9.5 gibt es sie nicht mehr ..
    Hilft dir nicht weiter, aber m.E. liegt der Fehler bei Plesk
    Gruesse, Gerd

  • Also '-i' bedeutet irgendwie "Ignore Version" und ist (wie thys zum Glück recherchiert hat) schon lange veraltet.


    Es sollte doch nicht so schwer sein im Programmcode von Plesk den Aufruf von pg_dump zu finden und das '-i' einfach auszukommentieren...


    Thomas


    PS: Ich gehe genauso wie thys davon aus dass Plesk dran schuld ist.

  • Hallo Gerd, hallo Thomas,

    das man neu hinzugekommene/wegfallende DB mit erfassen will, kann man per Script die existierenden DB aus der template1 auslesen:
    pgsql -q -t -A -d template -c "select datname from pg_database where datname !='template0' "


    Die Option -i ist mindestens seit Postgres 8.4 deprecated, und wird bis m.E. 9.4 ignoriert, ab 9.5 gibt es sie nicht mehr ..
    Hilft dir nicht weiter, aber m.E. liegt der Fehler bei Plesk
    Gruesse, Gerd

    danke für deinen Hinweis, ich werde mir das am Wochenende mal in Ruhe anschauen.

    Zitat

    Es sollte doch nicht so schwer sein im Programmcode von Plesk den Aufruf von pg_dump zu finden und das '-i' einfach auszukommentieren...

    Das Problem, was ich dabei sehe, ist, dass der Programmcode zum großen Teil entweder binär, oder halt obfuscated/verschlüsselt vorliegt.


    Mir ist schon bewusst, dass Plesk dort Mist gebaut hat X( . Sie haben ja scheinbar schon ein Ticket dafür (s.o.). Nur gibt es sonst keine hilfreichen Informationen dazu.


    Zu 99% ist netcup jedenfalls nicht verantwortlich. Zumal es dein eigener Server ist.

    Ich habe mich nochmal im HelpCenter von Plesk angemeldet und dort bekomme ich bei der Eingabe meiner Lizenz halt folgenden Hinweis:


    Zitat

    It was identified that your Plesk license was purchased not directly from Plesk but through one of the Plesk Resellers. In this case you need to ask for support from your license provider first. Plesk Partners (Resellers) are fully trained by Plesk and deliver best-in-the-industry support for Plesk products running on their infrastructure.


    Ich weiß natürlich nicht, was Plesk mit den Verkäufern (bsp. netcup) für Verträge abschließt, oder ob sie es sich damit nur einfach machen. Ich bin eher auf der Suche nach dem richtige Ansprechpartner.

    Das Problem ist jetzt hier nur: Plesk kostet Geld und deshalb kann ich es nicht mal schnell installieren und für dich ausprobieren.

    Danke für dein Engagement :). Es gibt hier eine kostenlose (vollständige) Testversion für 7 Tage. Alternativ kann ich dir auch die Arbeit der Installation abnehmen. Reicht eine vm (zum Download) oder lieber im Netz verfügbar?



    Viele Grüße

  • Hallo Thomas,


    PostgreSQL ist in der Standard-Installation nicht enthalten. Sodass du dies entweder über den Custom Installer mitinstallieren musst, oder halt nach dem One-Click-Installer über die Admin-Oberfläche nachinstallieren musst.


    Ich meine du musst mindestens folgendes machen:

    • Anmelden mit dem Link, der am Ende der Installation erscheint
    • Passwort ändern und Admin-Benutzerdaten pflegen
    • PostgreSQL nachinstallieren (falls nötig)
    • Eine Dummy-WebSeite einrichten
    • Dort eine Postgres-Datenbank erstellen
    • Dann den Backup-Manager aufrufen und ein Backup inkl. Datenbanken machen
    • etwas warten
    • Warnung über einen Fehler müsste auftauchen (ggf. neuladen der Seite nötig)


    Dies ist nun das grobe Vorgehen. Wenn du es etwas genauer brauchst, dann warte am Besten noch ein wenig. Ich dokumentiere die Schritte, außer die Erstanmeldung, mit Bildern. Aktiviert habe ich die Web Host Edition.

  • Datei '/usr/local/psa/PMM/agents/shared/Db/PostgresqlShellBackend.pm' ca. Zeile 64 auskommentieren und nochmal ohne '-i' unten drunter einfügen:

    Code
    #$self->_setDumpCmdline($self->_getCmd(AgentConfig::pgdumpBin(), "-Fc -b -i"));
      $self->_setDumpCmdline($self->_getCmd(AgentConfig::pgdumpBin(), "-Fc -b"));


    Ob das Backup vollständig ist musst du natürlich prüfen :)
    Bei mir gab es jetzt jedenfalls einen Databases Ordner (den gabs davor nicht).


    Sag wenn ich meinen Testserver für dich wieder runterfahren kann...


    Thomas

  • Hallo Thomas,


    Super :!:


    Ich weiß zwar nicht wie du das so schnell gefunden hast, mein Suchscript läuft immernoch...


    Du kannst deinen Server wieder herunterfahren. Habe es bei mir getestet und funktioniert.


    Danke.