文档菜单
文档首页
/
MongoDB 手册
/ / /

防止自管理二级成为主节点

本页内容

  • 概述
  • 注意事项
  • 步骤
  • 相关文档

在副本集中,默认情况下,所有二级成员都有资格通过选举过程成为主节点。您可以使用优先级来影响这些选举的结果,使某些成员更有可能成为主节点,而其他成员则不太可能或无法成为主节点。

无法成为主节点的二级成员也无法触发选举。在其他所有方面,这些二级成员与其他二级成员相同。

为了防止二级成员在故障转移中成为主节点,请按以下说明将二级成员的优先级设置为0。有关仅二级成员的详细描述及其用途,请参阅优先级0副本集成员。

在更新副本配置对象时,使用数组索引访问members数组中的副本集成员。数组索引从0开始。请勿将此索引值与members[n]._id字段的值混淆,该字段位于members数组中的每个文档中。

注意

MongoDB不允许当前主节点具有0的优先级。为了防止当前主节点再次成为主节点,您必须首先使用rs.stepDown()使当前主节点降级。

本教程使用一个包含5个成员的示例副本集。

警告

  • rs.reconfig()shell方法可以强制当前主节点降级,这会导致选举。当主节点降级时,mongod关闭所有客户端连接。虽然这通常需要10-20秒,但请尽量在计划维护期间进行这些更改。

  • 避免重新配置包含不同MongoDB版本成员的副本集,因为MongoDB版本之间的验证规则可能不同。

1

方法 rs.conf() 返回一个包含副本集当前配置的 副本集配置文档

mongosh 中,连接到主节点后,运行 rs.conf() 方法并将结果赋值给一个变量

cfg = rs.conf()

返回的文档包含一个 members 字段,该字段包含一个包含成员配置文档的数组,每个文档对应副本集的一个成员。

2

为了防止次要成员成为主节点,更新次要成员的 members[n].priority0

要将优先级值分配给副本集的成员,使用数组索引访问成员配置文档。在本教程中,要更改的次要成员对应于 members 数组位置 2 的配置文档。

cfg.members[2].priority = 0

配置更改将在您重新配置副本集之前不生效。

3

使用 rs.reconfig() 方法,用更新的副本集配置文档重新配置副本集。

cfg 变量传递给 rs.reconfig() 方法

rs.reconfig(cfg)

返回

调整成员优先级