配置隐藏副本集成员

在本页面

隐藏的成员是replica set的一部分,但不能成为primary,并且对 Client 端应用程序不可见。隐藏的成员可以elections投票。有关隐藏成员及其使用的更多信息,请参见隐藏副本集成员

Considerations

隐藏节点最常见的用途是支持delayed members。如果只需要阻止成员成为主要成员,则配置优先级 0 成员

如果settings.chainingAllowed设置允许辅助成员与其他辅助成员进行同步,则默认情况下,MongoDB 在选择同步目标时会优先选择非隐藏成员而不是隐藏成员。 MongoDB 仅会选择隐藏的成员作为最后的选择。如果希望辅助节点从隐藏的成员进行同步,请使用replSetSyncFrom数据库命令覆盖默认的同步目标。使用该命令之前,请参阅replSetSyncFrom的文档。

Examples

成员配置文档

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

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

Configuration Procedure

下面的示例隐藏当前位于members数组中索引0的辅助成员。要配置hidden member,请在连接到主数据库的mongo shell 中使用以下操作序列,并通过members数组中的数组索引指定要配置的成员:

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

重新配置集合后,此辅助成员的优先级为0,因此它不能成为主要成员并被隐藏。集合中的其他成员将不会在isMasterdb.isMaster()输出中通告隐藏的成员。

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

Warning

  • rs.reconfig() shell 方法可以强制当前主节点降级,从而导致election。当主服务器降级时,mongod关闭所有 Client 端连接。尽管这通常需要 10 到 20 秒,但请尝试在计划的维护期间进行这些更改。

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