先月、さまざまなシナリオと Docker コンテナで無数の移行テストを実施しました。さらに、私はサーバー間で Discourse のデータベースリストアをさらに多く行いました。
広範な復旧テストに基づき、Discourse のリストアプロセスは素晴らしく、コマンドラインからあらゆる状況で完璧に機能しています。
例えば、私たちは非常に原始的なスクリプトを使用しており、それを /shared/neo/bin ディレクトリに保存しています。
#!/bin/bash
echo "cd /var/www/discourse"
cd /var/www/discourse
echo "discourse enable_restore"
discourse enable_restore
echo "begin neo restore"
discourse restore unix-com-community-2020-03-27-033157-v20200320193612.tar.gz
echo "discourse disable_restore"
discourse disable_restore
もちろん、この小さな Bash スクリプトは必須でも優雅でもありませんが、忙しい際に「簡単かつ高速」にするような小さなスクリプトは、最新のバックアップをスクリプトにコピー&ペーストしてリストアを実行する際に本当に役立ちます。
私自身は、常にコマンドライン(アプリ内、そしてもちろん Docker 内でも)でリストアを行っており、多くのテストシナリオを経て、Discourse のリストアプロセスは一度も失敗したことがありません。新しい Discourse の Docker インストールを作成し、コマンドラインからリストアするだけで、「ブーム」と完了します。
Docker 以前の「恐竜時代の過去」と比較すると、Docker 環境における Discourse のリストアプロセスの素晴らしさが、復旧プロセスをはるかに容易かつ高速にしています。
例えば、私たちは Discourse のバックアップをオフサイト(本番 Discourse インスタンスとは異なるサーバー)にコピーしており、もし本番サーバーまたはデータセンターが災害で「爆発」しても、任意のサーバーからゼロから Discourse インスタンスを再構築し、簡単にリストアできます(もちろん DNS の TTL を短く保つ必要がありますが、それは別の話題です)。
Discourse チームに、これほどよく考えられ、優に設計されたバックアップおよび復旧プロセスを提供したことを心から称賛します!
何度でも、欠陥なく、完璧に機能します。