Manter backups confiáveis é uma das tarefas mais importantes para qualquer administrador de banco de dados. No ecossistema PostgreSQL, as ferramentas mais utilizadas para isso são pg_dump e pg_restore. Neste artigo, você vai aprender como fazer backup e restore de bancos de dados PostgreSQL usando essas ferramentas, com foco em segurança, performance e boas práticas.


O que é o pg_dump?

O pg_dump é uma ferramenta nativa do PostgreSQL que gera um script ou arquivo compactado contendo os comandos necessários para recriar o banco de dados ou suas partes.

Ideal para backups lógicos de bancos inteiros, esquemas específicos ou até tabelas individuais.


O que é o pg_restore?

O pg_restore é usado para restaurar backups criados com o pg_dump em formato personalizado ou compactado. Ele oferece controle granular, permitindo restaurar apenas partes específicas do backup, como funções, tabelas ou dados.


Como Fazer Backup com pg_dump

🔹 Backup Completo do Banco de Dados

bash
pg_dump -U postgres -F c -b -v -f /caminho/backup.bak nomedobanco

Explicando os parâmetros:

  • -U postgres: usuário do banco
  • -F c: formato customizado (recomendado)
  • -b: inclui blobs (objetos binários)
  • -v: modo verboso
  • -f: caminho do arquivo de backup

🔹 Backup de Tabela Específica

bash
pg_dump -U postgres -t nome_da_tabela -F c -f /backup/tabela.bak nomedobanco

🔹 Backup de Esquema Específico

bash
pg_dump -U postgres -n nome_do_esquema -F c -f /backup/esquema.bak nomedobanco

Como Fazer Restore com pg_restore

🔹 Restauração Completa

bashCopiarEditarpg_restore -U postgres -d novobanco -v /caminho/backup.bak

⚠️ O banco de dados de destino (novobanco) deve existir antes do restore.

🔹 Restaurar Apenas Estrutura (sem dados)

bash
pg_restore -U postgres -s -d novobanco /caminho/backup.bak

🔹 Restaurar Apenas Dados

bash
pg_restore -U postgres -a -d novobanco /caminho/backup.bak

Dicas de Boas Práticas

  1. Automatize backups diários com cronjobs
  2. Use formato customizado (-F c) para maior flexibilidade
  3. Valide backups com pg_restore --list e restore em ambiente de homologação
  4. Sempre use senha segura ou arquivos .pgpass para automação
  5. Combine com pg_basebackup para backup físico em bancos grandes

Automatizando com Crontab (Linux)

Backup diário às 2h da manhã:

0 2 * * * pg_dump -U postgres -F c -f /backups/diario.bak nomedobanco

Diferenciando pg_dump vs pg_basebackup

FerramentaTipo de BackupIndicado Para
pg_dumpLógicoBackups flexíveis, com granularidade
pg_basebackupFísicoAmbientes grandes, alta performance

Conclusão

Dominar o uso de pg_dump e pg_restore é essencial para qualquer DBA PostgreSQL ou desenvolvedor que gerencia dados em produção. Essas ferramentas oferecem segurança, praticidade e controle sobre o ciclo de vida dos seus bancos de dados.