慎重に行う:テスト時のデータベースバックアップとリストア手順

これから大量のコンテンツをインポートするプロセスをテストしようとしていますが、何か問題が起きた場合に正しくロールバックできるか確認したいと考えています。

私は外部の PostgreSQL インスタンスを運用しているため、Docker 内の Discourse Rails インスタンス自体をバックアップする必要はなく、データベースだけを以下の手順でバックアップすればよいと考えています。

バックアップ:

  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. ### コンテンツをインポート ###

もし問題が発生した場合は、以下の手順でリストアします:

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

これで正常に動作する状態に戻るはずです…合っていますか?

おそらく、テスト済みでサポートされており、数回のクリックまたは単一のコマンドラインだけで復元できる組み込みの簡単な機能があるでしょう。

もしあなたの方法が機能しない場合、それは自己責任です。

前述の通り、これは外部の PGSQL データベース用です。Docker 化されたものを使用していないため、残念ながら通常のバックアップ/リストア方法ではうまくいきません(おそらく、大型 DB サーバー上で少し新しいバージョンの PGSQL を実行しているためでしょう)。

ああ、そうですか。pg11 を実行している場合は、ご自身で対応する必要があります。外部データベースで pg10 を実行している場合は、問題ないはずです。

ただし、動作確認をして実際に動くか確認してください。

バックアップとリストアのプロセスで、まもなく PG11 および PG12 に対応します。お楽しみに。

こんにちは。現在サポートされていますか?

はい、そうです!アップグレードは数ヶ月前に行われました。

ありがとうございます!確認させてください。Discourse サイト(コンテンツ付き)にバックアップを復元すると、外部の PostgreSQL インスタンス(RDS)からすべてのデータが完全に削除されますか?また、復元が失敗したり、接続が切れたりした場合、RDS のデータが破損する可能性はありますか?

Discourseデータベースからすべてのデータを削除しますが、他のデータは削除されません。復元が失敗した場合、既存のデータは保持されます。