Índice do artigo
Resposta rápida
Use pg_dump para exportação lógica e pg_restore para validar o retorno. O arquivo deve sair do mesmo disco do banco, ter acesso restrito e ser acompanhado por logs. A rotina só é confiável quando uma restauração é executada em ambiente separado e os dados esperados são conferidos.
Veja a infraestrutura: VPS com monitoramento e backup semanal para colocar este projeto no ar.
Defina o objetivo de recuperação
Pergunte quanto de dados pode ser perdido e quanto tempo a recuperação pode levar. Um dump diário pode não atender uma aplicação que precisa de recuperação por minuto. Para bases grandes ou requisitos rigorosos, combine backups físicos, WAL/PITR e testes documentados.
Gere um dump custom
export PGHOST=127.0.0.1
export PGPORT=5432
export PGUSER=backup_user
export PGDATABASE=appdb
pg_dump --format=custom --file=/var/backups/postgresql/appdb-$(date +%F).dump
Não coloque senha na linha de comando. Use .pgpass com permissões 600, secret manager ou autenticação apropriada. O usuário de backup deve ter somente os privilégios necessários.
Confira o arquivo:
pg_restore --list /var/backups/postgresql/appdb-2026-09-09.dump | head
Envie para um destino separado
Copie para storage externo ou outro host com criptografia e retenção. Ter três cópias no mesmo disco não protege contra falha do volume ou exclusão acidental. Verifique tamanho, data e código de saída do processo.
Restaure em banco isolado
createdb -h 127.0.0.1 -U postgres appdb_restore_test
pg_restore -h 127.0.0.1 -U postgres \
--dbname=appdb_restore_test --clean --if-exists \
/var/backups/postgresql/appdb-2026-09-09.dump
psql -d appdb_restore_test -c 'select count(*) from tabela_critica;'
Use um banco e credenciais de teste. Não restaure sobre produção para “ver se funciona”. Valide tabelas essenciais, sequência, extensões e permissões da aplicação.
Automatize com responsabilidade
Um timer pode criar o dump, calcular checksum, enviar ao destino e falhar se qualquer etapa retornar erro. Adicione lock, rotação e alerta. Simule uma restauração em uma frequência compatível com o risco; a janela deve medir também tempo e consumo de recursos.
Durante um backup, monitore espaço e I/O. Hospedar banco em uma VPS exige reservar margem para dados, dumps temporários e logs.
Checklist
- [ ] RPO/RTO definidos.
- [ ] Credencial sem senha no comando.
- [ ] Destino fora do volume principal.
- [ ] Dump listado e checksum registrado.
- [ ] Restauração isolada validada.
FAQ
pg_dump bloqueia o banco?
Ele usa um snapshot consistente, mas ainda pode gerar carga e interagir com locks. Teste o impacto e escolha a janela adequada.
Posso guardar só o último dump?
Isso reduz a capacidade de voltar antes de uma corrupção descoberta tarde. Defina retenção conforme o risco e o custo.
O que registrar por execução
Guarde nome da base, início e fim, tamanho, checksum, versão do cliente, destino e código de saída. Não grave a senha nem dados completos do cliente no log. Se o dump falhar por espaço, lock ou permissão, a rotina deve terminar com erro e notificar alguém; um arquivo parcial não pode ser confundido com backup válido. Uma restauração periódica também mede o tempo necessário para recuperar o serviço, informação que o comando de exportação sozinho não fornece.
📦 Template n8n: Agente de IA com WhatsApp + Evolution API
Baixe o arquivo JSON pronto para importar: Webhook configurado, tratamento de remetente, nó de OpenAI e disparo via Evolution API.
Comentários (8)
Excelente artigo sobre indexação e explain analyze. Descobrimos um sequential scan que estava travando o banco nos horários de pico.
As regras de connection pooling com PgBouncer reduziram drasticamente a sobrecarga de conexões no servidor.
Muito bom o comparativo entre bancos relacionais e vetoriais para aplicações de busca semântica. Ajudou muito na escolha da arquitetura.
O particionamento de tabelas por data salvou nossa base de logs. Consultas que levavam minutos agora rodam em milissegundos.
Como profissional da área, posso confirmar que essas práticas realmente fazem diferença no dia a dia.
Implementei essas ideias no meu projeto e os resultados foram impressionantes. Obrigado pelo conhecimento compartilhado!
Excelente conteúdo! Aprendi conceitos que não encontrava em outros lugares em português.
Artigo muito bem escrito e explicativo! Já compartilhei com toda a equipe da empresa. Tem algum repositório GitHub com exemplos práticos?