自助管理副本集协议版本
MongoDB仅支持副本集协议版本1(pv1
)。 pv1
是所有新副本集的默认设置。
写入保留
w:1
写入
使用 pv1
,您可以使用 catchUpTimeoutMillis
在更快的故障转移和保留 w:1
写入之间进行优先级选择。
w: "majority"
写入
pv1
保证保留已确认的 w: "majority"
写入。
可用性
pv1
在MongoDB 3.2或更高版本中可用,且是所有新副本集的默认设置。
否决
pv1
不使用否决权。个别成员可以投票支持或反对特定选举中的候选人,但不能单方面否决(中止)选举。
同时主节点检测
在一些情况下,复制集中的两个节点可能会临时认为自己是主节点,但最多只有一个节点能够使用 { w: "majority" }
写关注度完成写入。能够完成 { w: "majority" }
写入的节点是当前主节点,另一个节点是一个尚未承认降级的旧主节点,通常是由于 网络分区。当这种情况发生时,连接到旧主节点的客户端可能会观察到过时的数据,即使它们请求了 primary
读取偏好,旧主节点的新的写入最终会回滚。
pv1
使用了 term 的概念。这允许更快地检测到同时存在的主节点,并在短时间内进行多次成功的选举。
连续选举
pv1
会尽力使具有最高 priority
的二级节点调用选举。这可能导致连续的选举,因为具有更高优先级的合格成员可以调用选举。
然而,对于 pv1
优先级选举已被限制只有在较高优先级的节点距离当前主节点10秒以内时才会发生。
如果仲裁者检测到候选者的优先级等于或高于健康主节点的优先级,它将在选举中投反对票。
双重投票
pv1
通过使用术语防止单个成员在选举中的重复投票。