pg_dump é uma ferramenta de linha de comando que vem junto com o PostgreSQL e permite exportar um banco de dados para um arquivo de backup. Esse arquivo pode conter só a estrutura do banco, só os dados ou os dois juntos.
A maior vantagem do pg_dump é que ele deixa você transferir dados entre servidores, restaurar o banco depois de algum problema ou só criar um arquivo para guardar por bastante tempo. Vale lembrar que essa ferramenta é mais indicada pra backup lógico (usando comandos SQL) do que pra cópia física dos arquivos do banco.
Sintaxe básica do comando pg_dump
Pra criar um backup usando o pg_dump, é só rodar esse comando no terminal:
pg_dump -U username -d database_name -f backup_file.sql
Bora entender o que cada parte faz:
-U username— define o nome do usuário do PostgreSQL que vai se conectar ao banco.-d database_name— diz qual banco de dados você quer fazer o backup.-f backup_file.sql— mostra onde salvar o arquivo de backup. Pode ser um caminho completo ou relativo.
Exemplo: imagina que você tem um banco chamado university e quer criar um backup no arquivo university_backup.sql. O comando vai ficar assim:
pg_dump -U postgres -d university -f university_backup.sql
Nessa hora, o PostgreSQL vai pedir a senha do usuário postgres pra liberar o acesso aos dados.
Dica: se você tá usando o servidor local e não quer digitar a senha toda vez, configura o arquivo .pgpass. Dá uma olhada na documentação oficial do PostgreSQL pra ver como faz isso.
Parâmetros e como usar
A ferramenta pg_dump é bem flexível e dá pra configurar de vários jeitos pra criar backups do jeito que você quiser:
- Backup só da estrutura do banco
Se você quiser salvar só a estrutura do banco (tipo pra montar ele em outro servidor), usa o flag --schema-only. Exemplo de comando:
pg_dump -U postgres -d university --schema-only -f university_schema.sql
Isso vai criar um script SQL só com os comandos CREATE TABLE, CREATE INDEX e por aí vai, sem os dados.
- Backup só dos dados
Às vezes você só quer salvar os dados, sem a estrutura. Nesse caso, usa o flag --data-only:
pg_dump -U postgres -d university --data-only -f university_data.sql
O arquivo gerado vai ter comandos INSERT INTO pra restaurar seus dados depois.
- Compactando o backup
O arquivo de backup pode ficar bem grande, principalmente se seu banco tiver muita tabela e dado. Pra diminuir o tamanho, usa o parâmetro --compress:
pg_dump -U postgres -d university -f university_backup.sql --compress=6
O nível de compressão vai de 0 (sem compressão) até 9 (compressão máxima). Só lembra que quanto maior o nível, mais tempo demora pra criar o backup.
- Exportando em formato binário
Se você quiser restaurar mais rápido, pode salvar o backup em formato binário em vez de script SQL:
pg_dump -U postgres -d university -Fc -f university_backup.dump
A flag -Fc define o formato Custom, que dá pra restaurar usando a ferramenta pg_restore.
Exemplos de criação de backups
Backup completo do banco
Imagina que você tem um banco chamado company e quer fazer um backup completo, com estrutura e dados:
pg_dump -U postgres -d company -f company_backup.sql
Backup de uma tabela só
Se você só precisa salvar uma tabela do banco, usa o parâmetro -t:
pg_dump -U postgres -d company -t employees -f employees_backup.sql
Esse arquivo vai ter a estrutura e os dados só da tabela employees.
Backup de várias tabelas
Pra fazer backup de várias tabelas, é só colocar vários -t:
pg_dump -U postgres -d company -t employees -t departments -f selected_tables_backup.sql
Backup compactado
Pra economizar espaço, usa o flag --compress ou já cria o arquivo em formato compactado:
pg_dump -U postgres -d company -Fc -f company_backup_compressed.dump
Dicas úteis
Confere o tamanho do arquivo de backup. Se o backup ficou pequeno demais, pode ter dado algum erro. Usa o parâmetro --verbose pra ver mais detalhes do processo de backup.
Automatiza o processo. Usa cron ou pg_cron pra agendar backups regulares. Não esquece de fazer a rotação dos backups antigos pra não lotar o disco.
Testa os backups pra ver se estão certos. Faz o teste restaurando o backup num servidor de testes.
Erros que você pode encontrar
Erro de autenticação. Se você não colocou o usuário certo ou esqueceu a senha, o pg_dump vai dar erro. Confere se o arquivo .pgpass tá configurado pra autenticação automática.
Erro de conexão. Se o servidor PostgreSQL não estiver rodando ou você colocou o nome do banco errado, a ferramenta não vai conseguir criar o backup. Confere o nome do banco e se o servidor tá ligado.
Problema de permissão. O usuário que você usa pra rodar o pg_dump precisa ter permissão pra ler a estrutura e os dados do banco. Usa uma role de admin se puder.
GO TO FULL VERSION