自助管理副本集协议版本
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 通过使用术语防止单个成员在选举中的重复投票。