我将mongodb环境从复制集转换为通过mongos复制集进行分片。
我有3个重复(A,B,C),我切换到S1(A,B); S2(C,D),其中mongoS在A,B,C,D上运行。
当我连接到旧系统时,我按照以下方式连接
new Mongo("mongodb://A,B,C", array("replicaSet" => "repset-name"));
现在我尝试使用mongoS发送内部服务器错误
new Mongo("mongodb://A,B,C,D", array("replicaSet" => "repset-name"));
如果我摆脱了“replicaSet”选项,它会再次运作。
new Mongo("mongodb://A,B,C,D")
我想知道mongoS现在是否平衡了碎片中的rep-sets之间的读取(例如A和B之间的S1平衡)而没有设置“replicaSet”选项?
顺便说一句,pymongo以相同的方式对pymongo.errors.AutoReconnect做出反应“没有与主机名相关联的地址”。
THX
答案 0 :(得分:2)
正确,一旦你进行了分片,你应该将你的驱动程序连接到mongos,就像它是一台服务器一样。 Mongos现在负责在群集周围的初级和辅助之间分发读写。如果您希望mongos将读取分发给辅助节点,请将slaveOk设置为True以进行读取。