You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Mongo 4.4 PSA副本集Secondary操作报错NotPrimaryNoSecondaryOk如何解决

问题原因

该错误属于MongoDB副本集的默认安全限制,并非集群故障:
MongoDB副本集的Secondary节点默认禁止所有读操作,避免未做读偏好配置的客户端默认读到过期数据。Mongo Shell默认的secondaryOk参数为false,当在Secondary节点直接执行任何读操作时,就会抛出NotPrimaryNoSecondaryOk错误,错误码13435,和集群状态健康、数据同步正常的表现完全吻合。

修复方案

可根据使用场景选择对应配置:

  • 临时生效(仅当前Mongo Shell会话有效):在Secondary节点的Shell中执行db.getMongo().setSecondaryOk()即可,执行完成后当前会话可正常执行读操作。MongoDB 4.4仍兼容旧版本的rs.slaveOk()命令,但更推荐使用前者。
  • 永久生效(所有新启动的Mongo Shell会话默认允许Secondary读):在操作用户的家目录下创建.mongoshrc.js文件,写入db.getMongo().setSecondaryOk()并保存,后续每次启动Mongo Shell会自动加载该配置。
  • 应用连接配置:若业务应用需要访问Secondary节点分流读请求,在MongoDB连接串中添加读偏好参数即可,例如追加?readPreference=secondaryPreferred,即可实现优先读Secondary节点,Secondary不可用时自动切换到Primary节点读。

注意:无论如何配置,副本集的所有写操作都只能发往Primary节点,Secondary节点默认不接受写请求属于副本集的正常机制。

内容的提问来源于stack exchange,提问作者Leos Literak

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.05 17:09:04