如何在Python中查找MongoDB副本的主要主机并进行访问

时间:2019-04-30 08:19:35

标签: mongodb amazon-ec2 mongodb-replica-set

enter image description here

我有一个主主机为mongo1.ppshein.net,第二个主机为mongo1.ppshein.net,仲裁器为mongo3.ppshein.net,并按上面在AWS EC2中所示配置了MongoDB副本。并且在每个MongoDB配置文件中,bindIP是其主机名和App Server主机。

要从python访问MongoDB副本,我认为我可以使用以下代码段

>>> from pymongo import MongoClient
>>> db = MongoClient('mongodb://serverA:27017, serverB:27017, serverC:27017/?replicaSet=foo').db_name

但是问题是如果serverA故障/不正常,我不确定上面的代码片段是否可以正常工作。这就是为什么我好奇地知道如何获取MongoDB的主要主机,而不是在连接字符串中添加多个主机?

1 个答案:

答案 0 :(得分:1)

一旦连接到副本集,驱动程序将始终将您重新连接到主副本(如果可以选择一个节点)。您在参数中提供节点列表的唯一原因是为了防止您尝试连接到发生故障的节点的情况。如果该节点发生故障,则服务器将超时。

服务器发现和监视协议的完整规范为here