gpt4 book ai didi

mongodb - MongoClientURI 连接字符串中是否需要 ReplicaSet 名称?

转载 作者:行者123 更新时间:2023-12-05 07:50:02 25 4
gpt4 key购买 nike

我对 MongoDB 连接字符串的使用/需要感到困惑 replicaSet选项,当指定用于从 Java 应用程序连接到 MongoDB 副本集的客户端 URI 时。

我有 3 个运行的 MongoDB 节点实例组成副本集,每个实例都被指定为同一副本集的成员。我想从我的 Java 应用程序连接到副本集。我对我读过的文档感到困惑,当我给出超过 2 个主机名的列表时,是否有必要在连接字符串中指定副本集名称。

以下是我启动 3 节点 MongoDB 实例的方式。

  1. Server1$: mongod --replSet "rs0"
  2. Server2$: mongod --replSet "rs0"
  3. Server3$: mongod --replSet "rs0"

我假设随后会发生协商,并且会选出一个 Primary,剩下的被标记为次要。

然后我想通过我的 Java 应用程序的 MongoClient 调用连接到副本集。甚至需要实际的副本集名称吗?我需要列出副本集的每个成员,还是 MongoDB 驱动程序只需要副本集的一个成员来确定其余成员?

MongoClient mongoClient = new MongoClient(
new MongoClientURI(
"mongodb://Server1,Server2,Server3/?replicaSet=rs0"
)
);

我需要 replicaSet 选项吗?

最佳答案

如果您不指定副本集,它将以“独立”模式连接,并且您会在应用程序端失去副本集功能(无故障转移)。因此,如果您连接的服务器故障转移到另一台服务器,您的应用程序将不会跟随并重新连接到新的主服务器。

来自docs :

When connecting to a replica set it is important to give a seed list of at least two mongod instances. If you only provide the connection point of a single mongod instance, and omit the replicaSet, the client will create a standalone connection.

关于mongodb - MongoClientURI 连接字符串中是否需要 ReplicaSet 名称?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36509191/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com