繁体   English   中英

MongoDB Oplog差异

[英]MongoDB Oplog Difference

从大小为 5 的 MongoDB 副本集开始,节点 A 到 E。A 是活动的主节点,并以多数写入保证接收来自客户端的写入。 假设 A 收到 1、2、3、4。根据我目前的知识,对于副本集的 oplog,这是一个有效的 state,因为写入至少已应用于大多数:

A 1 2 3 4
B 1 4
C 1 2
D 2 3
E 3 4

现在,A迷路了。

其余节点如何处理 oplogs 的差异,或者有什么东西阻止了这种情况?

当保证多数写入时,这是否也意味着大多数节点已经赶上了主节点的 oplog,例如非保证写入可以延迟到保证写入处理完之后? 换句话说,oplog 的顺序是否可以稍有不同,这对选举有何影响?

非主节点尾随主节点的 oplog。 这意味着每个非主节点都按照它们应用于主节点的顺序处理写入。 因此,这些是不可能的:

B 1 4
D 2 3
E 3 4

写入不会根据它们的写入问题单独从主节点传输到非主节点。

写入关注 W > 1 意味着,在主节点在本地提交写入后,它等待 W-1 个其他节点通过将其 oplog position 传达给主节点并让 position 移过正在等待的写入来确认写入。 如果所需数量的节点尚未在配置的超时(如果有)中确认写入,则会收到写入关注超时错误。

为了让任何节点确认 4,它们必须先前已处理写入 1 到 3。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM