Não é possível encerrar o postmaster antigo ao atualizar para o Postgres 9.2

13

Estou atualizando para o Postgres 9.2.2 (da 9.1.4). Quando tento atualizar os bancos de dados 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

Eu recebi a seguinte mensagem de erro:

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

Estou tentando parar o servidor, mas não consigo fazer o comando de atualização funcionar. Como desligar o antigo postmaster?

Luciano
fonte

Respostas:

11

O postmaster.pidarquivo deve estar dentro da usr/local/varpasta da versão anterior . Simplesmente renomear este arquivo deve resolver o problema.

Luciano
fonte
Já me deparei com esse problema algumas vezes e esta é uma boa resposta. Parar todas as instâncias do postgres antes da atualização deve ser pertinente, bem
Jerome
4

No OS X Yosemite, depois de instalar o PostgreSQL via Homebrew:

launchctl unload -w ~/Library/LaunchAgents/homebrew.mxcl.postgresql.plist
rm ~/Library/LaunchAgents/homebrew.mxcl.postgresql.plist
Sarah Vessels
fonte
1
Isso não resolve o problema. Se pg_ctl -D /usr/local/var/postgres/ stopretornar No such process, então você deve rm /usr/local/var/postgres/postmaster.pid.
27416 Andrew Andrew
1

Na maioria dos sistemas unix, você encontrará um script init no /etc/init.dqual você pode usar para iniciar, reiniciar, recarregar ou parar os serviços unix.

por exemplo

sudo /etc/init.d/postgresql stop

Se isso não estiver disponível, você pode usar pg_ctl stop

por exemplo

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

Mais sobre pg_ctl

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

EDIT Se você ainda receber o erro e tiver certeza de que o postmaster não está mais em execução (verifique com sudo ps aux | grep "postmaster"- deve retornar apenas uma linha), você ainda possui o arquivo pid após um desligamento imundo

Remova o arquivo pid, por exemplo

> sudo -u postgres mv /var/lib/postgres/data-9.1/postmaster.pid /tmp
Michel Feldheim
fonte
1
Quando eu tento pg_ctl stop, eu recebo: pg_ctl: no database directory specified and environment variable PGDATA unset. BTW, nenhum servidor parece estar a correr: luciano$ ps auxwww | grep postgresluciano 995 0.0 0.0 2434892 548 s000 R+ 10:42PM 0:00.00 grep postgres.
Luciano
grep para postmaster
Resposta atualizada com mais informações
Sem sorte:sudo ps aux | grep "postmaster" luciano 3101 0.0 0.0 2434892 548 s002 S+ 9:12PM 0:00.00 grep postmaster
Luciano
Problema resolvido. Veja minha resposta.
Luciano
0

No Ubuntu, pare o serviço PostgreSQL antes de executar a atualização. Isso interromperá todas as instâncias do postgres, independentemente das versões instaladas.

service postgresql stop

scarver2
fonte