Cuidado: processo de backup e restauração do banco de dados ao testar coisas

Estou prestes a testar um processo de importação de uma quantidade enorme de conteúdo, mas quero ter certeza de que consigo reverter corretamente caso algo dê errado.

Eu executo uma instância externa do PostgreSQL, então minha ideia é que não preciso realmente fazer backup da instância Discourse Rails no Docker, mas apenas do banco de dados, seguindo os seguintes passos:

BACKUP:

  1. ./launcher stop app
  2. pg_dump -U username -p 12345 -W -F p databasename | xz > ~/backup/database/$(date +"%d-%m-%Y_%H.%M.%S").databasename.pgsql.xz
  3. ./launcher start app
  4. ### IMPORT CONTENT ###

Se as coisas derem errado, RESTORE:

  1. ./launcher stop app
  2. xzcat ~/backup/database/DATE.databasename.pgsql.xz | psql -U username -p 12345 -W databasename
  3. ./launcher start app

E tudo deve voltar ao normal e funcional… correto?

Provavelmente, existe uma opção de restauração fácil e integrada, que é testada, suportada e requer apenas alguns cliques ou um único comando de linha.

Se o seu método não funcionar, você está por conta própria.

Como mencionei, isso é para um banco de dados PGSQL externo, já que não estou usando a versão Dockerizada e, infelizmente, o método normal de backup/restauração simplesmente não funciona para mim (provavelmente porque estou executando uma versão um pouco mais recente do PGSQL no servidor do banco de dados principal).

Ah, sim. Se você estiver executando o pg11, terá que resolver por conta própria. Se estiver executando o pg10 em um banco de dados externo, deve funcionar.

Mas teste para ver se funciona.

PG11 e PG12 serão suportados em breve no processo de backup e restauração. Fique atento.

Olá. Eles já são suportados?

Eles são! A atualização foi há alguns meses.

Obrigado! Apenas para esclarecer: restaurar um backup em um site Discourse (com conteúdo) deletaria completamente todos os dados da instância externa do banco de dados PostgreSQL (RDS)? Se a restauração falhar ou houver uma desconexão, os dados do RDS ficariam corrompidos?

Ele excluirá todos os dados do banco de dados do Discourse, mas não os demais. Se a restauração falhar, os dados existentes permanecerão.