プラグインを含むバックアップからの復元に最適な方法は?

最近、vBulletin から Discourse へ移行しました。

Discourse とそのツールの使い方をまだ学習中です。

懸念事項の一つに、障害復旧(ディザスタリカバリ)があります。

長時間保存される自動スナップショットを保持しています。

また、Discourse 内のツールを使用して毎日バックアップを取得し、S3 バケットに 15 日間保存しています。

スナップショットからの復元は比較的 straightforward です。

考え方は、動作する最後の利用可能なスナップショットから復元し、その後、最後の利用可能なバックアップを使用してコンテンツを復元するというものです。

いくつかの Discourse プラグインを試すためのテストマシンが必要でした。

そこで、障害復旧計画を試す良い機会となりました。

しかし、スナップショットを使用する代わりに、ゼロから復元を試みました(万が一すべてのことが悪化し、利用可能なバックアップを復元するために最初からやり直す必要がある場合に備えて)。

Debian マシンを作成し、ソフトウェアを更新して、Discourse をゼロからインストールしました(プラグインはインストールせず、最低限のもののみ)。その後、HTTPS を設定して動作を確認し、最後のバックアップの復元を試みました。

データベースの更新中に失敗しました。

いくつかのテーブルに特定の列が存在しないというエラーが発生し、ロールバックされました。結果として、ほぼ何もない元の状態に戻ってしまいました。

エラーメッセージやここにあるいくつかのスレッドを読むと、Discourse のバージョンの違いが原因かもしれないと気づきました。

確認したところ、新しいフォーラムのバージョンが元のフォーラムより少し新しいことがわかりました。

元のフォーラムを最新バージョンにアップグレードし、バックアップを作成しました。

復元を試みましたが、同様のエラーで再び失敗しました。

そのため、新しいフォーラムに同じプラグインがインストールされていなかった可能性があります。

そこで、app.yml を変更してプラグインをインストールし、アプリを再ビルドしてから再度試みました。

今回は正常に動作しました。

しかし、依然として心配でした。

バックアップを復元する際、完全に同じプラグインとバージョンがインストールされたマシンでなければ、正常な復元は難しいでしょう。

今回は古いフォーラムが稼働しており、バージョンを確認して最新のものに更新することが容易でした。

しかし、災害からの復旧時には、バージョンを確認したりソフトウェアをアップグレードしたりする機会がありません。

どのように解決していますか?

バックアップには、インストールされているプラグインや Discourse、プラグインのバージョンに関する情報が含まれていますか?

バックアップと一致する適切な Discourse およびプラグインのバージョンを持つ基本的な Discourse インスタンスをどのように作成しますか?

ご指導いただき、ありがとうございます。

プラグインがデータベースをいじくることは稀です。

ジェフ、問題はプラグインが機能していないことではありません。

バックアップを復元する際、元のバックアップ作成時に使用していたのと完全に同じ Discourse のリリースバージョンを実行し、同じプラグインがインストールされている必要があります。

しかし、過去のバックアップを復元する場合、その時点でどのバージョンやプラグインが使用されていたかを正確に把握することはできません。

バックアップファイルから、バックアップ作成時にインストールされていたバージョンとプラグインの一覧を表示し、復元インターフェースで確認できるようにすると役立つでしょう。

いいえ、それは誤りです。

サードパーティ製のプラグインを実行されていますか?私の知る限り、公式のDiscourseプラグインではこのような問題は発生しないはずです。

つまり、バックアップと同じバージョンを正確に実行していなくても、復元は可能なのでしょうか?
私は復元時にエラーが発生し、それがバージョンの違いによるものだと思っていました。

復元前に、バックアップの Discourse バージョンとプラグインのバージョンを確認できれば、非常に助かります。

私はサードパーティ製のプラグインを「Topic List Preview」のみ実行しています。

いくつかのリトライの後(何も変更せずに)、バックアップの復元に成功しました。
奇妙なことに、そのうちの一つはエラーなしで復元されました。

私がこの問題を抱えている唯一の人ではないことがわかりました: