【发布时间】:2013-08-15 04:34:53
【问题描述】:
假设我们设置了一个没有仲裁器的 MongoDB 复制,If the primary is unavailable, the replica set will elect a secondary to be primary. 所以我认为它是一种隐式仲裁器,因为副本会自动选择主节点。
所以我想知道为什么我们需要一个专用的仲裁节点?谢谢!
【问题讨论】:
标签: mongodb replication
假设我们设置了一个没有仲裁器的 MongoDB 复制,If the primary is unavailable, the replica set will elect a secondary to be primary. 所以我认为它是一种隐式仲裁器,因为副本会自动选择主节点。
所以我想知道为什么我们需要一个专用的仲裁节点?谢谢!
【问题讨论】:
标签: mongodb replication
我created a spreadsheet是为了更好地说明副本集中Arbiter节点的效果。
基本上可以归结为以下几点:
[详细] 详细解释了选举here。在该文件中声明 RS 可以有 50 个成员(偶数)和 7 个投票成员。我强调“状态”,因为它没有解释它是如何工作的。在我看来,如果你发生分裂,一方有 4 名成员(全部投票),另一方有 46 名成员(3 名投票),你宁愿让 46 人选举初选而 4 人作为阅读 -只有集群。但是,这正是“有限投票”所阻止的。在这种情况下,您实际上将拥有一个 4 成员集群,其中一个主集群和一个 46 成员集群是只读的。解释这是怎么回事超出了这个问题的范围,也超出了我的知识范围。
【讨论】:
这实际上归结为 CAP 定理,即如果分区两侧的服务器数量相等,则数据库无法维护 CAP(一致性、可用性和分区容限)。仲裁器专门设计用于在一侧创建“不平衡”或多数,以便在这种情况下可以选举主节点。
如果您在任一侧获得偶数个节点,MongoDB 将不会选择主节点,并且您的集合将不接受写入。
我的意思是,例如,一侧是 2,另一侧是 2。我的英语在那里不太好理解。
所以我真正的意思是双方。
维基百科为解释 CAP 提供了一个很好的案例:http://en.wikipedia.org/wiki/CAP_theorem
【讨论】:
由于以下原因,在复制中需要仲裁器:
希望对你有帮助!!!
【讨论】:
仲裁器是一种可选机制,当您在副本集中部署了偶数个 mongod 时,它允许投票成功。仲裁器是轻量级的,意味着部署在不是专用 mongo 副本的服务器上,即:服务器的主要角色是其他一些任务,例如 redis 服务器。由于它们很轻,因此不会(明显)干扰系统资源。
来自文档:
仲裁者没有数据集的副本,不能成为仲裁者 基本的。副本集可能有仲裁者在选举中添加投票 为初级。仲裁器允许副本集具有奇数个 成员,无需复制数据的成员的开销。
【讨论】: