serwer Postgres nie uruchamia się, nie tworzy dziennika, jak rozwiązać problem?

33

Uruchamiam instancję Postgres 9.3 na serwerze Ubuntu 12.04:

~# service postgresql start 

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

start kończy się niepowodzeniem, ale nie pozostawia dziennika, ten plik jest pusty:

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

i nie ma innych plików w tym katalogu: / var / log / postgresql /

jaki jest najlepszy sposób na rozwiązanie tego problemu?

Max L.
źródło
czy to jest nowa instalacja pg, czy właśnie zrobiłeś aktualizację? sprawdź, czy użytkownik postgres ma prawa do pliku konfiguracyjnego pg i pliku dziennika
LinuxDevOps
3
Spróbuj uruchomić postgres w taki sam sposób, jak robi to skrypt (normalnie su - postgres; /usr/local/pgsql/bin/postgres -D /usr/local/pgsql/datai zobacz, co ci daje. Może być konieczna zmiana nazwy użytkownika i ścieżek w zależności od konfiguracji.
Jenny D mówi Przywróć Monikę
Oprócz tego, co powiedział @JennyD, dodałbym -d 3do postgrespolecenia. Umożliwi to szersze wyjście debugowania zapisywane w dzienniku. Możesz obniżyć wynik debugowania, zmieniając go na 1 lub 2, lub zwiększyć, zmieniając go na 4 lub 5. Ponadto, co to jest wyjście which pgsql?
zymhan
Jak zainstalowano PostgreSQL na serwerze i skąd? Czy jest coś w logach systemowych , np. / Var / log / syslog, / var / log / messages itp.?
Craig Ringer
6
Nie rozumiem, dlaczego to pytanie zostało zamknięte.
guettli,

Odpowiedzi:

53

Spróbuj uruchomić go ręcznie z włączonym debugowaniem. Spowoduje to, że uruchomi się na pierwszym planie i wydrukuje wszelkie komunikaty o błędach do standardowego błędu, jednocześnie zwiększając gadatliwość.

Wierzę, że będzie to poprawna linia poleceń dla PostgreSQL 9.3 na Ubuntu, ale może wymagać drobnych poprawek (uwaga: linia jest podzielona dla czytelności; możesz zrekombinować ją do jednej linii (bez odwrotnego ukośnika), jeśli chcesz):

/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

Początek to lokalizacja postgrespliku binarnego, następnie włączamy debugowanie i ustawiamy go na poziom 3 (możesz to zmienić w górę lub w dół, aby zwiększyć lub zmniejszyć szczegółowość). Następnie określamy katalog danych i plik konfiguracyjny na początek. Sądzę, że powinny to być wartości domyślne dla Ubuntu Server 12.04.

Mamy nadzieję, że dostarczy ci wystarczających informacji, aby ustalić, gdzie jest problem.

Christopher Cashell
źródło
1
ręczne uruchomienie działa dla mnie, ale nadal nie działa usługa. zmieniłem domyślny katalog danych, czy jest coś, co musiałbym zaktualizować, aby polecenie service znów działało w celu uruchomienia postgres?
chrismarx
1
@chrismarx - servicePolecenie to po prostu wygodne opakowanie wokół /etc/init.d/skryptu, który faktycznie uruchamia i zatrzymuje proces. Musisz spojrzeć na ten skrypt, aby zobaczyć, co robi inaczej niż po ręcznym uruchomieniu. Robienie czegoś takiego bash -x /etc/init.d/postgresql startmoże być dobrym miejscem do rozpoczęcia badań.
Christopher Cashell
3
dzięki, posortowałem, wystąpiły problemy z uprawnieniami do katalogu danych i wygląda na to, że usługa musiała być również uruchomiona z sudo
chrismarx
1
Ratownik. Nie mogłem znaleźć innego sposobu, aby powiedzieć, dlaczego PostgreSQL nie chce się uruchomić, ponieważ było tak, ponieważ nie mógł uzyskać dostępu do katalogu danych z powodu problemów z uprawnieniami.
Aron Lorincz,
1
dla mnie było to pozwolenie configs / etc / postgresql /
eugene