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]
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 .
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.
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.
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:
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.
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.
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.
[1] |
asserção — do Lat. assertione — proposição que se apresenta como verdadeira. PRIBERAM - Língua Portuguesa On-Line . (N. do T.) |