pymongo MongoClient不带参数copySet

发布时间:2020-07-06 07:58

我有三个mongo节点,这些节点在MongoClient中使用的URL中指定。看起来像这样的“ mongodb:// A,B,C,D”。我需要读取优先级为Secondary,为此我使用了SECONDARY_PREFERRED。一切都按预期工作,我可以毫无问题地连接到辅助节点。我使用-获得连接 mongo_con = MongoClient(db_url,read_Preference = ReadPreference.SECONDARY_PREFERRED)

我想知道如果在获得连接时不发送'replicaSet'可选参数会产生什么影响。如果我使用repicaSet并发送正确的副本集名称,则连接会有什么区别,如果我发送不正确的副本集名称怎么办?对我的连接有何影响?

回答1

我想知道如果在获得连接时不发送'replicaSet'可选参数会带来什么影响。

这取决于您使用的驱动程序(pymongo / node等)以及您在连接字符串中指定的种子数量。

给定单个种子时,某些驱动程序会假定您只希望直接连接到该服务器,而某些驱动程序会发现部署的拓扑,如果是副本集,则会发现所有其他节点并“连接到副本集”。

目前正在通过directConnection URI选项在驱动程序之间对行为进行标准化。

在提供replicaSet URI选项时,您将强制执行在所有驱动程序中发现副本集的第二种行为。只要您不在单节点副本集中,也可以提供多个种子。

如果我使用repicaSet并发送正确的副本集名称,则连接会有什么区别,如果我发送不正确的副本集名称怎么办?对我的连接有何影响?

如果您指定replicaSet并输入了错误的设置名称,驱动程序将过滤出所有具有正确设置名称的服务器(或者从驱动程序的角度来看,您指示的replicaSet是正确的名称,并且服务器报告的错误)。您的应用程序将找不到任何可用的服务器。