Der Postgres-Server startet nicht, es wird kein Protokoll erstellt.


33

Ich starte eine Postgres 9.3-Instanz auf einem Ubuntu 12.04-Server:

~# service postgresql start 

 * The PostgreSQL server failed to start. Please check the log output.
                                                                     [fail]

Der Start schlägt fehl, aber es bleibt kein Protokoll, diese Datei ist leer:

tail /var/log/postgresql/postgresql-9.3-main.log 

und das sind keine anderen Dateien in diesem Verzeichnis: / var / log / postgresql /

Was ist der beste Weg, um dies zu beheben?


Ist dies eine neue PG-Installation oder haben Sie gerade ein Upgrade durchgeführt? Überprüfen Sie, ob der Postgres-Benutzer Rechte an der PG-Konfigurationsdatei und der Protokolldatei hat
LinuxDevOps

3
Versuchen Sie, postgres auf die gleiche Weise wie Ihr Skript auszuführen (normalerweise su - postgres; /usr/local/pgsql/bin/postgres -D /usr/local/pgsql/dataund sehen Sie, was es Ihnen bietet. Möglicherweise müssen Sie den Benutzernamen und die Pfade in Abhängigkeit von Ihrem Setup ändern.
Jenny D sagt Reinstate Monica

Zusätzlich zu dem, was @JennyD gesagt hat, möchte ich -d 3den postgresBefehl ergänzen . Dies ermöglicht eine umfangreichere Debugging-Ausgabe, die in das Protokoll geschrieben wird. Sie können die Debugging-Ausgabe verringern, indem Sie sie auf 1 oder 2 ändern, oder erhöhen, indem Sie sie auf 4 oder 5 ändern which pgsql.
Zymhan

Wie und woher wurde PostgreSQL auf dem Server installiert? Befindet sich etwas in den Systemprotokollen , z. B. / var / log / syslog, / var / log / messages usw.?
Craig Ringer

6
Ich verstehe nicht, warum diese Frage geschlossen wurde.
Guettli

Antworten:


53

Versuchen Sie es manuell mit aktiviertem Debug. Dies führt dazu, dass es im Vordergrund ausgeführt wird und alle Fehlermeldungen als Standardfehler ausgegeben werden, während gleichzeitig die Ausführlichkeit erhöht wird.

Ich glaube, dies wird die richtige Befehlszeile für PostgreSQL 9.3 unter Ubuntu sein, aber es könnte einige geringfügige Anpassungen erfordern (Hinweis: Die Zeile ist aus Gründen der Lesbarkeit geteilt; Sie können sie zu einer einzelnen Zeile (ohne umgekehrten Schrägstrich) kombinieren, wenn Sie möchten):

/usr/lib/postgresql/9.3/bin/postgres -d 3 -D /var/lib/postgresql/9.3/main \
   -c config_file=/etc/postgresql/9.3/main/postgresql.conf

Der Anfang ist die Position der postgresBinärdatei, dann aktivieren wir das Debugging und setzen es auf Stufe 3 (Sie können dies nach oben oder unten einstellen, um die Ausführlichkeit zu erhöhen oder zu verringern). Als nächstes legen wir das Datenverzeichnis und die Konfigurationsdatei fest. Dies sollten die Standardeinstellungen für Ubuntu Server 12.04 sein, denke ich.

Hoffentlich erhalten Sie dann genügend Informationen, um festzustellen, wo das Problem liegt.


1
Das manuelle Starten funktioniert bei mir, aber das Verwenden des Dienstes funktioniert immer noch nicht. Ich habe das Standarddatenverzeichnis geändert. Gibt es etwas, das ich aktualisieren müsste, damit der Dienstbefehl zum Starten von Postgres wieder funktioniert?
Chrismarx

1
@chrismarx - Der serviceBefehl ist nur ein praktischer Wrapper um das /etc/init.d/Skript, der den Prozess startet und stoppt. Sie müssen sich dieses Skript ansehen, um zu sehen, was es anders macht, als wenn Sie es manuell ausführen. Etwas zu tun, bash -x /etc/init.d/postgresql startkönnte ein guter Ort sein, um mit Ihrer Forschung zu beginnen.
Christopher Cashell

3
danke, ich habe das geklärt, es gab Berechtigungsprobleme mit dem Datenverzeichnis und es scheint, dass der Dienst auch mit sudo
chrismarx

1
Lebensretter. Ich konnte keine andere Möglichkeit finden, um festzustellen, warum PostgreSQL nicht startet, da es aufgrund von Berechtigungsproblemen nicht auf sein Datenverzeichnis zugreifen konnte.
Aron Lorincz

1
für mich war es die erlaubnis von configs / etc / postgresql /
eugene
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.