我已经阅读了多次,但是正在尝试理解该消息。所有文档都声明副本集中的成员数为奇数。原因是因为您希望获得奇数票数以确保适当的选举结果(无关系)。但是,我认为副本集中有奇数个成员是违反直觉的,就好像主数据库不可用时,您剩下的偶数成员才能投票给新主数据库。基于此,实际上,在副本集中具有偶数个成员是否更有意义?这样,如果主数据库不可用,您将有一个奇数来确定结果,并且保证不打成平手?
例如,如果您有3个节点,而其中一个发生故障,则只剩下2个可以投票。因为2是偶数,所以您可以平局,这是我们要避免的事情。要启动2个成员并不好,好像其中一个成员不可用,这将使您剩下1个节点,在这种情况下,这意味着没有主节点。根据我上面的论点,这意味着4会很好。如果一个节点不可用,您将剩下3个节点需要投票(成员数量为奇数)。我知道这与文档说明的相反,但是对我而言,这是有道理的。奇数似乎唯一有意义的地方是在没有节点掉线的情况下进行选举。
想法?
-吉姆
复制的目的是,如果服务器在副本集中出现故障,您仍然可以访问数据。这个概念称为availability。
[如果主节点发生故障,则辅助节点之一将取代其作为主节点;此过程称为failover。
可用节点通过election的过程决定哪个节点成为主要节点。
副本集最多可以有50个成员,最多可以有7个投票成员。
为什么成员数为奇数?]
failover机制意味着要选择主要节点的节点的[[多数必须可用。
在4
个(甚至)成员副本集中,大多数是3
:4/2 + 1
在5
(奇数)成员副本集中,多数为3
:5/2 + 1
在5个成员的副本集中,有3个节点可用于该副本集中的更好机会。在4个成员的副本集中,至少必须有3个成员才能使副本集正常运行。因此,对于5个成员副本集(5个中的3个),存在比4(4个成员中的3个)成员副本集更具操作性的机会。
它不仅是成员数量,还包括有多种因素影响选举。