最近、vBulletin から Discourse へ移行しました。
Discourse とそのツールの使い方をまだ学習中です。
懸念事項の一つに、障害復旧(ディザスタリカバリ)があります。
長時間保存される自動スナップショットを保持しています。
また、Discourse 内のツールを使用して毎日バックアップを取得し、S3 バケットに 15 日間保存しています。
スナップショットからの復元は比較的 straightforward です。
考え方は、動作する最後の利用可能なスナップショットから復元し、その後、最後の利用可能なバックアップを使用してコンテンツを復元するというものです。
いくつかの Discourse プラグインを試すためのテストマシンが必要でした。
そこで、障害復旧計画を試す良い機会となりました。
しかし、スナップショットを使用する代わりに、ゼロから復元を試みました(万が一すべてのことが悪化し、利用可能なバックアップを復元するために最初からやり直す必要がある場合に備えて)。
Debian マシンを作成し、ソフトウェアを更新して、Discourse をゼロからインストールしました(プラグインはインストールせず、最低限のもののみ)。その後、HTTPS を設定して動作を確認し、最後のバックアップの復元を試みました。
データベースの更新中に失敗しました。
いくつかのテーブルに特定の列が存在しないというエラーが発生し、ロールバックされました。結果として、ほぼ何もない元の状態に戻ってしまいました。
エラーメッセージやここにあるいくつかのスレッドを読むと、Discourse のバージョンの違いが原因かもしれないと気づきました。
確認したところ、新しいフォーラムのバージョンが元のフォーラムより少し新しいことがわかりました。
元のフォーラムを最新バージョンにアップグレードし、バックアップを作成しました。
復元を試みましたが、同様のエラーで再び失敗しました。
そのため、新しいフォーラムに同じプラグインがインストールされていなかった可能性があります。
そこで、app.yml を変更してプラグインをインストールし、アプリを再ビルドしてから再度試みました。
今回は正常に動作しました。
しかし、依然として心配でした。
バックアップを復元する際、完全に同じプラグインとバージョンがインストールされたマシンでなければ、正常な復元は難しいでしょう。
今回は古いフォーラムが稼働しており、バージョンを確認して最新のものに更新することが容易でした。
しかし、災害からの復旧時には、バージョンを確認したりソフトウェアをアップグレードしたりする機会がありません。
どのように解決していますか?
バックアップには、インストールされているプラグインや Discourse、プラグインのバージョンに関する情報が含まれていますか?
バックアップと一致する適切な Discourse およびプラグインのバージョンを持つ基本的な Discourse インスタンスをどのように作成しますか?
ご指導いただき、ありがとうございます。