De tempos em tempos eu preciso restaurar um backup de algum banco para outro ou preencher o banco de um novo ambiente de desenvolvimento local com dados para testes. Como não é uma tarefa diária, nem sempre me lembro como faz, então resolvi juntar aqui o passo a passo até pra facilitar nas próximas vezes e talvez possa também ajudar alguém.
Antes de poder restaurar algum backup, precisamos crear o dump! O comando utilizado
para isso é o pg_dump
que já nos devolve um dump da tabela inteira - se
quiser saber mais clique aqui
para ler a documentação.
pg_dump dbname > backupfile.sql
No comando acima, extraímos todos os dados do banco (troque dbname pelo nome
da sua tabela) e jogamos em um arquivo .sql
. Pronto, já temos o backup salvo.
Dica: esse é um jeito bem fácil de manter backup de seus bancos. Recomendo
criar um comando que faça esse backup e utilizar o
Cron para fazer isso
automaticamente sempre.
Para restaurar o backup num banco, o postegres também nos permite fazer isso de um jeito bem simples, mas tem alguns detalhes:
- o banco precisa existir com o mesmo nome do banco que foi extraído.
- o banco não pode ter as tabelas criadas, senão vai dar conflito e a restauração não vai dar certo.
Nesse caso, se o banco já existir primeiro eu dou dropdb db_name
que vai
deletar o banco (IMPORTANTE, eu só faço isso em bancos locais, porque isso
apaga todos os dados do banco, então NUNCA faça isso em produção a menos
que você saiba exatamente o que está fazendo. Dá justa causa, hein? Deus tá
vendo). Depois de deletar, precisamos recriá-la senão a restauração não vai
funcionar por não encontrar o banco. Para recriá-lo: createdb db_name
Por fim, para restaurar os dados, jogamos o arquivo no novo banco:
psql dbname < infile
Pronto, temos um banco restaurado! Para mim esse processo é fundamental em dois momentos: quando por algum motivo - normalmente tenso - eu preciso restaurar o banco em produção ou quando vou começar um novo ambiente de desenvolvimento e preciso de dados para testar o app e as mudanças que estou fazendo.