背景
mongoDB 生产集群(未分片)3 台主机。它们属于副本集 rs0
- H1 - 初级
- H2 - 中学
- H3 - 中学
我正在尝试使用pymongo编写python脚本。这是一个生产集群,我希望脚本仅从H3 辅助副本集读取,以免对主副本造成负担,并使其免费用于常规活动。数据将从2000 个文档批次中名为“设备”的集合中获取。这应该会进一步减少读取操作的开销。
相关代码
client = MongoClient('mongodb://H3-hostname:27017/', replicaset='rs0', readPreference='secondary')
.
.
.
.
.
devices = devices_collection.find({"status" : "ACTIVE"},{"key" : 1, "username" : 1}, sort = [("key", pymongo.ASCENDING)]).batch_size(2000)
还尝试通过提及集群中的所有主机以稍微不同的方式创建客户端,如下所示
client = MongoClient('mongodb://H1-Hostname:27017, H2-Hostname:27017, H3-hostname:27017/?replicaset=rs0', readPreference='secondary')
问题
据我了解,上述客户端将只从辅助副本集中读取。但是当我运行脚本并查看云管理器时,主要的 H1 显示页面错误从 ~15-20 增加到 ~600 并急剧增加。
环境
- Mongo DB 3.0.3(MMAPv1 存储引擎)
- Python 2.7.9
- Pymongo 3.0.3
- 操作系统 亚马逊 Linux