我对mongodb相当陌生,只有几个月的时间。我刚刚转换了我的mongodb数据库以支持辅助副本集,这样我就可以查看集合了。我只添加了一个次要的,我猜现在可能不是最好的阅读后,你应该创建一个奇数,但它是一个本地主机上的一台机器。我看了说明,让复制正常工作了半天,运行我的程序。但由于某种原因,它最近将端口27017的数据库从主数据库切换到次要数据库。第一次在本地宿主:27017,第二次在本地宿主:27027。现在,我的正常程序无法连接到本地主机:27017,没有错误,我相信这是因为它是一个次要的副本集,当它以前是主要的,假设你只能连接到一个主程序。这是错误信息。
Exception in thread "main" com.mongodb.MongoNotPrimaryException: Command failed with error 10107 (NotWritablePrimary): 'not master' on server localhost:27017.
就目前而言,
给出问题3的
我广泛地使用StackOverflow,但这是我的第一篇帖子,所以感谢任何能提供建议的人。
发布于 2021-08-22 05:56:33
https://docs.mongodb.com/manual/tutorial/force-member-to-be-primary/
或者运行手动命令来冻结或退出当前的主服务器:https://docs.mongodb.com/manual/tutorial/force-member-to-be-primary/#force-a-member-to-be-primary-using-database-commands
我只能建议将一些VM或容器设置为副本集成员,以便更好地表示生产environment.。
发布于 2021-08-22 06:17:08
我能够通过使用包含两个副本集的连接字符串来解决这个问题,我不知道我需要这样做。例如对于java:
mongoClient = MongoClients.create("mongodb://localhost:27017,localhost:27027");
这也适用于Mongo,因此我能够连接到二级数据库。我不知道当你试图连接时,你需要提供到所有复制集的路径,但是回想起来,如果有什么问题的话,那就有意义了。
发布于 2021-08-22 16:23:50
如果您需要一个副本集进行测试,您可以创建一个单节点RS。按照创建RS的说明,但只添加一个节点。
https://stackoverflow.com/questions/68878789
复制相似问题