MongoDB副本集是否至少需要2个或3个成员?


Answers:


19

如果需要,您实际上可以运行一个成员“集合”。

不过,最好是3个成员(或更高的奇数)。如果副本集的大部分不可用,则副本集将变为只读,因此,如果您丢失了两个成员集中的成员,则其余成员将变为只读。

您可以同时运行两个正式成员以及一个“仅投票”成员(称为仲裁者)。对于副本集,这是最小的合理安全的选择。


6
要强调两个成员不是容错系统。@MrKurt是正确的,如果一个成员退出(计划外),则另一个成员不能成为主用户,而将降级为SECONDARY(只读)。换句话说,如果您需要在生产环境中使用副本,则3个成员是最少的3个成员,以便对一个成员失败进行容错。
Bret Fisher 2014年

3

这基本上是一个措辞上的问题,因为本教程中的要求不是有关副本集的一般性说明,而是与本教程itelf有关。部署副本集的要求通常为1个或更多,大多数副本具有2个或更多,但是链接到的教程专门用于部署3个成员集:

本教程介绍了如何从MongoDB的三个现有实例创建三成员副本集

因此,本教程的要求是该集合必须具有3个成员。但是,拥有这两个语句有点令人困惑,因此我提交了一个pull请求(EDIT:pull request现在已经被合并到其中)来对其进行清理。

您可以将一个mongod节点配置为副本集的一部分,但严格来说,这不是一个“集合”。实际上,由于复制使用的资源比独立资源多mongod(基本上是由于oplog所致),所以实际上没有任何必要运行单个成员,除非这是在将其他成员添加到集合中之前作为临时措施,或者如果您需要操作oplog其他原因(例如备份)。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.