1. Conexões e autenticação
# pg_hba.conf (exemplo seguro)
# TYPE DATABASE USER ADDRESS METHOD
local all all peer
host all app 10.0.0.0/8 scram-sha-256
hostssl all all 0.0.0.0/0 reject
# postgresql.conf
max_connections = 100
listen_addresses = 'localhost' # ou IP interno; nunca 0.0.0.0 sem firewall
DICA · Use um usuário de aplicação com privilégios mínimos (não o superuser).
2. Memória e shared_buffers
# regras de ouro aproximadas (servidor dedicado)
shared_buffers = 25% da RAM
effective_cache_size = 50–75% da RAM
work_mem = 16–64MB (cuidado com concorrência)
maintenance_work_mem = 256MB–1GB
Reinicie o serviço após mudanças em parâmetros que exigem restart.
3. Backup lógico e físico
# Lógico (bom para dumps pontuais)
pg_dump -Fc -f backup_$(date +%F).dump minha_base
pg_restore -d minha_base backup_2026-09-22.dump
# Físico (basebackup — necessário para PITR)
pg_basebackup -D /var/lib/postgresql/backup -Ft -z -P -U replicator
Para produção séria: combine basebackup + WAL archiving (ou use ferramentas como pgBackRest / Barman).
4. Vacuum e manutenção
-- ver tabelas inchadas
SELECT relname, n_dead_tup, last_vacuum, last_autovacuum
FROM pg_stat_user_tables
ORDER BY n_dead_tup DESC
LIMIT 20;
VACUUM (VERBOSE, ANALYZE) tabela_grande;
-- ou deixe o autovacuum trabalhar e só ajuste thresholds se necessário
5. O que monitorar
- Conexões ativas vs max_connections
- Locks longos e queries lentas (
pg_stat_activity) - Tamanho do banco e crescimento de WAL
- Taxa de cache hit (buffer hit ratio)
- Último backup bem-sucedido
6. Checklist
- Backup testado (restore real em ambiente separado)
- pg_hba restritivo + senhas fortes (scram-sha-256)
- Autovacuum habilitado
- Logs de erros e slow queries configurados
- Extensões necessárias documentadas (pg_stat_statements, etc.)
7. Erros comuns
| Sintoma | Causa | Solução |
|---|---|---|
| too many connections | max_connections baixo ou pool ausente | PgBouncer ou aumentar com cuidado |
| Backup nunca testado | Só o dump existe | Faça restore periódico em staging |
| Disco cheio de WAL | Archive falhando | Verifique archive_command e espaço |
| Queries lentas de repente | Estatísticas desatualizadas | ANALYZE ou autovacuum |