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

cat*_*nts 16 mongodb

这里的文档说三个:http : //docs.mongodb.org/manual/tutorial/deploy-replica-set/

“一个副本集需要三个不同的系统……”

而这里的文档说两个:http : //docs.mongodb.org/manual/core/replication/

“大多数副本集由两个或更多 mongod 实例组成......”

有谁知道哪个是正确的?

小智 19

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

不过,3 名成员(或更高的奇数)确实是最好的。副本集只有在大部分集不可用时才会变为只读,因此如果您在两个成员的集合中丢失了一个成员,则剩余的成员将变为只读。

您也可以运行两个正式成员和一个“仅投票”成员(称为仲裁者)。这是副本集最小的合理安全选项。

  • 要强调的是,两个成员不是一个容错系统。@MrKurt 是正确的,如果一个成员宕机(计划外),那么另一个成员就不能是 PRIMARY 并且将降级到 SECONDARY(只读)。换句话说,如果您在生产中需要一个副本,那么 3 个成员是针对成员失败的容错的最小值。 (6认同)