对于 AI 代理:可在 https://www.mongodb.com/zh-cn/docs/llms.txt 获取文档索引—通过在任何 URL 路径后添加 .md 可获取所有页面的 Markdown 版本。
Docs 菜单

隐藏的副本集成员

隐藏成员维护主节点数据集的副本,但对客户端应用程序不可见。隐藏成员适用于与副本集中的其他成员具有不同使用模式的工作负载。隐藏成员必须始终是优先级为 0 的成员,因此不能成为主节点db.hello() 方法不会显示隐藏成员。不过,隐藏成员在选举可以投票

如果直接连接到节点,则只能从隐藏节点中读取。 如果连接到集群而不直接连接到隐藏节点,则无法在隐藏节点上运行查询。 因此,这些成员除了基本复制之外不会接收任何流量。 将隐藏成员用于专门任务,例如报告和备份。

重要

如果您的副本集包含延迟成员,请确保延迟成员处于隐藏状态并且无投票权。

隐藏延迟的副本集节点可以防止应用程序在没有直接连接到该节点的情况下查看和查询延迟数据。使延迟的副本集节点不投票意味着它们不会计入确认具有写关注 "majority" 的写入操作。

如果不隐藏延迟节点,并且一个或多个节点变得不可用,则副本集必须等待延迟节点并且提交点会延迟。延迟提交点可能会导致性能问题。

例如,考虑主节点-从节点-延迟的副本集配置,其中延迟的从节点延迟 10 分钟进行投票。

在一个非延迟从节点(secondary node from replica set)不可用的情况下,延迟主节点的降级配置必须等待至少 10 分钟才能使用 "majority" 确认写入操作。多数提交点需要更长的时间才能推进,从而导致缓存压力,类似于具有从节点和仲裁节点 (PSA)副本集的主节点的性能问题。

有关多数提交点的更多信息,请参阅因果一致性和读写关注。有关解决性能问题的其他详细信息,请参阅副本集维护教程

在分片的集群中,您无法通过mongos访问权限隐藏节点。直接连接到这些节点读取数据可能会导致数据不一致或丢失。相反,要实现工作负载隔离性,请使用基于标签的读取偏好。

注意

从MongoDB 8.0 开始,您只能在分片的集群中的节点上运行某些命令。如果您尝试直接连接到节点并运行不受支持的命令, MongoDB将返回错误:

"You are connecting to a sharded cluster improperly by connecting directly
to a shard. Please connect to the cluster via a router (mongos)."

隐藏节点可能 会在副本集选举中投票。如果您停止了一名有投票权的隐藏节点的投票,请确保该集合拥有活跃多数成员,否则主节点将下台。

出于备份目的,

隐藏副本集成员可以确认 w: <number> 发出的写操作。但是,对于 w : "majority" 发出的写操作,隐藏成员还必须是投票成员(即 members[n].votes 大于 0),才能确认 "majority" 写操作。无投票权的副本集成员(即 members[n].votes0)无法参与确认具有 majority 写关注的写操作。

有关备份MongoDB数据库的更多信息,请参阅自管理部署的备份方法。 要配置隐藏节点,请参阅配置隐藏的自管理副本集节点。

在此页面上