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

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

此处的文档提到了三点: http://docs.mongodb.org/manual/tutorial/deploy-replica-set/

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

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

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

有谁知道哪一个是正确的?

答案1

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

不过,3 个成员(或更高的奇数)确实是最佳选择。如果副本集的大多数成员不可用,则副本集将变为只读,因此如果您在双成员集中丢失一个成员,则剩余成员将变为只读。

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

答案2

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

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

因此,本教程的要求是集合有 3 个成员。不过,有这两个语句有点令人困惑,所以我提交了一个拉取请求(编辑:拉取请求现已合并)以稍微清理一下。

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

相关内容