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

副本集部署体系架构

副本集的架构会影响集合的容量和功能。本文档提供副本集部署策略并介绍常用架构。

生产系统的标准副本集部署是三节点副本集。这些副本集提供冗余和容错能力。设计部署时应力求简化,根据应用程序的具体需求来决定架构。

注意

在滚动升级之外, 副本集的所有mongod 节点都应使用相同的 MongoDB 主版本。

根据这些策略在副本集中添加成员。

一个副本集最多可以有 50 个节点,但只有 7 个投票节点。如果副本集已有 7 个投票节点,则其他节点必须为非投票节点。

确保副本集的投票节点数量为奇数。一个副本集最多可以有 7 个投票节点。如果投票节点的数量为偶数,则部署另一个数据承载投票节点,或者如果约束禁止另一个数据承载投票节点,则部署一个仲裁节点。

仲裁节点不存储数据副本,所需资源较少。因此,可在应用程序服务器或其他共享资源上运行仲裁节点。如果没有数据副本,则可以将仲裁节点放置到您不会放置副本集其他成员的环境中。请查阅您的安全政策。

警告

请勿在副本集中部署多个仲裁节点。请参阅有关多个仲裁节点的问题。

要将仲裁节点添加到现有副本集:

在使用具有一个仲裁节点的新副本集之前,您不需要更改集群范围的写关注(write concern)。

副本集的容错能力是指可以变得不可用但仍然在副本集中留下足够节点来选举主节点的节点数量。换言之,它是集合中的节点数量与选举主节点所需投票节点数量 majority 之间的差值。如果没有主节点,副本集将无法接受写入操作。容错能力是副本集大小的影响,但这种关系不是直接的。请参阅下表:

节点数量
选举新主节点所需的多数票
容错

3

2

1

4

3

1

5

3

2

6

4

2

向副本集添加成员并不总是能提高容错能力。 但是,在这些情况下,其他成员可以为专用功能提供支持,例如备份或报告。

rs.status() 会为副本集返回 majorityVoteCount。

添加隐藏或延迟的成员,以支持备份或报告等专用功能。

副本集旨在实现高可用性和冗余。在大多数情况下,从节点(secondary node from replica set)在与主节点 (primary node in the replica set)相似的载荷下运行。您可以通过设置非primary读取偏好(read preference)从从节点(secondary node from replica set)读取数据,这可以从主节点 (primary node in the replica set)卸载一些读取流量。但是,将过多的读取流量导向从节点(secondary node from replica set)可能会降低整体集群性能,并且从从节点(secondary node from replica set)读取的数据可能会过时。

对于读取密集型工作负载,请考虑使用专用的优先级 0 或隐藏节点来隔离读取负载。

有关从节点(secondary node from replica set)读取模式的更多信息,请参阅 secondary 和 secondaryPreferred。

副本集的现有节点必须有空闲容量来支持添加新节点。请务必在当前需求使副本集容量达到饱和之前添加新节点。

为了在数据中心发生故障时保护您的数据,请在备用数据中心保留至少一个节点。如果可能,使用奇数个数据中心,并选择一种节点分布方式,以最大限度地保证即使丢失一个数据中心,剩余的副本集节点也能形成多数,或至少提供一份您数据的副本。

注意

对于生产部署,我们建议至少在三个数据中心部署配置配置服务器和分片副本集。此配置可在单个数据中心出现故障时提供高可用性。

为了确保主数据中心中的成员在备用数据中心中的成员之前被选为主节点,请将备用数据中心中成员的members[n].priority设置为低于主数据中心中成员的相应值。

请参阅分布在两个或多个数据中心的副本集,了解详情

使用副本集标签集将读取操作定向到特定成员,或自定义写关注以请求特定成员的确认。

MongoDB 默认启用日志功能。日志功能可以防止服务中断(例如电源故障和意外重启)导致数据丢失。

重要

要避免因 IP 地址变更而更新配置,请使用 DNS 主机名而非 IP 地址。在配置副本集成员或分片集群成员时,使用 DNS 主机名而非 IP 地址尤为重要。

在水平分割网络配置下,请使用主机名而非 IP 地址来配置集群。从 MongoDB 5.0 开始,仅配置了 IP 地址的节点将无法通过启动验证,因而不会启动。

如果您的应用程序连接到多个副本集,则每个副本集的名称必须不同。有些驱动程序会按副本集名称对副本集连接进行分组。

以下文档介绍了常见的副本集部署模式。其他模式是否存在且有效取决于应用程序的需求。如有需要,请在您自己的部署中结合使用每种架构的特性:

三节点副本集

三节点副本集提供了一个副本集的最小推荐架构。

跨两个或多个数据中心分布的副本集

地理上分布的副本集包括位于多个地理位置的节点,以应对特定设施的故障,例如断电。
给本页内容打分