Docs 菜单

Docs 主页开发应用程序MongoDB Manual

配置隐藏的副本集成员

在此页面上

  • 考虑因素
  • 举例
  • 相关文档

隐藏成员是副本集的一部分,但不能成为主节点,且对客户端应用程序不可见。隐藏成员可在选举中投票。有关隐藏成员及其用途的详情,请参阅隐藏副本集成员

隐藏节点最常见的用途是支持备份

您也可以使用隐藏节点来支持延时节点。但是,如果您只需要防止节点成为主节点,请配置优先级为 0 的节点

如果 settings.chainingAllowed 设置支持从节点从其他从节点同步,则在选择同步目标时,MongoDB 默认优先选择非隐藏成员而不是隐藏成员。MongoDB 只会将选择隐藏成员作为最后的手段。如果您希望从隐藏成员同步从节点,请使用 replSetSyncFrom 数据库命令覆盖默认同步目标。在使用该命令之前,请参阅 replSetSyncFrom 的文档。

提示

另请参阅:

要将从节点配置为隐藏成员,请在成员配置中将其 members[n].priority 值设置为 0,并将其 members[n].hidden 值设置为 true

{
"_id" : <num>
"host" : <hostname:port>,
"priority" : 0,
"hidden" : true
}

以下示例隐藏当前位于members数组中索引0处的从节点。要配置隐藏节点,请在连接到主节点的 mongosh会话中使用以下操作序列,并通过其在members数组中的数组索引来指定要配置的节点:

cfg = rs.conf()
cfg.members[0].priority = 0
cfg.members[0].hidden = true
rs.reconfig(cfg)

重新配置副本集后,该从节点的优先级为 0,因此无法成为主节点,而是处于隐藏状态。副本集的其他成员不会在 hello 命令或 db.hello() 方法输出中公布该隐藏成员。

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

警告

  • rs.reconfig() shell 方法可以强制当前的主节点下台,从而导致选举。当主服务器向下运行时,mongod 会关闭所有客户端连接。 虽然这通常需要 10-20 秒,但请尝试在计划维护期间进行这些更改。

  • 避免重新配置包含不同 MongoDB 版本节点的副本集,因为验证规则可能因 MongoDB 版本而异。

← 防止从节点变为主节点