postmaster

Nome

postmaster -- servidor de banco de dados multiusuário do PostgreSQL

Sinopse

postmaster [-A 0 | 1 ] [-B num_buffers] [-c nome=valor] [-d nível_de_depuração] [-D diretório_de_dados] [-F] [-h nome_de_hospedeiro] [-i] [-k diretório] [-l] [-N número_máximo_de_conexões] [-o opções_extras] [-p porta] [-S] [--nome=valor] [-n | -s]

Descrição

O postmaster é o servidor de banco de dados multiusuário PostgreSQL. Para uma aplicação cliente acessar um banco de dados deve se conectar (através de uma rede ou localmente) ao postmaster. O postmaster, então, inicia um processo servidor separado (" postgres ") para tratar a conexão. O postmaster também gerencia a comunicação entre os processos servidor.

Por padrão, o postmaster inicia em primeiro plano (foreground) e envia as mensagens de log para a saída de erro padrão. Para uso prático o postmaster deve ser iniciado como um processo em segundo plano (background), provavelmente durante a inicialização do sistema operacional.

Um postmaster gerencia sempre os dados de, precisamente, um agrupamento de bancos de dados. Um agrupamento de bancos de dados é uma coleção de bancos de dados armazenados em um local comum no sistema de arquivos. Ao iniciar, o postmaster precisa conhecer o local onde estão os arquivos do agrupamento de bancos de dados ("área de dados"), o que é feito por meio da opção de chamada -D, ou por meio da variável de ambiente PGDATA; não existe nenhum valor padrão. Mais de um processo postmaster pode estar executando no sistema operacional ao mesmo tempo, desde que utilizem áreas de dados diferentes e portas de comunicação diferentes (veja abaixo). A área de dados é criada pelo initdb .

Opções

O postmaster aceita os argumentos de linha de comando mostrados abaixo. Consulte a Seção 16.4 para obter uma explicação detalhada destas opções. É possível evitar a digitação da maior parte destas opções usando o arquivo de configuração.

-A 0|1
Habilita a verificação das asserções [1] em tempo de execução, o que é uma ajuda de depuração para detectar erros de programação. Só está disponível quando habilitada durante a compilação do PostgreSQL. Se for, o padrão é ativa.
-B número_de_buffers
Define o número de buffers compartilhados para uso pelos processos servidor. Por padrão 64 buffers, cada um de 8 kB.
-c nome=valor
Define o parâmetro em tempo de execução designado. Os parâmetros de configuração suportados pelo PostgreSQL estão descritos na Seção 16.4 . A maior parte das outras opções de linha de comando são, na verdade, formas curtas de atribuição destes parâmetros. A opção -c pode aparecer várias vezes para definir vários parâmetros.
-d nível_de_depuração
Define o nível de depuração. Quanto mais alto for definido este valor, mais saída de depuração será escrita no log do servidor. Os valores vão de 1 a 5.
-D diretório_de_dados
Especifica a localização do diretório de dados e dos arquivos de configuração no sistema de arquivos. Veja a explicação acima.
-F
Desabilita as chamadas a fsync para melhorar o desempenho, correndo o risco de corrupção dos dados na ocorrência de uma falha do sistema. Este parâmetro corresponde a definir fsync=false no arquivo postgresql.conf. Leia com atenção a documentação antes de usar esta opção! --fsync=true produz o efeito oposto desta opção.
-h nome_de_hospedeiro
Especifica o nome de hospedeiro ou endereço de IP no qual o postmaster escuta as conexões das aplicações cliente. Por padrão escuta em todos os endereços configurados (incluindo localhost).
-i
Permite os clientes remotos se conectarem via TCP/IP (Domínio da Internet). Sem esta opção, somente as conexões via soquete do domínio Unix local são aceitas. Esta opção corresponde a definir tcpip_socket=true no arquivo postgresql.conf. --tcpip_socket=false produz o efeito oposto desta opção.
-k diretório
Especifica o diretório do soquete do domínio Unix, no qual o postmaster está escutando as conexões das aplicações cliente. Normalmente o padrão é /tmp, mas pode ser mudado na compilação.
-l
Habilita as conexões seguras usando SSL. A opção -i também é requerida. O PostgreSQL deve ter sido compilado com suporte a SSL para ser possível o uso desta opção.
-N número_máximo_de_conexões
Define o número máximo de conexões de clientes aceitas por este postmaster. Por padrão este valor é 32, mas pode ser definido tão alto quanto o sistema operacional suportar (Deve ser observado que o valor da opção -B deve ser pelo menos o dobro do valor da opção -N. Veja na Seção 16.5 a explicação sobre os requisitos de recursos do sistema necessários para a conexão de um grande número de clientes).
-o opções_extras
As opções no estilo linha de comando especificadas nas opções_extras são passadas para todos os processos servidor iniciados por este postmaster. Consulte o postgres para ver as possibilidades. Se a cadeia de caracteres contendo a opção contiver espaços, toda a cadeia de caracteres deve vir entre apóstrofos (').
-p porta
Especifica a porta TCP/IP, ou a extensão do arquivo de soquete do domínio Unix local, onde o postmaster está escutando as conexões das aplicações cliente. O padrão é obter o valor a partir da variável de ambiente PGPORT, se esta estiver definida, senão usar o valor padrão compilado (normalmente 5432). Se for especificada uma porta diferente da porta padrão, então todas as aplicações cliente devem especificar a mesma porta usando a opção de linha de comando ou a variável de ambiente PGPORT.
-S
Especifica que o processo postmaster deve iniciar no modo silencioso, ou seja, será dissociado do terminal (controlador) do usuário, iniciará seu próprio grupo de processos e redirecionará sua saída padrão e erro padrão para /dev/null. O uso desta chave descarta toda a saída para o log, o que provavelmente não é o desejado, porque torna muito difícil a solução dos problemas. Veja abaixo uma maneira melhor de iniciar o postmaster em segundo plano. --silent_mode=false produz o efeito oposto desta opção.
--nome=valor
Define o parâmetro em tempo de execução designado; uma forma mais curta da opção -c.

Estão disponíveis duas opções de linha de comando adicionais para a depuração dos problemas que fazem o servidor terminar anormalmente. A estratégia comum nesta situação é notificar todos os outros processos servidor que estes devem terminar e, em seguida, reinicializar a memória compartilhada e os semáforos. Isto é porque o processo servidor com problema pode ter corrompido algum estado compartilhado antes de terminar. Estas opções selecionam comportamentos alternativos do postmaster nesta situação. Nenhuma destas opções foi feita para ser usada durante a operação normal.

As opções caso-especial são:

-n
O postmaster não reinicializa as estruturas de dado compartilhadas. Um programador de sistemas com conhecimento adequado poderá, então, usar um depurador para examinar a memória compartilhada e o estado do semáforo.
-s
O postmaster pára todos os outros processos servidor enviando o sinal SIGSTOP, mas não faz com que terminem, permitindo os programadores de sistema coletar "core dumps" de todos os processos servidor manualmente.

Ambiente

PGCLIENTENCODING
A codificação de caracteres padrão utilizada pelos clientes (Os clientes podem substitui-la individualmente). Este valor também pode ser definido no arquivo de configuração.
PGDATA
Localização padrão do diretório de dados.
PGDATESTYLE
Valor padrão do parâmetro em tempo de execução DATESTYLE (A utilização desta variável de ambiente está obsoleta).
PGPORT
Porta padrão (definida de preferência no arquivo de configuração).
TZ
Zona horária do servidor.
outras
Outras variáveis de ambiente podem ser usadas para designar locais alternativos para armazenamento dos dados. Veja a Seção 18.5 para obter mais informações.

Diagnósticos

Uma mensagem de erro mencionando semget ou shmget provavelmente indica a necessidade de configurar o núcleo (kernel) para fornecer uma quantidade de memória compartilhada e semáforos adequados. Para obter mais explicações veja a Seção 16.5 .

Dica: Pode ser possível adiar a reconfiguração do núcleo diminuindo shared_buffers, para reduzir o consumo de memória compartilhada do PostgreSQL, e/ou reduzindo max_connections, para reduzir o consumo de semáforos.

Uma mensagem de erro sugerindo que um outro postmaster está executando deve ser verificada cuidadosamente utilizando, por exemplo, o comando

$ ps ax | grep postmaster

ou

$ ps -ef | grep postmaster

dependendo do sistema operacional. Havendo certeza de que não há outro postmaster conflitante executando, deve ser removido o arquivo de bloqueio mencionado na mensagem e tentado novamente.

Uma mensagem de erro indicando não ser possível vincular a porta, pode indicar que a porta já esteja em uso por um processo não-PostgreSQL. Este erro também pode acontecer se o postmaster for terminado e reiniciado imediatamente usando a mesma porta; neste caso, se deve simplesmente aguardar uns poucos segundos o sistema operacional fechar a porta antes de tentar novamente. Por fim, este erro pode acontecer se for especificado um número de porta que o sistema operacional considere reservado. Por exemplo, muitas versões do Unix consideram os números de porta abaixo de 1024 como "trusted" (confiável) só permitindo o acesso aos superusuários do Unix.

Observações

Sempre que for possível não deve ser usado SIGKILL para terminar o postmaster. Este sinal impede que o postmaster libere os recursos do sistema utilizados (por exemplo, memória compartilhada e semáforos) antes de terminar, podendo causar problemas ao iniciar uma nova execução do postmaster.

Para terminar o postmaster normalmente, podem ser usados os sinais SIGTERM, SIGINT e SIGQUIT. O primeiro aguarda todos os clientes terminarem antes de fechar, o segundo força a desconexão de todos os clientes e o terceiro fecha imediatamente sem um shutdown adequado, provocando a execução da recuperação ao reiniciar. O sinal SIGHUP recarrega os arquivos de configuração do servidor.

O utilitário pg_ctl pode ser usado para iniciar e terminar o postmaster com segurança e conforto.

As opções -- não funcionam no FreeBSD nem no OpenBSD. Use o -c em seu lugar. Esta é uma falha destes sistemas operacionais; uma versão futura do PostgreSQL disponibilizará um recurso para contornar este problema, caso não seja corrigido.

Exemplos

Para iniciar o postmaster em segundo plano usando os valores padrão:

$ nohup postmaster >logfile 2>&1 </dev/null &

Para iniciar o postmaster usando uma porta específica:

$ postmaster -p 1234

Este comando inicia o postmaster se comunicando através da porta 1234. Para se conectar a este postmaster usando o psql, deve-se executar:

$ psql -p 1234

ou definir a variável de ambiente PGPORT:

$ export PGPORT=1234
$ psql

Parâmetros em tempo de execução identificados pelo nome podem ser definidos usando um destes estilos:

$ postmaster -c sort_mem=1234
$ postmaster --sort-mem=1234

As duas formas substituem o que estiver definido para SORT_MEM no arquivo postgresql.conf. Deve ser observado que os sublinhados nos nomes dos parâmetros podem ser escritos na linha de comando com o caractere sublinhado ou com hífen.

Dica: Exceto para experimentos de curta duração, provavelmente é uma prática melhor editar as definições no arquivo postgresql.conf do que depender das chaves de linha de comando para definir os parâmetros.

Veja também

initdb , pg_ctl

Notas

[1]

asserção — do Lat. assertione — proposição que se apresenta como verdadeira. PRIBERAM - Língua Portuguesa On-Line . (N. do T.)

SourceForge.net Logo