有谁可以解释在什么情况下发生以下错误?
database error {
[MongoError: no valid replicaset members found]
name: 'MongoError',
message: 'no valid replicaset members found'
}
这就是我连接副本集的方式:
var url = format("mongodb://%s:%s@%s/%s?authSource=%s&replicaSet=%s&readPreference=%s&readPreferenceTags=%s&connectTimeoutMS=%s&socketTimeoutMS=%s", username, pswd, replicationSet, db, authdb, replicaSetName, readPreference, readPreferenceTags, 5000, 5000);
var db = mongojs(url);
答案 0 :(得分:0)
在没有辅助人员的情况下,与初级人员相比,“最新”是什么。主要的更改是辅助副本尚未复制的内容。 如果客户经常写(到初级),它就不能下台。
当然,在副本集中有少量节点的情况下也是如此。像三个节点中的一个。
所以.. 在副本集中,您必须始终使大多数投票成员启动并运行。 (2 / 3,3 / 4,3 / 5,......)
您可以使用'mongo'命令直接从命令行连接该RS的主节点吗? 如果是,您的应用程序不能,那么您的应用程序的连接字符串就会出错。
如果您的RS没有'primary',请检查(不同的)节点mongodb.log文件以获取错误消息,以解释错误。
答案 1 :(得分:0)
如果您使用的是https://github.com/strongloop/loopback-connector-mongodb/issues/319中提到的过时版本的mongodb驱动程序,则尽管有有效的副本集成员可用,但仍会出现此消息(感谢brasskazoo指出来)。您应该检查版本并在必要时进行升级。
同时,重新配置副本集可能会使副本集的所有成员备份并暂时解决此问题。该命令为https://docs.mongodb.com/manual/reference/method/rs.reconfig/中的rs.reconfig()