为什么 mongodb 需要三个配置服务器

M.R*_*.R. 3 mongodb

mongodb 官方文档声明使用三个配置服务器。他们说它是为了冗余,因为 1 个服务器将是一个故障点......但为什么不是 2 个?在生产分片集群中,如果我有 1 个分片,我不需要超过 2 个,对吗?一个配置服务器是否只能处理 1 个分片?所以,如果最小值是 2 个分片,那么至少我应该有 3 个?

Ada*_*m C 5

配置服务器是一种特殊情况,您可以使用一个(用于测试)或三个,仅此而已。它们不是副本集,至少现在还不是,将来可能会改变,请参阅SERVER-1448

去(重新)阅读这里的前两段- 请注意,明确提到了关于它们不是副本集的部分。我将挑选一些其他相关的要点:

配置服务器使用两阶段提交来确保即时一致性和可靠性

为确保生产中的冗余和安全,您应该始终使用三个

第一部分提示您为什么需要 3 个,第二部分告诉您,特别是在安全方面(冗余很明显 - 您有 3 个数据副本)。

通过如何实现 2 阶段提交,所有三个配置服务器都必须接收(并确认)更改才能被视为成功。这是安全部分 - 所有三个都必须在法定人数中并且具有相同的数据(有定期检查),这就是为什么它完全需要三个配置服务器(现在)。当您只使用一个进行测试时,这不会发生,并且您的集群元数据基本上处于危险之中,因此仅使用一个仅用于测试目的。