実稼働環境で 3 メンバーの MongoDB レプリカ セットを実行しています。
内部分析を行うには、「ミラー」と呼ばれるそのレプリカセットのクローンを維持する必要があります。このミラーはリアルタイムである必要はありませんが、最新であるほど良いです (最大で 1 日遅れる可能性があります)。
このようなミラーリングされたデータベースを維持するための最も適切な方法は何ですか? (このミラーは、1 メンバーの replset またはスタンドアロン インスタンスのいずれかであることに注意してください)
参考までに、2 つのオプションを試しましたが、速度が許容できませんでした。
- Oplog の再生。しかし、これには非常に時間がかかりました (replset のプライマリから oplog を再生するのに約 40 時間)。
- 本番replsetのスナップショットを定期的に使用していますが、ウォームアップされていないため、新しいボリューム(スナップショットから作成された)は非常に遅かったです(AWS EBSを使用しているため、ウォームアップには約12時間かかりました)
Update #1
: また、ミラーを replset メンバーにしようとしましたが、ミラーを replset から分離したかったため、このオプションは要件を満たしていません。
Update #2
: このミラーを replset メンバーにしたくない理由: このミラーに対して大量のクエリを実行し、リソース クレジット (ディスク IO、ネットワーク IO、CPU) を使い果たし、インスタンスが一時的に使用できなくなりました。これにより、replset 構造全体が変更されました (ノードが 1 つ失われたため)。インスタンスが再び使用可能になると、replset 構造が再び変更されました (ノードが 1 つ追加されました)。これらの変更は replset に大きな影響を与えました。
ありがとうございました。