Como testar a restauração de um backup PostgreSQL sem mexer na produção

Ilustração de banco de dados PostgreSQL sendo restaurado em ambiente de teste isolado

Teste a restauração em uma instância PostgreSQL separada da produção. Aponte os clientes para o servidor de teste, crie um banco vazio e restaure uma cópia do arquivo. Depois, confira se o banco restaurado atende às verificações da aplicação. O procedimento serve para validar o arquivo e o roteiro de recuperação.

Antes de rodar os comandos

  • Use uma instância de teste isolada, com usuário próprio e sem credencial de produção. Confira endereço, porta e usuário no terminal antes de conectar.
  • Identifique o formato do arquivo. Dumps em formato custom vão para o pg_restore. Dumps em SQL de texto vão para o psql. A extensão do arquivo por si só pode enganar.
  • Proteja o dump e o ambiente de teste como você protege os dados de produção. Se o arquivo inclui dados pessoais, restrinja o acesso e evite integrar essa instância a serviços externos.

A documentação do pg_restore recomenda examinar um dump de origem não confiável antes de restaurar. Um arquivo de dump pode conter comandos executáveis no servidor de destino.

Crie o banco de teste

Os exemplos usam pg-teste.interno como endereço ilustrativo e operador_teste como usuário de teste. Use os seus próprios valores e confirme que o servidor corresponde à instância isolada. Crie o banco com a conta autorizada para essa tarefa.

createdb --host=pg-teste.interno --username=operador_teste --template=template0 banco_teste

A opção --template=template0 cria o banco a partir do modelo padrão sem personalizações de template1. Veja o manual de createdb e a seção Notes do pg_dump.

Restaure de acordo com o formato

Para um arquivo custom, pg_restore -l mostra o conteúdo do arquivo. Confira os objetos esperados antes da restauração. A opção --single-transaction executa a restauração em uma transação e implica --exit-on-error.

pg_restore -l backup.dump
pg_restore -h pg-teste.interno -U operador_teste -d banco_teste --single-transaction backup.dump

Para um dump SQL de texto que restaura no banco indicado, passe o arquivo para psql. Confira antes se o dump contém instruções para criar ou trocar de banco. --no-psqlrc evita configurações locais do cliente, e ON_ERROR_STOP=on interrompe o processamento quando ocorre erro.

psql -h pg-teste.interno -U operador_teste -d banco_teste -X --set=ON_ERROR_STOP=on -f backup.sql

As opções estão nos manuais de pg_restore e psql.

Confira os objetos e os dados restaurados

Verifique o código de saída e leia as mensagens do cliente. No banco de teste, compare os schemas, as tabelas, as extensões e uma amostra de consultas com a lista que você espera encontrar. Compare os resultados com as expectativas para a data do backup. Se fizer sentido, execute um fluxo de leitura da aplicação apontado exclusivamente para o ambiente de teste.

A documentação recomenda rodar ANALYZE após a restauração para atualizar as estatísticas. O psql aceita uma instrução SQL pela opção --command, também disponível como -c.

psql -h pg-teste.interno -U operador_teste -d banco_teste --command='ANALYZE;'

Se houver erro de versão ou dependência

A saída do pg_dump geralmente pode ser carregada em servidores PostgreSQL de versões mais novas. Consulte as notas de compatibilidade do pg_dump antes de misturar versões. Registre a versão do cliente que gerou o arquivo e a do destino. Para ensaiar uma migração, use a versão de destino planejada. Se o erro citar uma extensão ou função, confira as dependências no servidor de teste.

Conteúdo complementar do Hora de Codar para conhecer o canal; não é uma demonstração específica desta notícia ou versão.

Onde fazer o ensaio

Se você precisa de outra máquina para validar a restauração, uma VPS da Hostinger pode servir como ambiente separado (link de afiliado da Hostinger). Dimensione o espaço para guardar o dump e carregar o banco. A Hostinger também oferece backup e restauração da VPS. Esse recurso cobre o servidor. O teste acima verifica se um dump específico do PostgreSQL é recuperável.

Guarde a data, o arquivo, as versões e os resultados das consultas do ensaio. Assim você consegue repetir o mesmo roteiro quando precisar recuperar o banco.

Quer aprender mais sobre inteligência artificial e programação na prática? Conheça o canal Hora de Codar no YouTube e acompanhe os próximos vídeos.

Escrito por | Matheus Battisti

Matheus Battisti
Fundador da Hora de Codar

Programador apaixonado pelo mundo das tecnologias, sempre buscando em aprender e se aprofundar em linguagens, frameworks e o que mais for necessário para executar um bom trabalho. Agora tem uma nova missão que é de passar seu conhecimento adiante para formar novos programadores e especializar mais os que já são.

Formações

Formação Claude Code

Formação Claude Code

Domine Claude Code do absoluto zero até o avançado

  • 120 aulas
  • 4 projetos
  • 9h 48min

Blog | Mais populares