优先级为 0 的副本集节点
priority 0
节点是无法成为主节点 (primary node in the replica set)且无法trigger选举的节点。 优先级为0的成员可以确认写入写关注(write concern)为w : <number>
时发出的写入操作。 对于"majority"
写关注(write concern),优先级0成员也必须是投票成员(即 members[n].votes
大于0
),以确认写入。 无投票权的副本集节点(即 members[n].votes
为0
)无法参与确认具有"majority"
写关注(write concern)的写入操作。
除上述限制之外,具有 priority 0
功能的从节点与普通从节点相同:它们维护数据集的副本,接受读操作,并在选举中投票。
如果特定成员部署在远离主部署的数据中心,因此具有较高的延迟,则可能需要使用 priority 0
配置副本集成员。该成员可以很好地满足本地读请求,但由于延迟,可能不是履行主节点职责的理想选择。
在这种情况下,下图左侧显示一个数据中心,其中托管一个主节点和一个从节点;右侧显示另一个数据中心,其中托管一个从节点,该从节点已配置为 0 优先级以防止其成为主节点。由于这一设置,只有左侧数据中心的成员才有资格在选举中成为主节点。
将其与副本集成员的默认优先级 priority 1
进行比较,此场景中的任何一个从节点都有资格充当主节点。有关详细信息,请参阅分布在两个或多个数据中心的副本集。
优先级为 0 的成员作为备用成员
具有 priority 0
的从节点可用作备用节点。在某些副本集中,可能无法在合理的时间内添加新成员。备用成员会保存最新的数据副本,以便替换不可用的成员。
在许多情况下,您无需将备用成员设置为优先级 0。但是,在具有不同硬件或地理分布的副本集中,优先级 0 的备用成员可确保只有某些成员成为主节点。
优先级为 0 的备用成员对于具有不同硬件或工作负载配置文件的集合中的某些成员也可能很有价值。在这些情况下,部署优先级为 0 的成员,使其无法成为主节点。还可以考虑使用隐藏成员来实现这一目的。
如果副本集已有七个投票成员,则还要将该成员配置为无投票权的成员。
故障转移注意事项
将从节点配置为具有 priority 0
时,请考虑潜在的故障转移模式,包括所有可能的网络分区。始终确保您的主数据中心同时包含法定人数的投票节点和有资格成为主节点的节点。
例子
要将从节点(secondary node from replica set)节点配置为具有priority 0
,请参阅防止自我管理的辅助节点成为主节点。