配置隐藏的自管理副本集成员
在此页面上
隐藏节点是副本集的一部分,但不能成为主节点 (primary node in the replica set)节点,并且对客户端应用程序不可见。 隐藏成员可以在选举中投票。 有关隐藏成员及其用途的更多信息,请参阅隐藏副本集成员。
Considerations
隐藏节点最常见的用途是支持备份。
您也可以使用隐藏节点来支持延时节点。但是,如果您只需要防止节点成为主节点,请配置优先级为 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 版本而异。