16.6. Parada do servidor

Existem várias formas de parar o servidor de banco de dados. O tipo de parada pode ser controlado através do envio de sinais diferentes para o processo postmaster.

SIGTERM

Após receber o sinal SIGTERM o servidor não aceita novas conexões, mas deixa as sessões existentes trabalharem normalmente. A parada é realizada apenas depois de todas as sessões terminarem normalmente. Esta é a Parada Esperta (Smart Shutdown).

SIGINT

O servidor não aceita novas conexões e envia para todos os processos servidores existentes o sinal SIGTERM, fazendo com que estes interrompam suas transações correntes e terminem imediatamente. Depois aguarda os processos servidor saírem e, finalmente, pára. Esta é a Parada Rápida (Fast Shutdown).

SIGQUIT

Esta é a Parada Imediata (Immediate Shutdown), que faz o processo postmaster enviar um sinal SIGQUIT para todos os processos descendentes e sair imediatamente, sem parar de forma apropriada. Da mesma maneira, os processos descendentes saem imediatamente após receber o sinal SIGQUIT. Provoca uma recuperação (refaz o log do WAL) na próxima inicialização. Somente é recomendado em caso de emergência.

O programa pg_ctl fornece uma interface conveniente para enviar estes sinais para parar o servidor.

Como alternativa o sinal pode ser enviado diretamente através do comando kill. O PID do processo postmaster pode ser encontrado utilizando o programa ps, ou no arquivo postmaster.pid no diretório de dados. Portanto, para efetuar uma parada rápida pode ser utilizado, por exemplo:

$ kill -INT `head -1 /usr/local/pgsql/data/postmaster.pid`

Importante: É melhor não utilizar SIGKILL para parar o servidor. Usá-lo impede que o servidor libere a memória compartilhada e os semáforos, o que poderá então ter de ser feito à mão antes de poder inicializar novamente o servidor. Além disso, o sinal SIGKILL mata o processo postmaster sem deixar que este repasse o sinal para seus subprocessos e, portanto, será necessário matar os subprocessos à mão também.

SourceForge.net Logo CSS válido!