2017-07-12 13 views
1

MongoDB v3.2.4を使用して3つのメンバーレプリカセットがあります。各メンバーは8コアと8GB RAMのVMで、通常の動作ではこれらのノードのCPU消費量とメモリ消費量は非常に低くなっています。多くの挿入を実行するとMongoDBレプリカの同期が外れる

私はPigで書かれたMap/Reduceジョブによって月に一度完全にリロードされる60GBのデータベース(3000万のドキュメント)を持っています。このジョブ中にクラスターは30kの挿入/挿入を受け取り、数秒後にセカンダリーが同期しなくなります。

現在のoplogのサイズは20GBです(既定値から変更済みです)。これではレプリケーションの同期の問題は解決されません。

oplogサイズをもう一度変更すると役立ちますか分かりません。私の懸案事項は、プライマリに負荷がない場合にレプリケーションが実行されているように見えることです。私の挿入ジョブは1時間続くので、それは私のデータベースのサイズをoplog必要があるという意味ですか?

MongoDBにレプリケーションに多くの労力をかけ、挿入とレプリケーションの受け入れのバランスが取れたワークロードを持つように指示する方法はありますか?

+0

MongoDBはリアルタイムで複製されませんが、それは最終的には一貫性のより多くのです。プライマリの負荷が大きい場合、この遅延は長くなる可能性があります。いつか待って、​​セカンダリーが一貫しているかどうかを確認してください。 – Saleem

答えて

1

受け入れて挿入し、これらのインサートをreplicatings間のよりバランスの取れたワークロードを持つように複製に多くの努力を入れてモンゴを伝える方法はありますか?データを確実にするために

はセカンダリに複製(およびあなたの挿入を絞る)あなたはwrite concernw:majorityにを増やす必要がありました。デフォルトの書き込みの懸念(w:1)は、書き込み操作がプライマリによって受け入れられたことを確認するだけです。したがって、セカンダリが長時間の挿入を続行できない場合は、(経験したように)最終的には同期が外れます。

あなたが例えば、あなたのMongoDB Connection String URIのオプションとして過半数を含めることができます。

STORE data INTO  
    'mongodb://user:[email protected],db2.example.net/my_db.my_collection?replicaSet=replicaSetName&w=majority' 
USING com.mongodb.hadoop.pig.MongoInsertStorage('', ''); 
+0

大多数のノードでレプリケーションを強制すると、レプリケーション機能をスキップして問題を解決する必要があります。職場の見直しは問題ではないので、これを追加することは容認されるべきです。 – loicmathieu

関連する問題