Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/mongodb/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
为什么不建议在生产环境中以副本集的形式启动solo MongoDB实例?_Mongodb_Replication - Fatal编程技术网

为什么不建议在生产环境中以副本集的形式启动solo MongoDB实例?

为什么不建议在生产环境中以副本集的形式启动solo MongoDB实例?,mongodb,replication,Mongodb,Replication,在评论中的讨论之后,@kevinadi建议我提出一个与他的评论相关的新问题: 出于开发目的,可以使用一个节点启动副本集。[…]请注意,这不是生产环境的建议设置 许多人正在为solo MongoDB实例启动一个副本集,对于为什么不建议这样做,有一个明确的答案是很有意思的,以供将来参考 我希望@kevinadi能够回答这个问题,提供内存、CPU、性能方面的参数,以及不建议为MongoDB实例启动副本集的所有影响和原因。副本集的主要功能是为MongoDB部署提供数据冗余和高可用性。也就是说,如果副本集

在评论中的讨论之后,@kevinadi建议我提出一个与他的评论相关的新问题:

出于开发目的,可以使用一个节点启动副本集。[…]请注意,这不是生产环境的建议设置

许多人正在为solo MongoDB实例启动一个副本集,对于为什么不建议这样做,有一个明确的答案是很有意思的,以供将来参考


我希望@kevinadi能够回答这个问题,提供内存、CPU、性能方面的参数,以及不建议为MongoDB实例启动副本集的所有影响和原因。

副本集的主要功能是为MongoDB部署提供数据冗余和高可用性。也就是说,如果副本集中的主节点由于任何原因发生故障,则辅助节点将立即作为新的主节点接管(平均在10秒内)。有关此主题的更多详细信息,请参阅

官方MongoDB驱动程序知道此副本集选择事件,并将为新的主服务器提供自动重新连接和操作重试。从应用程序的角度来看,数据库端没有发生任何事情

使用具有多个辅助设备的副本集的另一个优点是可以以滚动方式进行零停机升级/维护。这可以通过使一个辅助设备脱机,对其进行维护,然后对其他辅助设备进行维护,最后退出主设备并对其进行维护来实现。同样,由于官方MongoDB驱动程序知道这些事件,您可以在技术上对实时数据库进行维护,而且影响非常小,应用程序不会停机

这与单一数据库服务器不同,后者只有一个真正的大型服务器。尽管单片部署有某些优点(这又是一个不同的讨论:),MongoDB被设计成一个容错分布式数据库。单一服务器的一个直接缺点是服务器必须始终处于100%的运行状态,否则应用程序就会中断。副本集的设计目的是让你的应用程序可以有100%的正常运行时间,而不会对每个服务器施加必须有100%正常运行时间的压力

作为奖励,副本集可以通过将驱动程序设置为从辅助设备读取(写入必须始终转到主设备)来提供读取可伸缩性。请注意,如果要进行二次读取,则应该进行仔细的设计,因为如果滥用,这可能会干扰高可用性方面

总之,副本集可以提供:

  • 高可用性和容错性
  • 无停机维护
  • 按比例读取的数据冗余
不要求硬件100%可靠。这就是为什么在prod部署中强烈建议使用副本集的原因


有关更详细的副本集部署注意事项,请参阅。

感谢您的详细回复,非常完美!:)