[this answer中的评论之后,@ kevinadi建议我打开一个有关他的评论的新问题:
出于开发目的,您可以使用一个节点启动副本集。 [...]请注意,这不是针对生产环境的推荐设置。
[许多人正在为MongoDB单独实例启动一个副本集,关于为什么不建议这样做的明确答案很有趣,以供将来参考。
我希望@kevinadi会回答它,提供有关内存,CPU,性能以及所有影响的原因以及不建议为MongoDB实例启动副本集的原因。
提前感谢!
副本集的主要功能是为您的MongoDB部署提供数据冗余和高可用性。也就是说,如果副本集中的主节点由于任何原因发生故障,则辅助节点将立即接管新的主节点(平均在10秒钟之内)。有关此主题的更多详细信息,请参见Replication。
官方MongoDB驱动程序知道此副本集选举事件,并将提供对新主数据库的自动重新连接和操作重试。从应用程序的角度来看,数据库方面什么也没发生。
使用具有多个第二副本的副本集的另一个优点是,滚动式升级/维护的停机时间为零的可能性。这可以通过以下方法完成:使一个辅助节点脱机,对其进行维护,然后对其他辅助节点进行维护,最后退出主节点并对其进行维护。同样,由于MongoDB官方驱动程序已知道这些事件,因此您可以从技术上对实时数据库进行维护,而影响很小,并且不会导致应用程序停机。
这与单片数据库服务器(只有一个真正的大服务器)的哲学不同。尽管在整体部署中有某些优点(再次讨论是另一回事:)),但MongoDB在设计时就将其设计为容错的分布式数据库。单个服务器的一个直接缺点是服务器必须始终保持100%正常运行,否则应用程序将被中断。设计副本集的目的是使您的应用程序可以具有100%的正常运行时间,而不会对必须具有100%的正常运行时间的单个服务器造成压力。
作为奖励,副本集may
能够通过将驱动程序设置为从次要对象读取来提供读取可伸缩性(写操作必须始终转到主要对象)。请注意,如果要进行二级读取,应该进行仔细的设计,因为如果滥用,这可能会干扰高可用性方面。很抱歉,没有答案,但tldr可以提供副本集:
不需要硬件是100%可靠的。这就是为什么强烈建议在产品部署中使用副本集的原因。
请参见Replica Set Deployment Architectures以获取更多详细的副本集部署注意事项。