Docs 菜单

Docs 主页开发应用程序MongoDB Manual

隐藏的副本集成员

在此页面上

  • 行为
  • 深入阅读

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

在以下五个成员的副本集中,所有四个辅助成员都有主成员数据集的副本,但其中一个辅助成员是隐藏的。

具有隐藏优先级 0 节点的 5 节点副本集的图表。

客户端不会向隐藏成员分发具有相应读取偏好的读取数据。因此,除基本复制外,这些成员不会接收任何流量。将隐藏成员用于专门任务,如报告和备份。

重要

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

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

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

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

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

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

在分片集群中,mongos 不会与隐藏节点进行交互。

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

出于备份目的,

  • db.fsyncLock() 确保数据文件可以安全地使用 cpscptar 等低级备份实用工具进行复制。开始使用复制文件的 mongod 包含用户写入的数据,这些数据与锁定的 mongod 上的用户写入的数据无法区分。

    锁定 mongod 的数据文件可能会因日志同步WiredTiger 快照等操作而发生变化。虽然这对逻辑数据(例如客户端访问的数据)没有影响,但某些备份实用程序可能会检测到这些变化并发出警告,或者失败并显示错误。有关 MongoDB 推荐备份实用程序和过程的更多信息,请参阅 MongoDB 备份方法

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

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

← 优先级为 0 的副本集节点

在此页面上