Nie można zamknąć starego postmastera podczas aktualizacji do Postgres 9.2


13

Aktualizuję do Postgres 9.2.2 (z 9.1.4). Kiedy próbuję zaktualizować bazy danych za pomocą:

pg_upgrade -b /usr/local/Cellar/postgresql/9.1.4/bin -B /usr/local/Cellar/postgresql/9.2.2/bin -d /usr/local/var/postgres91 -D /usr/local/var/postgres

Otrzymuję następujący komunikat o błędzie:

Performing Consistency Checks
-----------------------------
Checking current, bin, and data directories                 ok

There seems to be a postmaster servicing the old cluster.
Please shutdown that postmaster and try again.
Failure, exiting

Próbuję zatrzymać serwer, ale nie mogę uruchomić polecenia aktualizacji. Jak zamknąć starego postmastera?

Odpowiedzi:


11

postmaster.pidPowinny być wewnątrz poprzedniej wersji w usr/local/varfolderze. Po prostu zmiana nazwy tego pliku powinna rozwiązać problem.


Kilka razy spotkałem się z tym problemem i to dobra odpowiedź. Istotne jest również zatrzymanie wszystkich przypadków postgres przed aktualizacją
Jerome

4

W OS X Yosemite, po zainstalowaniu PostgreSQL przez Homebrew:

launchctl unload -w ~/Library/LaunchAgents/homebrew.mxcl.postgresql.plist
rm ~/Library/LaunchAgents/homebrew.mxcl.postgresql.plist

1
To nie rozwiązuje problemu. Jeśli pg_ctl -D /usr/local/var/postgres/ stoppowróci No such process, powinieneś rm /usr/local/var/postgres/postmaster.pid.
Andrew

1

W większości systemów uniksowych znajduje się skrypt inicjujący, w /etc/init.dktórym można używać do uruchamiania, restartowania, przeładowywania lub zatrzymywania usług unixowych.

na przykład

sudo /etc/init.d/postgresql stop

Jeśli to nie jest dostępne, możesz użyć pg_ctl stop

na przykład

su - postgres
bash-3.1$ pg_ctl stop  # normal stop
bash-3.1$ pg_ctl stop -m s # smart stop
bash-3.1$ pg_ctl stop -m f # fast stop
bash-3.1$ pg_ctl stop -m i # immediate stop

Więcej o pg_ctl

http://www.postgresql.org/docs/9.1/static/app-pg-ctl.html

EDYCJA Jeśli nadal pojawia się błąd i masz pewność, że postmaster nie działa (sprawdź za pomocą sudo ps aux | grep "postmaster"- powinien zwrócić tylko jedną linię), nadal masz plik pid po nieczystym zamknięciu

Usuń plik pid np

> sudo -u postgres mv /var/lib/postgres/data-9.1/postmaster.pid /tmp

1
Gdy próbuję pg_ctl stop, pojawia się: pg_ctl: no database directory specified and environment variable PGDATA unset. BTW, nie serwer wydaje się być uruchomiony: luciano$ ps auxwww | grep postgresluciano 995 0.0 0.0 2434892 548 s000 R+ 10:42PM 0:00.00 grep postgres.
Luciano

grep dla postmastera

Zaktualizowana odpowiedź z dalszymi informacjami

Brak szczęścia:sudo ps aux | grep "postmaster" luciano 3101 0.0 0.0 2434892 548 s002 S+ 9:12PM 0:00.00 grep postmaster
Luciano,

Problem rozwiązany. Zobacz moją odpowiedź.
Luciano,

0

W systemie Ubuntu zatrzymaj usługę PostgreSQL przed wykonaniem aktualizacji. Spowoduje to zatrzymanie wszystkich wystąpień postgres, niezależnie od zainstalowanych wersji.

service postgresql stop

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.