You need to enable JavaScript to run this app.
文档中心
文档数据库 MongoDB 版

文档数据库 MongoDB 版

复制全文
下载 pdf
实例管理
管理只读节点
复制全文
下载 pdf
管理只读节点
文档数据库 MongoDB 版支持只读节点功能,只读节点可以提供单独的连接地址,适合独立系统和应用进行直连访问,扩展主从节点读请求能力,帮助分担主从节点数据读取压力。
功能简介
大量读请求会给 MongoDB 的主从节点带来极大的数据读取压力,可能会导致业务请求延时高、响应慢等问题。为分担主从节点的数据读取请求,MongoDB 提供了具备独立地址的只读节点(Read-only node),您可以在创建 MongoDB 实例时根据业务需要添加只读节点,满足业务读写分离需求,减轻主从节点的访问压力。
功能优势
  • 通过操作日志(Oplog)从延迟最低的主节点(Primary node)或从节点(Secondary node)同步数据,应用于有大量读请求的场景,以减轻主从节点的访问压力。
  • 当存在 2 个或以上只读节点时,可以通过只读节点连接地址实现读请求负载均衡。关于只读连接地址的更多详情,请参见只读节点地址
  • 只读节点具有独立的连接地址,且与已有主从节点的连接互不干扰,适合独立系统和应用进行直连访问。
  • 只读节点与主从节点采用一致的节点规格,自动从延迟最低的主节点或从节点同步数据,无需额外维护。
使用限制
限制项
说明
实例或组件类型限制
当前仅副本集实例和分片集群实例中 Shard 分片支持添加只读节点。
连接地址限制
MongoDB 实例类型不同,只读节点连接地址限制不同。其中:
  • 副本集实例
  • 支持在公网或私网连接地址中使用只读节点。
  • 若副本集实例存在只读节点,开启公网解析时会同时为只读节点的内网地址开启公网解析功能。更多详情,请参见开启和关闭公网解析
  • 分片集群实例
  • 仅支持在 Shard 分片的私网连接地址中使用只读节点。
数量限制
MongoDB 实例类型不同,支持添加的只读节点数量不同。其中:
  • 副本集实例:每个实例最多可添加至 5 个只读节点。
  • 分片集群实例:仅 Shard 分片支持添加只读节点,每个 Shard 分片最多可添加至 5 个只读节点。
变更配置限制
  • 只读节点的规格与实例(或 Shard 分片)的主从节点规格保持一致,因此升级或降级副本集实例规格或分片集群 Shard 节点规格时,已添加的只读节点规格也会同步变更。
  • 变更只读节点数量操作与副本集实例中其他配置变更操作互斥,即变更副本集实例的节点规格或存储空间时,不支持同时变更只读节点数量。
  • 仅当分片集群实例中不存在只读节点,且所有 Shard 分片的配置(包括节点规格和存储空间)一样时,才支持开启批量修改 Shard 分片配置功能。
更多关于变更实例配置的更多详情,请参见变更实例配置
其他限制
  • 只读节点仅供读请求访问,不参与主从节点选举。
  • 只读节点与主节点或从节点之间的数据复制方式为异步复制。正常情况下存在毫秒级的延迟,在主节点写入压力大的时候可能出现秒级的延迟。
不同类型的节点对比
文档数据库 MongoDB 版当前支持 4 种类型的节点:主节点、从节点、隐藏节点和只读节点。不同类型节点的使用场景和注意事项不同,具体区别如下表所示。
节点类型
使用场景
注意事项
主节点(Primary node)
也称主库,可提供读写功能。集群状态正常时,来自客户端的所有数据都会写入主节点。
  • 每个副本集实例中只能有一个主节点。
  • 每个分片集群实例的 Shard 分片中只能有一个主节点。
从节点(Secondary node)
保障高可用,通过 oplog(操作日志)同步主节点的数据,可在主节点故障时通过选举成为新的主节点。
  • 主节点故障时,从节点支持提升为主节点,来执行和响应数据的读写请求。
  • 客户端连接从节点时,只能读取数据不能写入数据。
隐藏节点(Hidden node)
仅用于保障高可用,对用户不可见。通过 oplog 同步主节点的数据,可在从节点故障时接替该故障节点成为新的从节点保障高可用。
  • 每个副本集实例中只能有一个隐藏节点。
  • 每个分片集群的 Shard 分片中只能有一个隐藏节点。
  • 隐藏节点只参与投票选取主节点,不能被选举为主节点。
只读节点(Read-only node)
主要适用于数据量极大的读请求场景,其通过操作日志(oplog)从主节点或从节点同步数据,系统将读请求自动路由至只读节点,以减轻主节点访问压力。
  • 只读节点具有独立的连接地址,适合独立系统及应用直连访问,与已有主从节点的连接互不干扰。
  • 只读节点不会被选举为主节点,也不会参与投票选举主节点。
  • 只读节点与主节点或从节点之间的数据复制方式为异步复制。
计费说明
单个只读节点的价格与副本集实例或者分片集群实例 Shard 中对应规格的单节点价格一致。关于 MongoDB 单节点的价格详情,请参见计费项与价格
只读节点地址
说明
  • 仅当实例中存在只读节点时,您才可以看到只读节点的连接地址。
  • 通过只读节点地址连接实例时,读请求将只会发送到只读节点。
  • 当实例中的某个只读节点出现故障时,读请求会自动切换到下一个只读节点,不会影响应用的读操作。如果所有的只读节点都出现了故障,读请求会执行失败。
MongoDB 只读节点连接地址格式如下。
mongodb://<user>:<password>@<host1>:3717,<host2>:3717,...,<hostN>:3717/?authSource=admin&readPreference=secondary&readPreferenceTags=role:readonly&replicaSet=<replicaSetId>&retryWrites=true
连接地址中相关参数说明如下表。
参数
是否必填
说明
示例
<user>
必填
数据库账号的名称。
root
<password>
必填
数据库账号的密码。
Pwd_123456
<host>:3717
必填
只读节点所对应的域名和端口号,默认端口号为 3717。
当前仅副本集实例和分片集群实例中 Shard 分片支持通过只读节点连接。其中:
  • 副本集实例
  • 单独提供一个包含了所有只读节点的私网连接地址。
  • 您也可以根据业务需要为只读节点申请单独的公网连接地址。具体操作步骤,请参见申请公网地址
说明
只读节点公网连接地址功能正在灰度发布中,如需使用,请提交工单联系技术申请使用。
  • 分片集群实例
  • 仅 Shard 分片的私网地址中会包含只读节点的连接地址
  • 副本集实例只读节点连接地址域名示例:
  • mongoreplicae047fe00****100.mongodb.ivolces.com:3717
  • 分片集群实例只读节点连接地址域名示例(以 Shard 0 为例):
  • mongoshard9a2ab41e****s0100.mongodb.ivolces.com:3717
authSource
必填
设置鉴权数据库名称,默认鉴权数据库为 admin
数据库账号必须在所属的数据库下进行鉴权,才能鉴权成功。
authSource=admin
readPreference
选填
用于实现高可用地址的读写分离和负载均衡。该参数可以将写请求发送到主节点,读请求随机发送到从节点和只读节点,可选取值如下:
  • readPreference=primary:读请求仅发送到主节点。
  • readPreference=primaryPreferred:优先读主节点。如果主节点故障,将读请求发送到从节点和只读节点。
  • readPreference=secondary:仅读从节点和只读节点。如果从节点和只读节点都出现故障,读请求失败,不会发送到主节点。
  • readPreference=secondaryPreferred:优先读从节点和只读节点。如果从节点和只读节点都出现故障,该参数将读请求发送到主节点。
说明
关于 readPreference 参数的更多详情,请参见 Read Preference
readPreference=secondary
readPreferenceTags
选填
该参数可以将读请求优先发送到标签对应的节点。可选取值如下:
  • readPreferenceTags=role:electable:优先读从节点。
  • readPreferenceTags=role:readonly:优先读只读节点。
说明
  • 创建时间在 2025 年 11 月 27 日之前的实例如需设置readPreferenceTags=role:electable,需先在实例的连接管理页签下,打开读写分离的分离增强功能开关。分离增强功能开关打开后不支持关闭。更多详情,请参见读写分离
  • 创建时间在 2025 年 11 月 27 日及之后的 MongoDB 实例默认支持设置readPreferenceTags=role:electable,在连接地址中直接设置该参数即可。
  • 该参数通常与参数 readPreference 一起使用实现读写分离功能,但与 primary 模式不兼容。
  • 仅当实例中存在只读节点时, readPreferenceTags=role:readonly 设置才会生效。只读节点使用方法,请参见添加或删除只读节点
关于 readPreferenceTags 参数的更多详情,请参见 readPreferenceTags
readPreferenceTags=role:readonly
replicaSet
必填
该参数可以将读请求发送到副本集实例或分片集群实例中当前 Shard 分片的所有节点,取值为实例高可用连接地址的唯一标识 ID。
replicaSet=rs-mongo-replica-e047fe003****
retryWrites
必填
文档数据库 MongoDB 版在每个连接地址的最后都默认添加了 &retryWrites=true 字段,来保证重连机制。
retryWrites=true
只读连接地址示例。
副本集实例
分片集群实例
将读请求路由到副本集只读节点的连接地址示例如下。
mongodb://root:Pwd_123456@mongoreplicae047fe00****0100.mongodb.ivolces.com:3717/?authSource=admin&readPreference=secondary&readPreferenceTags=role:readonly&replicaSet=rs-mongo-replica-e047fe00****&retryWrites=true
使用只读节点
  • 您可以在创建实例或恢复实例时,直接为新建实例添加只读节点,具体操作步骤,请参见:
  • 实例创建成功后,您还可以变更实例的只读节点数量,包括添加和删除只读节点。具体操作步骤,请参见添加或删除只读节点
最近更新时间:2026.09.14 16:01:34
这个页面对您有帮助吗?
有用
有用
无用
无用