在指定从Java应用程序连接到MongoDB副本集的客户端URI时,我对MongoDB连接字符串replicaSet选项的 use / need 感到困惑。
我有3个运行MongoDB的节点实例,包括副本集,每个实例都被指定为同一副本集的成员。我想从我的Java应用程序连接到副本集。我对我阅读的文档感到困惑,如果在我给出一个包含2个以上主机名的列表时甚至需要在连接字符串中指定副本集名称。
以下是我启动3节点MongoDB实例的方法。
我假设然后进行协商,选出一个主要,剩下的就是 被标记为Secondaries。
然后我想通过我的Java应用程序中的MongoClient调用连接到副本集。是否需要实际的副本集名称?我是否需要列出副本集的每个成员,或者MongoDB驱动程序是否只需要副本集的单个成员来确定其余成员?
MongoClient mongoClient = new MongoClient(
new MongoClientURI(
"mongodb://Server1,Server2,Server3/?replicaSet=rs0"
)
);
我是否需要replicaSet选项?
答案 0 :(得分:0)
如果您没有指定复制副本,则会将其连接到“#stand;独立”状态。模式,您在应用程序端丢失replicaset功能(没有故障转移)。因此,如果您连接的服务器要故障转移到另一台服务器,您的应用程序将无法跟随并重新连接到新的主服务器。
来自docs:
连接到副本集时,提供种子列表很重要 至少有两个mongod实例。如果您只提供连接 单个mongod实例的点,并省略replicaSet,客户端 将创建一个独立的连接。