微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

MongoDB:MongoClient在主数据库关闭时无法连接到辅助副本集

如何解决MongoDB:MongoClient在主数据库关闭时无法连接到辅助副本集

在我的场景中,我希望当主Mongo关闭时,MongoClient(Meteor应用程序)可以连接到MongoDB辅助副本集。我设置了5个集群,当3个MongoDB宕机时,其余2个将作为辅助集群,在此期间,MongoClient应该继续与辅助Mongo建立连接并以只读模式运行。

有人尝试过吗?

我有各种超时时间

Cluster created with settings {hosts=[10.1.1.10:4000],mode=MULTIPLE,requiredClusterType=REPLICA_SET,serverSelectionTimeout='5 ms',maxWaitQueueSize=2000,requiredreplicasetName='rs0'}
INFO  | 2020-08-19 08:29:02,880 | 10.2.2.11 | org.mongodb.driver.cluster | Adding discovered server 10.1.1.10:4000 to client view of cluster
INFO  | 2020-08-19 08:29:02,999 | 10.2.2.11 | org.mongodb.morphia.logging.MorphiaLoggerFactory | LoggerImplFactory set to org.mongodb.morphia.logging.jdk.JDKLoggerFactory
INFO  | 2020-08-19 08:29:03,036 | 10.2.2.11 | org.mongodb.driver.cluster | Exception in monitor thread while connecting to server 10.1.1.10:4000

No server chosen by ReadPreferenceServerSelector{readPreference=primaryPreferred} from cluster description ClusterDescription{type=REPLICA_SET,connectionMode=MULTIPLE,serverDescriptions=[ServerDescription{address=10.1.1.10:4000,type=UNKNowN,state=CONNECTING,exception={com.mongodb.MongoSocketopenException: Exception opening socket},caused by {java.net.socketTimeoutException: connect timed out}}]}. Waiting for 5 ms before timing out

有人见过这个错误吗?

这是流星连接到mongod的方式

mongodb://username:password@host-01:4000,host-02:4000,host-03:4000,host-04:4000,host-05:4000/mydb?replicaset=rs0
readPreference is PrimaryPreferred

解决方法

任何驱动程序都应至少知道一个辅助目录时,才可以发出具有辅助/辅助首选/主要优先读取优先级的查询。

您要么在部署中没有任何功能上的辅助服务器,要么在应用程序和数据库之间存在某种连通性问题,这导致服务器成为未知服务器而不是辅助服务器。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。