Être prudent : processus de sauvegarde et restauration de base de données lors de tests

Je vais bientôt tester un processus d’importation d’une quantité massive de contenu, mais je veux m’assurer de pouvoir revenir en arrière correctement au cas où les choses tourneraient mal.

Je gère une instance PostgreSQL externe, donc je pense que je n’ai pas vraiment besoin de sauvegarder l’instance Discourse Rails dans Docker, mais simplement la base de données via les étapes suivantes :

SAUVEGARDE :

  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. ### IMPORTER LE CONTENU ###

Si les choses tournent mal, RESTAURATION :

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

Et tout devrait être de nouveau normal et fonctionnel… n’est-ce pas ?

Il existe probablement une solution de restauration intégrée, simple, testée et prise en charge, qui ne nécessite que quelques clics ou une seule commande en ligne.

Si votre méthode ne fonctionne pas, vous êtes seul responsable.

Comme je l’ai mentionné, cela concerne une base de données PGSQL externe, car je n’utilise pas celle conteneurisée par Docker. Malheureusement, la méthode de sauvegarde/restauration standard ne fonctionne tout simplement pas pour moi (probablement parce que j’exécute une version légèrement plus récente de PGSQL sur le serveur de la grande base de données).

Ah, oui. Si vous utilisez pg11, vous êtes livré à vous-même. Si vous utilisez pg10 sur une base de données externe, cela devrait fonctionner.

Mais testez-le pour voir si cela fonctionne.

PG11 et PG12 seront bientôt pris en charge dans le processus de sauvegarde et de restauration. Restez à l’écoute.

Bonjour. Sont-ils pris en charge maintenant ?

C’est vrai ! La mise à niveau a eu lieu il y a quelques mois.

Merci ! Pour préciser, la restauration d’une sauvegarde sur un site Discourse (avec son contenu) supprimerait-elle complètement toutes les données de l’instance PostgreSQL externe (RDS) ? Si la restauration échoue ou si la connexion est perdue, les données RDS seraient-elles corrompues ?

Cela supprimera toutes les données de la base de données Discourse, mais pas les autres. Si la restauration échoue, les données existantes resteront intactes.