我有三个mongo节点,这些节点在MongoClient中使用的URL中指定。看起来像这样的“ mongodb:// A,B,C,D”。我需要读取优先级为Secondary,为此我使用了SECONDARY_PREFERRED。一切都按预期工作,我可以毫无问题地连接到辅助节点。我使用-获得连接 mongo_con = MongoClient(db_url,read_Preference = ReadPreference.SECONDARY_PREFERRED)
我想知道如果在获得连接时不发送'replicaSet'可选参数会产生什么影响。如果我使用repicaSet并发送正确的副本集名称,则连接会有什么区别,如果我发送不正确的副本集名称怎么办?对我的连接有何影响?
我想知道如果在获得连接时不发送'replicaSet'可选参数会带来什么影响。
这取决于您使用的驱动程序(pymongo / node等)以及您在连接字符串中指定的种子数量。
给定单个种子时,某些驱动程序会假定您只希望直接连接到该服务器,而某些驱动程序会发现部署的拓扑,如果是副本集,则会发现所有其他节点并“连接到副本集”。
目前正在通过directConnection
URI选项在驱动程序之间对行为进行标准化。
在提供replicaSet
URI选项时,您将强制执行在所有驱动程序中发现副本集的第二种行为。只要您不在单节点副本集中,也可以提供多个种子。
如果我使用repicaSet并发送正确的副本集名称,则连接会有什么区别,如果我发送不正确的副本集名称怎么办?对我的连接有何影响?
如果您指定replicaSet
并输入了错误的设置名称,驱动程序将过滤出所有具有正确设置名称的服务器(或者从驱动程序的角度来看,您指示的replicaSet
是正确的名称,并且服务器报告的错误)。您的应用程序将找不到任何可用的服务器。