2012-04-09 13 views
4

「MongoDBのアクションで」本は言う:レプリカセット内のmongodbノードは時間同期する必要がありますか?

あなたはレプリカセットのプライマリノードへの書き込みを発行想像してみてください。次は何が起こる?まず、書き込みが記録され、次にプライマリのoplogの に追加されます。一方、すべてのセカンダリにはプライマリのoplogをレプリケートする独自のoplogがあります( )。したがって、与えられたセカンダリノードが自身を更新する準備が整った の場合、3つのことが行われます。まず、最新のエントリのタイムスタンプ を表示します。次に、 プライマリのoplogに、そのタイムスタンプより大きいすべてのエントリを照会します。最後に、 は、それが自身のoplogにこれらのエントリのそれぞれを追加し、

自体にエントリ を適用するので、これは、ノードが時刻を同期させる必要があります意味しますか?タイムスタンプはすべてのノードで等しくなければならないからです。

答えて

4

一般的に、はい、ホストを同期させることは非常に良い考えです(NTPは通常の解決策です)。実際には、同期外れの問題よりもはるかに悪い問題が発生しています。クラスタ内のデータベースホストのさまざまな時期を必須と見なす必要があります。

これは、実際のドキュメントに制作ノートページに記載されています。

http://www.mongodb.org/display/DOCS/Production+Notes#ProductionNotes-Linux

は、クロック・スキューを最小限に抑えることに関する注意を参照してください。

1

あなたが指定した書き込みに基づいて、ノードは自分の時計ではなく、直前に受信した書き込みのタイムスタンプ上のすべてをベースにしています。ただし、マスターがステップダウンされ、セカンダリがプライマリになるときに問題が発生します。時間が大幅にずれていると、レプリケーションが遅延するなどの問題が発生する可能性があります。

関連する問題