当前位置: 首页 > 知识库问答 >
问题:

Mongodb java驱动程序在崩溃后无法重新连接到主程序

谢阳成
2023-03-14

我有一个主要/次要mongodb集群,即server1和Server2。

当我杀死主server1以模拟故障时,server2在几秒钟内变成主Server,使用java驱动程序访问mongo的应用程序开始使用新的主server2。

当我重新启动server1时,它在几秒钟内恢复了它的主要角色,但随后我的应用程序,而不是连接到server1,仍然尝试连接到server2,并且,由于它现在处于次要状态,Failed!所有请求都出现了这个错误:

com.mongodb.MongoServerSelectionException: Unable to connect to any server that matches {serverSelectors=[ReadPreferenceServerSelector{readPreference=primary}, LatencyMinimizingServerSelector{acceptableLatencyDifference=15 ms}]}

问候,

洛伊克

共有1个答案

隗星驰
2023-03-14

由于这个问题已经存在一年多了,我将使用MongoDB3.0和Java driver 3.0.4来解决这个问题。

假设在端口27017、27018和27019上的副本集中有3个节点(1个主节点和2个次节点)(建议在副本集中的最小节点数)。因此,我可以创建具有上述配置的连接,如下所示:

MongoClient mongo = new MongoClient(asList(new ServerAddress("localhost",27017),
            new ServerAddress("localhost", 27018), new ServerAddress("localhost", 27019),
            new MongoClientOptions.builder().requiredReplicaSetName("replset_name").build()));

请注意,使用MongoclientOptions,驱动程序保证上述服务器确实是所述副本集的成员。如果没有副本集,可以跳过此操作。

 类似资料:
  • 我正在一个非常低配置的机器上工作,其中JVM有时会崩溃。 java应用程序名为application。jar,从本地流媒体服务器播放高清视频。该应用程序运行在悬挂在Rest室中的嵌入式win7触摸计算机上。 当堆大小超过某一时间,并且错误内存不足时,JVM将关闭。 我想重新启动我的应用程序.jar每当JVM崩溃。 这是可能的。然后如何做到呢? 谢了。 编辑:使用尝试捕获进行包装不起作用,因为jvm

  • 代码: 输出: Traceback(最近一次调用last):文件“C:/Users/RV CSP/pycharm projects/untitled 25/hotel . py”,第9行,在session = cluster.connect('dbsi ')文件“C:\ Users \ RV CSP \ AppData \ Roaming \ Python \ Python 36 \ site-p

  • 我使用的是Java8、Spark 2.1.1、Ignite2.5和BoneCP 0.8.0 结果出现以下异常: 提交脚本如下所示: 当使用“本地”Spark实例时,它使用think JDBC驱动程序连接到Ignite。有什么想法吗?

  • 我们有一个使用Oracle 19.3数据库运行的项目,以及一个使用Oracle 19.3 JDBC驱动程序(在Maven Central上可用)的Java应用程序。在带有JRE1.8的Windows上,一切都很好,但当我运行在构建服务器上或在带有OpenJDK11.0.3的WSL Ubuntu中时,它拒绝连接到数据库。具体地说: 如果切换到18.3JDBC驱动程序,在这两种环境中一切都很好;如果我

  • 问题内容: MongoDB刚刚强制将我的Heroku服务器上的更新从2.6更新为3.0 现在,我的应用在启动后不久因以下错误而崩溃: 我检查了他们的状态页,发现Mongo已将其服务器更新为3.0版,而且该更新现在应该稳定了,因此这是我需要做的事情。 在看了一些之后。我发现应该安装新的“驱动程序”以与3.0版兼容。 我发现此链接http://docs.mongodb.org/manual/relea

  • 我目前正在创建一个API,它使用具有3个节点的Cassandra集群来存储数据。我使用PHP 5.6.17、Cassandra 2.2.3和Datastax PHP Driver 1.1.0在本地机器上开发它,一切都很顺利。 但是,我们决定迁移到远程 Cassandra 集群(带有本机协议 4 的 3.4),我无法通过 PHP 访问它,因为我收到以下错误:发生错误:16777226 - 没有可用于