如何使用 mongo 引擎从辅助 mongo 读取
How to read from secondary mongo using mongoengine
我使用 mongoengine "connect" 方法访问 mongo 数据库。现在我在 mongodb 服务器上配置了副本集。
为了优化性能,我想将所有读取请求路由到具有特定标签的 slave/secondary mongo 服务器。
这是我的连接电话
mongoengine.connect(attrs['DB_NAME'], conn,
read_preference=ReadPreference.SECONDARY_PREFERRED,
tag_sets=[{'loc': 'nm'}, {}],
replicaSet='replset',
host=attrs['HOST'], port=attrs['PORT'],
username=attrs['USERNAME'], password=attrs['PASSWORD'],
max_pool_size=attrs['MAX_POOL_SIZE'])
执行时出错
mongoengine.connection.ConnectionError: Cannot connect to database
default :
172.22.67.38:27017 is not a member of replica set replset
这就是我能够使用 pymongo 2.8 和 mongoengine 0.8.7 连接到 mongodb 以进行二次读取的方式。
from pymongo.read_preferences import ReadPreference
mongoengine.connect(<db_name>, <db_alias>,
read_preference=ReadPreference.SECONDARY_PREFERRED,
tag_sets=[{'loc': 'nm'}, {}],
replicaSet='replset',
host='mongodb://<username>:<password>@172.22.67.38:27017/<db_name>', port=attrs['PORT'],
max_pool_size=100)
我使用 mongoengine "connect" 方法访问 mongo 数据库。现在我在 mongodb 服务器上配置了副本集。 为了优化性能,我想将所有读取请求路由到具有特定标签的 slave/secondary mongo 服务器。
这是我的连接电话
mongoengine.connect(attrs['DB_NAME'], conn,
read_preference=ReadPreference.SECONDARY_PREFERRED,
tag_sets=[{'loc': 'nm'}, {}],
replicaSet='replset',
host=attrs['HOST'], port=attrs['PORT'],
username=attrs['USERNAME'], password=attrs['PASSWORD'],
max_pool_size=attrs['MAX_POOL_SIZE'])
执行时出错
mongoengine.connection.ConnectionError: Cannot connect to database default : 172.22.67.38:27017 is not a member of replica set replset
这就是我能够使用 pymongo 2.8 和 mongoengine 0.8.7 连接到 mongodb 以进行二次读取的方式。
from pymongo.read_preferences import ReadPreference
mongoengine.connect(<db_name>, <db_alias>,
read_preference=ReadPreference.SECONDARY_PREFERRED,
tag_sets=[{'loc': 'nm'}, {}],
replicaSet='replset',
host='mongodb://<username>:<password>@172.22.67.38:27017/<db_name>', port=attrs['PORT'],
max_pool_size=100)