【问题标题】:ReplicaSet Info in MongoDB ConnectionStringMongoDB ConnectionString 中的 ReplicaSet 信息
【发布时间】:2018-02-03 10:15:54
【问题描述】:

这个问题是关于在连接字符串中指定replicaSet

我在spring数据中定义了如下连接字符串:

mongodb://userName:password@DBSeedServer:port/NameOfDB

此连接字符串定义了 1 个种子服务器并且没有副本集信息。

根据MongoDB documentation, 如果只提供单个mongod实例的连接点,而省略replicaSet,客户端会创建一个独立的连接。

由于连接字符串中还提供了 DB,如果在引导期间可用,仍然可以从单个种子中获取副本集信息。 我找不到关于它无法从单个种子中获取副本集信息的驱动程序文档。

是否有任何原因导致即使种子是Secondary或现有副本集的一部分,驱动程序也无法从种子中建立副本集信息?

此外,您还看到单个种子有哪些其他问题(我可以认为一个种子是单点故障,这意味着如果唯一提供的种子不可用,则无法识别主种子,无法建立连接)

【问题讨论】:

  • MongoDB高手请回复

标签: java mongodb spring-data connection-string replicaset


【解决方案1】:

由于连接字符串中还提供了 DB,如果在引导期间可用,仍然可以从单个种子中获取副本集信息。我找不到关于它无法从单个种子中获取副本集信息的驱动程序文档。

是否有任何原因导致即使种子是Secondary或现有副本集的一部分,驱动程序也无法从种子中建立副本集信息?

根据 MongoDB Server Discovery and Monitoring (SDAM) specification,驱动程序有意将独立连接与副本集连接区分开来。在独立模式下连接时,驱动程序不会尝试对副本集配置进行任何拓扑发现或验证。

如果您想连接副本集的特定成员(例如,为了进行备份或执行维护),这可能很有用。绕过副本集发现还允许您使用主机名/端口别名连接到副本集成员(例如,如果您通过代理/防火墙转发连接)。使用副本集连接,客户端应为use the hostnames and ports listed in the replica set configuration(不是种子列表),因此客户端视图始终尊重副本集故障转移和重新配置。

此外,您还看到单个种子有哪些其他问题(我可以认为一个种子是单点故障,这意味着如果唯一提供的种子不可用,则无法识别主种子,无法建立连接)

由于存在用于数据冗余和故障转移的副本集,因此仅提供单个种子成员会破坏这种部署类型的基本目标之一。强烈建议您在种子列表中提供两个或更多成员,以帮助确保您的应用程序能够成功连接。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-06-25
    • 2020-04-09
    • 2012-07-29
    • 1970-01-01
    • 2013-05-27
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多