配置隐藏的自托管副本集成员
隐藏成员是副本集的一部分,但不能成为主节点,并且对客户端应用程序不可见。隐藏成员可以在选举中投票。有关隐藏成员及其用途的更多信息,请参阅隐藏副本集成员。
考虑因素
隐藏节点最常见的使用是支持备份。
您还可以使用隐藏节点来支持延迟成员。但是,如果您只需要防止成员成为主节点,请配置一个优先级为0的成员。
如果settings.chainingAllowed
设置允许次要成员从其他次要成员同步,MongoDB默认情况下在选择同步目标时更倾向于非隐藏成员而非隐藏成员。MongoDB只有在没有其他选择时才会选择隐藏成员。如果您想让次要成员从隐藏成员同步,请使用replSetSyncFrom
数据库命令来覆盖默认同步目标。在使用该命令之前,请参阅replSetSyncFrom
的文档。
示例
成员配置文档
要将次要成员配置为隐藏,请将其成员配置中的 members[n].priority
值设置为 0
,并将其 members[n].hidden
值设置为 true
{ "_id" : <num> "host" : <hostname:port>, "priority" : 0, "hidden" : true }
配置步骤
以下示例隐藏了当前位于 0
索引处的次要成员。要配置隐藏成员,请在连接到主节点的 mongosh
会话中执行以下操作序列,通过在 members
数组中指定成员的数组索引来配置成员mongosh
cfg = rs.conf() cfg.members[0].priority = 0 cfg.members[0].hidden = true rs.reconfig(cfg)
重新配置集合后,此辅助成员的优先级为 0
,因此它不能成为主成员并处于隐藏状态。集合中的其他成员不会在 hello
命令或 db.hello()
方法输出中广告此隐藏成员。
在更新副本配置对象时,使用 数组索引 访问 members
数组中的副本集成员。数组索引从 0
开始。请不要将此索引值与 members[n]._id
字段值混淆,该字段位于 members
数组中的每个文档中。
警告
rs.reconfig()
命令行方法可以强制当前主成员下台,这会导致 选举。当主成员下台时,mongod
关闭所有客户端连接。尽管这通常需要 10-20 秒,但请在计划维护期间尝试进行这些更改。请避免重新配置包含不同 MongoDB 版本成员的副本集,因为验证规则可能因 MongoDB 版本而异。