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
bashpg_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
bashpg_dump -U postgres -t nome_da_tabela -F c -f /backup/tabela.bak nomedobanco
🔹 Backup de Esquema Específico
bashpg_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)
bashpg_restore -U postgres -s -d novobanco /caminho/backup.bak
🔹 Restaurar Apenas Dados
bashpg_restore -U postgres -a -d novobanco /caminho/backup.bak
Dicas de Boas Práticas
- Automatize backups diários com cronjobs
- Use formato customizado (
-F c
) para maior flexibilidade - Valide backups com
pg_restore --list
e restore em ambiente de homologação - Sempre use senha segura ou arquivos
.pgpass
para automação - 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
Ferramenta | Tipo de Backup | Indicado Para |
---|---|---|
pg_dump | Lógico | Backups flexíveis, com granularidade |
pg_basebackup | Físico | Ambientes 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.