背景
mongoDB生产集群(未分片)3台主机。它们属于副本集rs0
我正在尝试使用 pymongo 编写 python 脚本。这是一个生产群集,我希望脚本只能从 H3辅助副本集 中读取,这样就不会给主要负担,并使其保持正常活动的空闲。数据将从名为" devices"的集合中获取。在 批次的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')
问题
根据我的理解,上述客户端将从辅助副本集中读取 ONLY 。但是当我运行脚本并查看云管理器时,主要显示页面错误的H1从大约15-20增加到大约600,并且急剧跳跃。
环境
答案 0 :(得分:0)
我还将这个问题发布到了mongo-user组,并在那里得到了解答。
首先,pymongo的版本是错误的。它是2.8,至少是python27使用的那个
$ python27
>>> import pymongo
>>> pymongo.version
'2.8'
和
$ python
>>> import pymongo
>>> pymongo.version
'3.0.3'
适当的语法是
MongoClient('mongodb://H3-Hostname:27017/?readPreference=secondary')