Melhores Práticas de Instalação
Regras operacionais para inicializar clusters PostgreSQL que sobrevivem a auditorias, atualizações e chamadas às 3 da manhã.
Como Usar Esta Lista
- Aplique durante a primeira instalação em produção, não como uma correção após um incidente.
- Marque os itens na sua PR de infraestrutura como código antes de marcar o host como em produção.
- Revise após atualizações de versão principal - os padrões de inicialização e os caminhos podem mudar.
A - Plataforma e Versão
- Execute uma versão principal suportada em um sistema operacional secundário suportado. Sistemas operacionais EOL ou versões principais do Postgres em fim de vida são um defeito de conformidade à espera de acontecer.
- Fixe a versão principal do PostgreSQL nos nomes dos pacotes ou imagens. Metapacos
postgresqlvariam entre distribuições. - Ative
--data-checksumsno initdb. Não pode ser adicionado posteriormente sem reconstrução. - Use codificação UTF8 e documente a escolha da collation.
C.UTF-8vs. específico de locale afeta a ordem de classificação para sempre. - Registre a string de versão exata no inventário.
SELECT version();na sua CMDB.
B - Layout do Armazenamento
- Separe o WAL em seu próprio volume quando houver gargalo de IO. O WAL com muitas escritas compete com o IO aleatório do heap.
- Dimensiona o sistema de arquivos PGDATA com 30%+ de espaço livre. Disco cheio para escritas e pode corromper a recuperação.
- Use
chmod 700e propriedadepostgres:postgresno PGDATA. Diretórios de dados legíveis por qualquer pessoa falham em auditorias. - Prefira XFS ou ext4 com
noatimeem volumes de dados. Documente as opções de montagem nos runbooks. - Evite NFS para PGDATA primário, a menos que aprovado pelo fornecedor. Latência e travamentos causam problemas.
C - Configuração
- Documente cada GUC não padrão com justificativa. Operadores futuros não podem adivinhar por que
max_connections = 400. - Defina
shared_buffers,work_mem,max_connectionsconservadores na primeira passagem. Ajuste com métricas, não com posts de blog. - Use
include_if_existspara substituições locais. Mantenhapostgresql.confcompatível com o gerenciador de pacotes. - Defina
log_line_prefixcom pid, usuário, db, nome do aplicativo. Você precisará disso no primeiro incidente. - Ative
log_connectionselog_disconnectionsaté que esteja estável, depois reduza. Ajuda a rastrear falhas de autenticação.
D - Rede e Autenticação
- Negação padrão em
pg_hba.conf; permita apenas sub-redes explícitas. A primeira correspondência vence - ordene as regras cuidadosamente. - Use
scram-sha-256para autenticação de senha. Desativemd5e proíbatrustem TCP. - Exija
hostsslpara conexões remotas de aplicativos. Combine com certificados TLS válidos. - Vincule
listen_addressesapenas a NICs internas. Listener público + HBA fraco é um padrão de violação. - Crie roles dedicadas de replicação e administração. Nunca reutilize senhas de aplicativos para replicação.
E - Gerenciamento de Serviço
- Ative a unidade systemd na inicialização com
TimeoutStopSecadequado. 300s+ em sistemas com muita memória. - Verifique se o
PGDATAna unidade corresponde aSHOW data_directory. Hosts multi-instância confundem isso facilmente. - Teste os procedimentos de
reloadvsrestartem um teste. Operadores devem saber qual configuração precisa de qual. - Envie logs para armazenamento centralizado. O journald sozinho é perdido em caso de falha de disco.
- Automatize o backup antes de declarar pronto para produção. Um runbook vazio não é um cluster.
FAQs
Maior erro no primeiro dia?
Abrir pg_hba.conf para 0.0.0.0/0 com autenticação fraca. Bloqueie a rede primeiro, depois ajuste o desempenho.
Docker para produção?
Possível com disciplina do operador (volumes, recursos, backups). Muitas equipes preferem pacotes ou nuvem gerenciada para clareza de SLA.
Quanto espaço livre em disco?
Planeje picos de WAL durante cargas em massa e atraso de replicação. Mínimo de 30% de espaço livre; alerte em 20%.
Relacionado
- Noções Básicas de Instalação - exemplos de instalação de plataforma
- initdb e Diretório de Dados - layout do PGDATA
- Essenciais do postgresql.conf - primeira passagem de ajuste
- pg_hba.conf e Autenticação - regras de autenticação de rede
Versões de Stack: Esta página foi escrita para PostgreSQL 18.4 (estável 18, manutenção 17), pgvector 0.8+, PgBouncer 1.x, Patroni 3.x e PostGIS 3.5+.