Dicas de Tecnologia: Como faço para Fazer Backup e Restaurar o Banco de Dados Postgres?
Karan Singh
19 de jun. de 2013
1 min read

Principais Conclusões
Os backups do PostgreSQL podem direcionar uma única tabela, um único banco de dados ou todos os bancos de dados dependendo das suas necessidades.
pg_dumpcria um arquivo de texto SQL contendo DDL e dados necessários para recriar a tabela ou banco de dados alvo.pg_dumpallfaz backup de todos os bancos de dados na instância do Postgres.A restauração é feita com
psql, que executa o dump SQL de volta no banco de dados alvo.Restaurar a nível de tabela requer garantir que a tabela não exista para evitar conflitos.
Ao fazer backup de tabelas individuais, tenha em mente dependências relacionais.
Os dumps podem ser feitos de locais e restaurados em instâncias de Postgres remotas.
Os backups incluem comandos
CREATE,ALTEReCOPYdependendo do que está sendo exportado.Uma estratégia de backup adequada depende de entender relações de tabela, uso de esquemas e ambientes de implantação.
Sempre assegure a integridade dos dados realizando backups que incluam tabelas referenciadas quando necessário.
Destaques de Perguntas e Respostas
O que o pg_dump realmente faz?
pg_dumpgera um arquivo SQL baseado em texto contendo o conjunto completo de comandos necessários para recriar uma tabela ou banco de dados exatamente como existia no momento do backup.Posso fazer backup de apenas uma tabela em vez de um banco de dados completo?
Sim. Use
pg_dump --table TABLENAMEpara exportar uma tabela específica. Se tabelas com o mesmo nome existirem em diferentes esquemas, use--schemapara especificar o correto.Devo me preocupar com tabelas relacionadas ao fazer backup de uma única tabela?
Absolutamente. PostgreSQL é relacional, então outras tabelas podem fazer referência àquela que você está fazendo backup. Se você restaurar apenas uma tabela sem as relacionadas, pode comprometer a integridade referencial.
Como faço para fazer backup de um banco de dados completo?
Executar um comando como:
pg_dump -U <user> <database> -f <output.sql>Isso exporta todas as tabelas, definições de esquema, índices e dados para esse banco de dados.
O que o pg_dumpall faz?
pg_dumpallfaz backup de todas as bases de dados no servidor em um único arquivo SQL. É útil ao migrar ou tirar um instantâneo de uma instância inteira do Postgres.Posso restaurar uma tabela em um banco de dados existente?
Sim. Use
psql -U <user> -f <file.sql> <database>.Mas garanta que a tabela não exista ainda — caso contrário, você receberá erros de “já existe” durante a restauração.
O que acontece durante uma restauração completa do banco de dados?
O arquivo de restauração executa:
CREATE TABLEALTER TABLECOPY(para dados da tabela)
trazendo o banco de dados de volta ao seu estado exato no momento do despejo.
Posso restaurar para um servidor diferente daquele de onde fiz o backup?
Sim. Dumps são portáteis. Você pode fazer um backup localmente e restaurá-lo em uma instância remota do Postgres, desde que as versões sejam compatíveis.
O pg_dump afeta o banco de dados em execução?
Não. Funciona por meio de consultas SQL e não trava o banco de dados inteiro. Ele captura com segurança uma instantânea consistente.
Como faço para restaurar todos os bancos de dados a partir de um arquivo pg_dumpall?
Use:
psql -U <usuário> -f all_dump.sqlIsso recria cada banco de dados encontrado no dump.



