的问题是 - 当你的副本集被迫下台您的应用程序运行时,所有的主流蒙戈客户将抛出每个连接至少一个例外。发生这种情况是因为它们的数据库连接硬连线到过去是主要的物理服务器,并且不再接受查询。所以,虽然MongoDB的建筑师可能会认为,降压过程中不会产生任何的停机时间,在现实中,如果你按照他们的文档处理连接,每个下台将造成一个完全成熟的崩溃了至少一个用户,甚至可能会造成数据的完整性问题。我希望这可以通过一个简单的包装器来避免,它捕获一些特定的Mongo异常并通过自动重新连接到副本集来处理它们,并重新运行失败的查询。如果你已经有这个解决方案,请分享!我特别感兴趣的是可以与任何主要Mongo驱动程序一起使用Node.JS的解决方案。MongoDB的 - 如何让副本集下台真正的无缝
1
A
回答
0
你是正确的 - 这是确切的行为我既主流ODM厂商以及官方本地的MongoDB驱动程序Node.js的经历
即使bufferMaxEntries
是附加查询将被缓冲起来之前,副本集降压将导致我未完成的查询失败,并显示“无法在初始种子列表中找到任何有效的服务器”,“套接字关闭”和“ECONNRESET”正确配置。
因此,我开发了Monkster,为使用流行的Monk ODM的Node.js开发人员提供MongoDB集群的无缝副本集降级和整体高可用性。
Monkster是一个Node.js软件包,它为Monk这个聪明的MongoDB API提供了高可用性。它实现了智能错误处理和重试逻辑,以无缝地处理临时网络连接问题和副本集降级。一旦一个新的主已当选
相关问题
- 1. 如何关闭mongodb中的副本集?
- 2. 如何配置MongoDB副本集
- 3. 春PropertyPlaceholderConfigurer和MongoDB副本集
- 4. MongoDB副本集 - copyDatabase与readPreference?
- 5. 如何验证MongoDb Sharded副本集是否工作正常?
- 6. Mongodb 3.4 - 将副本添加到副本集的正确方法是什么?
- 7. mongodb中的次要节点副本集
- 8. mongodb中的存档副本集
- 9. 锁定之外的MongoDB副本集
- 10. 无法添加成员到MongoDB的副本集
- 11. 如何更新Mongodb副本集配置中的_id?
- 12. 当一个成员变得不可用时,MongoDB副本集真的很慢
- 13. 连接到MongoDB副本集 - pymongo
- 14. MongoDB在副本集中索引大小
- 15. Mongodb副本集(在第二方写)
- 16. 设置的MongoDB副本集的版本到以前的值
- 17. 如何无缝集成Subversion和git?
- 18. 如何确认PHP MongoDB连接是否正确识别副本集?
- 19. mongodb辅助副本无法连接到主集
- 20. mongodb客户端库无法连接到副本集
- 21. 无法使用公共IP地址连接到MongoDB副本集
- 22. MongoDB - 使副本集成员被动无需断开客户端?
- 23. 如何检查在mongodb中读取哪个副本集
- 24. 如何让我的滑块上的动画更加无缝?
- 25. 使用副本集流星
- 26. DataAnnotation JQuery无缝集成?
- 27. 如何格式化Sitecore中的MongoDB副本集的连接字符串?
- 28. 的MongoDB副本集的两个物理机
- 29. 如何在没有数据库的情况下正确关闭Mongo(在副本集中)?
- 30. MongoDB副本集的无投票权成员可以成为主要成员?
的驱动程序会自动重新连接到主。应用程序需要处理选举发生的时间段,其中某些操作将作为错误返回,但没有理由导致任何类型的崩溃或数据完整性问题。我认为处理故障转移场景的确切方式往往是特定于应用程序的,因此您没有看到它的一般解决方案。 – wdberkeley 2014-10-08 16:34:00
我相信绝大多数应用程序会受益于这种情况的相同处理。特别是,由于降级过程足够快(几秒钟),因此大多数应用程序宁愿将查询结果延迟几秒钟,而不是获取异常,并找到避免使其看起来像最终用户崩溃的方法。 – 2014-10-08 21:59:27