文档菜单
文档首页
/
MongoDB 手册
/ / /

隐藏的副本集成员

本页内容

  • 行为
  • 进一步阅读

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

客户端不会将具有适当的读取偏好的读取操作分发到隐藏成员。因此,这些成员除了基本复制外不接收任何流量。将隐藏成员用于专用任务,如报告和备份。

重要

如果您的副本集包含延迟成员,请确保延迟成员是隐藏的且非投票的。

隐藏延迟的副本集成员可以防止应用程序看到和查询延迟数据,除非直接连接到该成员。将延迟的副本集成员设置为非投票成员意味着它们不会计入具有写关注"majority"的写操作确认。

如果您没有隐藏延迟成员,并且一个或多个节点不可用,副本集必须等待延迟成员,提交点落后。落后的提交点可能导致性能问题。

例如,考虑一个主-辅助-延迟的副本集配置,其中延迟的辅助成员在延迟10分钟后进行投票。

如果有一个非延迟的辅助成员不可用,主-延迟的降级配置必须至少等待10分钟才能确认具有"majority"的写操作。大多数提交点的推进将需要更长的时间,导致与具有一个辅助和一个仲裁员(PSA)副本集类似的缓存压力和性能问题。

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

在分片集群中,mongos不与隐藏成员交互。

隐藏成员可能在副本集选举中投票。如果您停止投票的隐藏成员,请确保集合有一个活动的多数或主节点将退位。

为了备份的目的,

  • db.fsyncLock()确保使用低级备份工具(如cpscptar)复制数据文件是安全的。使用复制文件启动的mongod包含与锁定mongod上的用户编写的用户数据不可区分。

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

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

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

返回

优先级 0 成员