复制集中的mongodb节点是否需要时间同步?

时间:2012-04-09 04:05:21

标签: mongodb replication

“MongoDB in Action”一书中说:

  

想象一下,您对副本集的主节点发出写入。接下来发生什么?首先,记录写入然后添加到   小学的oplog。与此同时,所有的仲裁员都有自己的oplog   复制主要的oplog。所以当给定的辅助节点是   准备更新自己,它做了三件事。首先,它看着   最新条目的时间戳记在自己的oplog中。接下来,它查询   所有条目的主要oplog大于该时间戳。最后,   它将每个条目添加到自己的oplog中并应用条目   对自己

所以这意味着节点必须时间同步?因为所有节点上的时间戳必须相等。

2 个答案:

答案 0 :(得分:4)

一般来说,是的,让主机同步是一个非常好的主意(NTP是通常的解决方案)。事实上,我发现导致的问题比不同步的oplog更糟糕 - 群集中的数据库主机上的不同时间应该被认为是必须的。

实际上,在文档中的“生产注释”页面上提到了这一点:

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

请参阅有关最小化时钟偏差的说明。

答案 1 :(得分:1)

根据您提供的文字,节点基于最近收到的写入的时间戳,而不是他们自己的时钟。但是,当主服务器降级且辅助服务器成为主服务器时,会出现问题。如果时间偏差很大,可能会导致复制延迟或出现其他问题。