Impossibile arrestare il vecchio postmaster durante l'aggiornamento a Postgres 9.2


13

Sto eseguendo l'aggiornamento a Postgres 9.2.2 (dalla 9.1.4). Quando provo ad aggiornare i DB usando:

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

Ricevo il seguente messaggio di errore:

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

Sto cercando di arrestare il server, ma non riesco a far funzionare il comando upgrade. Come chiudere il vecchio postmaster?

Risposte:


11

Il postmaster.piddovrebbe essere all'interno della versione precedente usr/local/varcartella. Rinominare semplicemente questo file dovrebbe risolvere il problema.


Ho riscontrato questo problema anche un paio di volte e questa è una buona risposta. Anche l'interruzione di tutti i casi di postgres prima dell'aggiornamento dovrebbe essere pertinente
Girolamo

4

In OS X Yosemite, dopo aver installato PostgreSQL tramite Homebrew:

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

1
Questo non risolve il problema. Se pg_ctl -D /usr/local/var/postgres/ stopritorna No such process, allora dovresti rm /usr/local/var/postgres/postmaster.pid.
Andrew,

1

Sulla maggior parte dei sistemi unix troverai uno script init in /etc/init.dcui puoi usare per avviare, riavviare, ricaricare o interrompere i servizi unix.

per esempio

sudo /etc/init.d/postgresql stop

Se questo non è disponibile è possibile utilizzare pg_ctl stop

per esempio

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

Di più pg_ctl

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

MODIFICA Se l'errore persiste e si è certi che il postmaster non sia più in esecuzione (verificare con sudo ps aux | grep "postmaster"- dovrebbe restituire una sola riga), il file pid rimane comunque dopo un arresto impuro

Rimuovere il pidfile ad es

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

1
Quando provo pg_ctl stop, ottengo: pg_ctl: no database directory specified and environment variable PGDATA unset. BTW, nessun server sembra essere in esecuzione: luciano$ ps auxwww | grep postgresluciano 995 0.0 0.0 2434892 548 s000 R+ 10:42PM 0:00.00 grep postgres.
Luciano,

grep per postmaster

Risposta aggiornata con ulteriori informazioni

Nessuna fortuna:sudo ps aux | grep "postmaster" luciano 3101 0.0 0.0 2434892 548 s002 S+ 9:12PM 0:00.00 grep postmaster
Luciano,

Problema risolto. Vedi la mia risposta
Luciano,

0

Su Ubuntu, interrompere il servizio PostgreSQL prima di eseguire l'aggiornamento. Ciò interromperà tutte le istanze di Postgres indipendentemente dalle versioni installate.

service postgresql stop

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.