PostgreSQL Server fährt nicht richtig herunter

Hinweis: In dem Thema PostgreSQL Server fährt nicht richtig herunter gibt es 5 Antworten. Der letzte Beitrag () befindet sich ganz unten auf dieser Seite.
  • Ich habe openSUSE 13.2 vor einigen Tagen neu installiert.
    Anschließend habe ich den PostgreSQL Server aus dem Standard-Repository installiert.
    Ich habe den Server mit chkconfig --set postgresql on aktiviert. Ich kann den Dienst auch problemlos mit
    systemctl start postgresql.service bzw. systemctl stop postgresql.service starten und stoppen.


    Wenn ich das Betriebssystem herunterfahre und wieder neu starte, steht in der Postgres Log-Datei folgende Meldung:

    Code
    2014-11-12 20:36:08 CET   LOG:  Datenbanksystem wurde unterbrochen; letzte bekannte Aktion am 2014-11-12 20:25:01 CET
    2014-11-12 20:36:08 CET   LOG:  Datenbanksystem wurde nicht richtig heruntergefahren; automatische Wiederherstellung läuft


    Dies ist aus meiner Sicht kein gutes Zeichen, bevor ich echte Daten in der Datenbank speichere, würde ich das gerne behoben haben. Was kann ich tun, um das Problem zu lösen?

  • Versuche mal mit dem alten Startup-Script

    Code
    /etc/init.d/postgresql


    Ich befürchte, der Server benötigt eine erstmalige Initialisierung (wie MySQL/MariaDB).


    Aktivierung vom Server kannst Du auch über

    Code
    systemctl enable postgresql.service

    Für den Inhalt des Beitrages 74312 haftet ausdrücklich der jeweilige Autor: toxa

  • Vielen Dank für die Antwort.
    Die Datenbank ist bereits initialisiert und ich kann problemlos über psql darauf zugreifen. Auch über das Init-Script kann ich den Dienst problemlos starten und stoppen.
    Beim Herunterfahren des Betriebssystems scheint der PostgreSQL Server aber nicht korrekt heruntergefahren zu werden. Das automatische Starten des Dienstes funktioniert nach dem Neustart, allerdings steht im Logfile die oben stehende Meldung das eine automatische Wiederherstellung erfolgt, da die Datenbank nicht richtig heruntergefahren wurde.
    Aus irgendeinem Grund wird der PostgreSQL Prozess nicht sauber beendet sondern einfach gekillt.
    Mir fehlt aber das Wissen, um dies genauer zu untersuchen.

  • Wenn der PostgreSQL Server (manuell) korrekt beendet wurde, startet der Dienst völlig normal:


    Code
    linux-fmjw:~ # systemctl status postgresql.service
    postgresql.service - LSB: Start the PostgreSQL master daemon
       Loaded: loaded (/etc/init.d/postgresql)
       Active: active (exited) since Thu 2014-11-13 21:08:09 CET; 57s ago
      Process: 1544 ExecStart=/etc/init.d/postgresql start (code=exited, status=0/SUCCESS)
    
    
    Nov 13 21:08:08 linux-fmjw su[1663]: (to postgres) root on none
    Nov 13 21:08:08 linux-fmjw su[1663]: pam_unix(su-l:session): session opened for user postgres by (uid=0)
    Nov 13 21:08:09 linux-fmjw postgresql[1544]: Starting PostgreSQL 9.3.5 ..done


    Nach einem fehlerhaften Herunterfahren, wird angezeigt, dass der Dienst möglicherweise bereits läuft. Ich vermute, dies liegt am PID-File, welches beim missglückten Herunterfahren liegen geblieben ist.

  • Ich habe mich mittlerweile noch etwas weiter mit dem Problem beschäftigt.
    Der PostgreSQL Server wird offensichtlich noch über das init Script gesteuert. Ich habe ein paar Debug-Ausgaben in das Init-Script eingefügt, um festzustellen was passiert.
    Das Init-Script enthält folgenden Code:

    Code
    if pg_ctl status -s -D $DATADIR >/dev/null
        	then
            	pg_ctl stop -s -D $DATADIR -m fast &> /dev/null
    	else
            	rc_failed 0
    	fi


    Beim Herunterfahren liefert pg_ctl status einen Fehler, weil bereits zu diesem Zeitpunkt der Dienst nicht mehr läuft! Ich habe dies mit weiteren Debug-Ausgaben überprüft, der postgres Prozess wird tatsächlich schon vorher gekillt. Jetzt bräuchte ich einen Tipp, wie ich herausfinden kann, wer den Prozess killt. Kann jemand helfen?