postmaster [-A 0 | 1 ] [-B número_de_buffers] [-c nome=valor] [-d nível_de_depuração] [-D diretório_de_dados] [-F] [-h nome_do_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]
O postmaster é o servidor de banco de dados multiusuário PostgreSQL. Para um aplicativo cliente acessar o banco de dados deve se conectar (através da rede ou localmente) ao postmaster. O postmaster, então, inicia um processo servidor em 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, exatamente, 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 (a "área de dados"). Mais de um processo postmaster podem 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.
Ao iniciar, o postmaster precisa conhecer o local onde está a área de dados. O local deve ser especificado pela opção -D, ou por meio da variável de ambiente PGDATA; não existe nenhum valor padrão. Normalmente -D ou PGDATA apontam diretamente para o diretório da área de dados criada pelo initdb. Outras disposições de arquivo possíveis estão discutidas na Seção 16.4.1.
O postmaster aceita os argumentos de linha de comando mostrados abaixo. Para uma discussão detalhada destas opções consulte a Seção 16.4. É possível evitar a digitação da maior parte destas opções usando o arquivo de configuração.
Ativa 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. Esta opção somente estará disponível se as asserções foram ativadas quando o PostgreSQL foi compilado. Se for o caso, o padrão é ativa.
Define o número de buffers compartilhados para uso pelos processos servidor. O valor padrão deste parâmetro é escolhido automaticamente pelo initdb; para obter informações adicionais deve ser consultada a Seção 16.4.3.1.
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.
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.
Especifica o local do diretório de dados e dos arquivos de configuração no sistema de arquivos. Para obter detalhes deve ser consultada a Seção 16.4.1.
Desativa as chamadas a fsync para melhorar o desempenho, correndo o risco de corrupção dos dados na ocorrência de uma falha do sistema. Especificar esta opção equivale a desativar o parâmetro de configuração fsync. Leia com atenção a documentação antes de usar esta opção!
--fsync=true produz o efeito oposto desta opção.
Especifica o nome de hospedeiro ou endereço de IP no qual o postmaster deve ouvir as conexões TCP/IP dos aplicativos cliente. O valor também pode ser uma lista de endereços separados por vírgula, ou * para especificar que deve ouvir em todas as interfaces disponíveis. Um valor vazio especifica não ouvir em nenhum endereço de IP e, neste caso, somente podem ser usados soquetes do domínio Unix para se conectar ao postmaster. Por padrão ouve somente o localhost. Especificar esta opção equivale a definir o parâmetro de configuração listen_addresses.
Permite os clientes remotos se conectarem via TCP/IP (Domínio da Internet). Sem esta opção somente são aceitas as conexões locais. Esta opção equivale a definir listen_addresses como * no arquivo de configuração postgresql.conf, ou usar -h.
Esta opção está em obsolescência, uma vez que não permite acesso a todas as funcionalidades de listen_addresses. Geralmente é melhor definir listen_addresses diretamente.
Especifica o diretório do soquete do domínio Unix onde o postmaster está ouvindo as conexões dos aplicativos cliente. Normalmente o padrão é /tmp, mas pode ser mudado em tempo de construção.
Ativa as conexões seguras usando SSL. O PostgreSQL deve ter sido compilado com suporte a SSL para esta opção estar disponível. Para obter informações adicionais sobre o uso do SSL, deve ser consultada a Seção 16.7.
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 discussão sobre os requisitos de recursos do sistema necessários para a conexão de um grande número de clientes). Especificar esta opção equivale a definir o parâmetro de configuração max_connections.
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 da opção contiver espaços, toda a cadeia de caracteres deve vir entre apóstrofos (') ou aspas (").
Especifica a porta TCP/IP, ou a extensão do arquivo de soquete do domínio Unix local, onde o postmaster deve ouvir as conexões dos aplicativos cliente. O padrão é o valor da variável de ambiente PGPORT, se esta estiver definida, senão o padrão será o valor estabelecido durante a compilação (normalmente 5432). Se for especificada uma porta diferente da porta padrão, então todos os aplicativos cliente deverão especificar a mesma porta usando a opção de linha de comando ou a variável de ambiente PGPORT.
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 de 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.
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 danificado 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:
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 o estado da memória compartilhada e dos semáforos.
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.
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.
Local padrão do diretório de dados.
Valor padrão do parâmetro em tempo de execução DateStyle (A utilização desta variável de ambiente está obsoleta).
Porta padrão (definida de preferência no arquivo de configuração).
Zona horária do servidor.
Uma mensagem de falha mencionando semget ou shmget provavemente indica a necessidade de configurar o núcleo (kernel), para que este forneça memória compartilhada e semáforos em quantidade adequada. Para obter mais informações deve ser consultada 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 pelo PostgreSQL, e/ou reduzindo max_connections, para reduzir o consumo de semáforos.
Uma mensagem de erro sugerindo que um outro servidor 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 servidor conflitante executando, o arquivo de bloqueio mencionado na mensagem deverá ser removido e a execução tentada novamente.
Uma mensagem de erro indicando não ser possível vincular a porta, pode indicar que a porta está sendo utilizada 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 para que o sistema operacional feche 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.
Sempre que for possível não deve ser usado SIGKILL para terminar o postmaster. Proceder desta maneira 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 servidor postmaster normalmente, podem ser usados os sinais SIGTERM, SIGINT e SIGQUIT. O primeiro aguarda todos os clientes terminarem antes de terminar, o segundo força a desconexão de todos os clientes e o terceiro termina imediatamente sem uma parada (shutdown) adequada, 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 servidor 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.
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 work_mem=1234 $ postmaster --work-mem=1234
As duas formas substituem o que estiver definido para work_mem no arquivo de configuração 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 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.
[1] |
asserção — do Lat. assertione — proposição que se apresenta como verdadeira. PRIBERAM - Língua Portuguesa On-Line. (N. do T.) |