Então, não deveria mesmo existir, mas deve ter ficado outros arquivos
“presos” fazendo com o Postgres ficasse em “meio termo”.
A versão do Postgres que utilizamos é a 8.2.4 e neste caso o SO é OpenSuse
11.3(64)

Existe uma rotina de backup que o cliente agendou para as 01h, ela da um
stop no banco, aguarda alguns segundos e inicializa ele novamente. Iniciei
a analise verificando os logs do backup e percebi que quando ele parou o
banco não conseguiu mais subir, consequentemente gerando backups zerados...
etc... etc. Então para confirmar que após as 01h o banco não operou mais eu
conferi os logs (pg_clog e serverlog). Além disso verifiquei os processos
abertos para postmaster, eles não existiam.

O problema exatamente não identifiquei, apenas com a informação de erro do
postmaster.pid e que o mesmo não conseguia subir, tentei a alternativa de
start, foi o que resolveu meu problema (mas não sei o que ocasionou, só sei
que funcionou), gostaria muito de saber o que ocasionou, o que aconteceu
foi que o postmaster não estava instanciado, mas pode haver vários motivos
para isso.

O comando /etc/init.d/postgresql stop utiliza como parâmetro –s –m fast,
neste caso não espera os clientes desconectarem e desfaz as transações
abertas, com isso acredito que ele deveria ter contornado o fato de
possivelmente existirem transações abertas.

O que vocês acham?

>* Pessoal, peço auxilio com um problema que tive.*

>* *

>* Hoje um servidor com banco Postgres parou e não subia mais, a mensagem*

>* que dava ao tentar iniciar era “pg_ctl: PID file*

>* "/usr/local/pgsql/data/postmaster.pid" does not exist Server running?”.*



Engraçado. Esse arquivo não deveria *mesmo* existir ao iniciar o

PostgreSQL. Esse arquivo existe quando o PostgreSQL está rodando.



Qual é a versão do PostgreSQL e qual seu S.O. e versão?



>* Procurando em alguns logs do banco, identifiquei que em determinado*

>* momento o serviço foi parado, automaticamente o postmaster.pid foi*

>* excluído mas restou alguma coisa que manteve o serviço como registrado,*

>* a partir dai não eu não conseguia mais subir o banco.*



Tem certeza que não ficou nenhum dos processos?

Como você verificou que o PostgreSQL parou mesmo?




>* Após alguns testes, executei o comando pg_ctl -D < directory> status e*

>* encontrei o problema, então com pg_ctl -D <directory> start consegui com*

>* que o banco subisse novamente.*



E qual foi o problema que você encontrou? Você não contou.



>* Mas a pergunta é porque o banco baixou e não conseguiu mais subir? O que*

>* fez com que apenas parte dos arquivos que identificam que o banco esteja*

>* rodando (postmaster.pid) fossem excluídos (pois quando o banco é parado*

>* esses arquivos são excluídos automaticamente)? Alguém tem essas informações?*



É necessário saber as versões como pedi acima.

O postmaster.pid deve ser removido sim ao parar o banco.



>* O que acredito é que no momento de parar (/etc/init.d/postgres stop) o*

>* banco tinha conexões em transação ou algo do tipo, e em virtude disso*

>* não conseguiu parar completamente! O que acham ??*



Veja os modos de parar o PostgreSQL em [1] (pra versão 9.1).

Seu script em /etc/init.d/postgres está fazendo a coisa certa?



Por exemplo, no modo immediate o PostgreSQL simplesmente... morre! E

ficam coisas pra trás e a resolver na próxima inicialização.



E sim, é possível que algum processo tenha ficado funcionando dependendo

do tipo de parada que você fez (smart ou fast) e, por isso, a

inicialização não funcionou, pra proteger seus dados enquando outro

processo ainda está trabalhando.



 --

*Eurides V. Baptistella
**E-mail:* [email protected]
*Fone:* +55 (49) 9125-6572
_______________________________________________
pgbr-geral mailing list
[email protected]
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral

Responder a