web-dev-qa-db-ja.com

MongoDBをRocksDBからWiredTigerに移行する

私たちはしばらくの間RocksDBをエンジンとして使用しており、現在はWiredTigerへの移行を試みています。 4〜12あたりのかなり大きなデータベースがいくつかありますTBデータのドキュメントです。ドキュメントに記載されているプロセスに従って、WiredTigerを使用して新しいノードを追加し、最初から複製することを試みました。

データの量が多いと、複製時間は非常に長くなり、WiredTigerノードが複製元のノードを変更して、すべてのデータを削除して最初からやり直すという状況に陥ったのは、かなりの時間でした。複製の完了に成功したのは1回だけですが、ノードはoplogと比べてかなり遅れました。

繰り返しになりますが、この量のデータでは、数週間のトランザクションを保持するのに十分な大きさのoplogを持つことは禁止され、プロセスも非常に脆弱で、シングルスレッドであり、遅く、失敗する傾向があります。

だから私の質問は次のとおりです:

  1. この移行を進めるためのより良い方法はありますか?

  2. レプリケーション(つまり、マルチスレッドレプリケーション)を高速化する方法はありますか?

  3. 事故が発生した場合にすべてのデータのドロップを停止するように新しいWiredTigerノードに指示する方法はありますか?

Percona MongoDBバージョン3.4.13の3ノードと5ノードのレプリカセットを使用して、オープンソースMongoDB 3.4.13に移行しようとしています(WiredTigerで4.xにアップグレードし、RocksDBとPerconaを完全に削除するという考え)。 。

5
user164848

レプリケーションがプライマリに追いつけず、oplogを拡張できない場合は、展開をシャーディングして...

  • 小さな破片をより速く複製させる

    または

  • 元のシャードをドレインし、デプロイメントから削除します-これにより、ストレージエンジンの問題は解決しますが、レプリケーションは以前と同じように遅延します

1
Iľja