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

文档数据库 MongoDB 版

复制全文
下载 pdf
网络与连接管理
读写分离
复制全文
下载 pdf
读写分离
文档数据库 MongoDB 版支持在实例的连接地址中通过指定参数实现读写分离。本文介绍如何设置相关参数实现读写分离。
背景信息
文档数据库 MongoDB 版为副本集实例和分片集群实例的 Mongos 组件默认提供了高可用地址,该地址包含副本集实例所有节点或分片集群中所有 Mongos 节点的地址,发生主从切换后,写请求将会被路由到新的主节点或其他 Mongos 节点上,不会出现无法执行写操作的情况。更多关于 MongoDB 实例连接地址的说明,请参见查看连接地址
读写分离参数介绍
文档数据库 MongoDB 版支持在高可用地址中使用 readPreferencereadPreferenceTags 参数实现读写分离。
参数
说明
支持使用对应参数的连接地址类型
readPreference
用于实现高可用地址的读写分离和负载均衡。该参数可以将写请求发送到主节点,读请求随机发送到从节点和只读节点,可选取值如下:
  • readPreference=primary:读请求仅发送到主节点。
  • readPreference=primaryPreferred:优先读主节点。如果主节点故障,将读请求发送到从节点和只读节点。
  • readPreference=secondary:仅读从节点和只读节点。如果从节点和只读节点都出现故障,读请求失败,不会发送到主节点。
  • readPreference=secondaryPreferred:优先读从节点和只读节点。如果从节点和只读节点都出现故障,该参数将读请求发送到主节点。
说明
关于 readPreference 参数的更多详情,请参见 Read Preference
  • 副本集实例连接地址。
  • 分片集群实例中 Mongos、Shard、 ConfigServer 组件连接地址。
说明
  • 分片集群实例中的 Shard 或 ConfigServer 组件连接地址主要用于测试或其他特殊场景,在实际生产环境中,不推荐直连 Shard 或 ConfigServer 组件地址进行读写,推荐使用分片集群的 Mongos 地址,并通过 Mongos 连接地址实现负载均衡路和读写分离。
  • 文档数据库 MongoDB 版默认仅提供了 Mongos 私网连接地址,如需使用 Shard 或 ConfigServer 组件连接地址需单独申请。具体操作步骤,请参见申请私网地址申请公网地址
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 设置才会生效。只读节点使用方法,请参见添加或删除只读节点
  • 副本集实例连接地址。
  • 分片集群实例中 Mongos、Shard 组件连接地址。
设置读写分离连接地址
您可以根据业务需求,在 MongoDB 实例的高可用地址中通过设置 readPreferencereadPreferenceTags 参数,来满足不同场景下的读写分离需求。
读从或只读节点失败时,读请求发送到主节点
读从或只读节点失败时,读请求不发送到主节点
  • 读请求发送策略及读写分离参数设置建议
  • 读请求发送策略
    参数设置建议
    优先读主节点。
    readPreference=primaryPreferred
    优先读从节点和只读节点。
    readPreference=secondaryPreferred
    优先读从节点。
    如果从节点故障,读请求将发送到主节点,不会发送到只读节点。
    readPreference=secondaryPreferred&readPreferenceTags=role:electable
    优先读只读节点。
    如果只读节点故障,读请求将发送到主节点,不会发送到从节点。
    readPreference=secondaryPreferred&readPreferenceTags=role:readonly
  • 读写分离连接地址示例
  • 如下示例以 MongoDB 副本集实例的连接地址为例,为实例设置优先读只读节点,如果只读节点故障,读请求发送到主节点。
  • mongodb://root:Pwd_123456@mongoreplicab338d0d1****0.mongodb.ivolces.com:3717,mongoreplicab338d0d1****1.mongodb.ivolces.com:3717,mongoreplicab338d0d1****100.mongodb.ivolces.com:3717/?authSource=admin&replicaSet=rs-mongo-replica-b338d0d1a007&readPreference=secondaryPreferred&readPreferenceTags=role:readonly&retryWrites=true
常见问题
最近更新时间:2026.02.12 21:42:51
这个页面对您有帮助吗?
有用
有用
无用
无用