4

「MongoDBinAction」の本には次のように書かれています。

レプリカセットのプライマリノードに書き込みを発行するとします。次は何が起こる?まず、書き込みが記録されてから、プライマリのoplogに追加されます。一方、すべてのセカンダリには、プライマリのoplogを複製する独自のoplogがあります。したがって、特定のセカンダリノードがそれ自体を更新する準備ができると、3つのことを実行します。まず、独自のoplogの最新エントリのタイムスタンプを確認します。次に、そのタイムスタンプより大きいすべてのエントリについてプライマリのoplogにクエリを実行します。最後に、それらの各エントリを独自のoplogに追加し、エントリをそれ自体に適用します。

つまり、ノードは時間同期されている必要がありますか?タイムスタンプはすべてのノードで等しくなければならないためです。

4

2 に答える 2

4

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

これは実際には、ドキュメントのプロダクション ノート ページに記載されています。

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

クロック スキューの最小化に関する注記を参照してください。

于 2012-04-09T10:14:27.977 に答える
1

あなたが提供した書き込みに基づいて、ノードは、独自のクロックではなく、最近受信した書き込みのタイムスタンプにすべてを基づいています。ただし、マスターがステップ ダウンされ、セカンダリがプライマリになると、問題が発生します。時間が大幅にずれていると、レプリケーションの遅延やその他の問題が発生する可能性があります。

于 2013-05-21T10:28:33.660 に答える