Mongodb阅读首选项

kan*_*shk 1 mongodb pymongo

建立:

我有一个PRIMARY和两个SECONDARY mongodb实例.其中一个辅助实例与我的Web应用程序托管在同一区域中.

我正在使用pymongo进行连接.

查询:

如何以较低的延迟连接到SECONDARY.

目前我这样做:

  from pymongo import ReplicaSetConnection
  from pymongo import ReadPreference

  db = ReplicaSetConnection('localhost:27017', replicaSet='rs1')['my_db']
  db.read_preference = ReadPreference.SECONDARY
Run Code Online (Sandbox Code Playgroud)

我得到了SECONDARY的任何一个连接.如何强制以较低的延迟从实例获取连接

谢谢!!

Ros*_*oss 6

阅读偏好如下:

  • PRIMARY:查询将发送到副本集的主节点.
  • PRIMARY_PREFERRED:查询将发送到主服务器(如果可用),否则发送到辅助服务器.
  • SECONDARY:查询在辅助节点之间分配.如果没有辅助副本,则会引发错误.
  • SECONDARY_PREFERRED:查询在辅助节点之间分配,如果没有辅助节点,则查询主节点.
  • NEAREST:查询分布在所有成员中.

所以对于最近的中学而言,没有具体的.您可以通过组合NEAREST和tag_sets并标记辅助节点来实现此目的.

然后,如果二级标记被标记,{'secondaries': 1}您可以从最近的二级读取,如下所示:

from pymongo import ReplicaSetConnection
from pymongo import ReadPreference

db = ReplicaSetConnection('localhost:27017', replicaSet='rs1')['my_db']
db.read_preference = ReadPreference.NEAREST
db.tag_sets = [{'secondaries': 1}]
Run Code Online (Sandbox Code Playgroud)

更新:

您应该注意,如果发生选举并且复制集的拓扑发生更改,则您必须手动更改tag_sets以表示新的辅助节点.