Essere prudenti: processo di backup e ripristino del database durante i test

Sto per testare un processo di importazione di una grande quantità di contenuti, ma voglio assicurarmi di poter ripristinare correttamente il sistema nel caso in cui qualcosa vada storto.

Gestisco un’istanza PostgreSQL esterna, quindi penso che non sia necessario eseguire il backup dell’istanza Discourse Rails in Docker, ma solo del database seguendo questi passaggi:

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 le cose dovessero andare male, RIPRISTINO:

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

Il sistema dovrebbe tornare a essere stabile e funzionante… corretto?

Probabilmente esiste una funzione di ripristino integrata, semplice da usare, testata e supportata, che richiede solo un paio di clic o un singolo comando da riga di comando.

Se il tuo metodo non funziona, sei da solo.

Come ho già notato, questo riguarda un database PGSQL esterno, dato che non sto utilizzando quello in Docker e, purtroppo, il normale metodo di backup/ripristino non funziona per me (probabilmente perché sto eseguendo una versione leggermente più recente di PGSQL sul server del database principale).

Oh, sì. Se stai eseguendo pg11, sei da solo. Se stai eseguendo pg10 su un database esterno, dovrebbe andare bene.

Ma falli dei test per vedere se funziona.

PG11 e PG12 saranno supportati molto presto nel processo di backup e ripristino. Restate sintonizzati.

Ciao. Sono supportati ora?

Lo sono! L’aggiornamento è stato fatto alcuni mesi fa.

Grazie! Per chiarire, il ripristino di un backup su un sito Discourse (con contenuti) cancellerebbe completamente tutti i dati dall’istanza esterna del database PostgreSQL (RDS)? Se il ripristino fallisce o si interrompe, i dati su RDS verrebbero corrotti?

Cancellerà tutti i dati dal database di Discourse, ma non quelli degli altri. Se il ripristino fallisce, i dati esistenti rimarranno invariati.