“MongoDB in Action”一书中说:
想象一下,您对副本集的主节点发出写入。接下来发生什么?首先,记录写入然后添加到 小学的oplog。与此同时,所有的仲裁员都有自己的oplog 复制主要的oplog。所以当给定的辅助节点是 准备更新自己,它做了三件事。首先,它看着 最新条目的时间戳记在自己的oplog中。接下来,它查询 所有条目的主要oplog大于该时间戳。最后, 它将每个条目添加到自己的oplog中并应用条目 对自己
所以这意味着节点必须时间同步?因为所有节点上的时间戳必须相等。
答案 0 :(得分:4)
一般来说,是的,让主机同步是一个非常好的主意(NTP是通常的解决方案)。事实上,我发现导致的问题比不同步的oplog更糟糕 - 群集中的数据库主机上的不同时间应该被认为是必须的。
实际上,在文档中的“生产注释”页面上提到了这一点:
http://www.mongodb.org/display/DOCS/Production+Notes#ProductionNotes-Linux
请参阅有关最小化时钟偏差的说明。
答案 1 :(得分:1)
根据您提供的文字,节点基于最近收到的写入的时间戳,而不是他们自己的时钟。但是,当主服务器降级且辅助服务器成为主服务器时,会出现问题。如果时间偏差很大,可能会导致复制延迟或出现其他问题。