CodeGym /Cursos /SQL SELF /Criando backups básicos com pg_dump

Criando backups básicos com pg_dump

SQL SELF
Nível 43 , Lição 2
Disponível

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:

  1. 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.

  1. 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.

  1. 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.

  1. 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.

2
Tarefa
SQL SELF, nível 43, lição 2
Bloqueado
Backup apenas da estrutura do banco de dados
Backup apenas da estrutura do banco de dados
Comentários
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION