Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Voting in MongoDB

An odd number set is recommended. My doubt is as one goes down from an odd set, we have an even number set. The number of members fluctuate between even and odd when they go down one by one. We always don’t have odd member scenario. Can some one explain how MongoDB voting works?

like image 908
Srik Avatar asked Mar 24 '13 10:03

Srik


People also ask

Which element is allowed for voting in MongoDB?

Elections: As the term suggests, in MongoDB there is a freedom to “vote”: individual nodes of the cluster can vote and select their primary member for that replica set cluster.

Is Hidden allowed for voting in MongoDB?

Hidden members may vote in replica set elections. If you stop a voting hidden member, ensure that the set has an active majority or the primary will step down.

How do I set priority in MongoDB?

To change multiple non-voting members to have a priority greater than 0 , issue a series of replSetReconfig or rs. reconfig() operations to modify one member at a time. See Reconfiguration Can Add or Remove No More than One Voting Member at a Time for more information.


1 Answers

The voting is done by a majority of voting members.

Imagine a Replica Set with three (voting) members. Let's say that Node A is primary, and nodes B+C are secondaries. Node A goes down, so nodes B+C go to election. They still do form a majority (two out of three). The election is first decided by priority. If both Nodes B & C have the same priority, then the one who is most up to date in respect to the failed primary (oplog) wins. Let's say it's Node B.

Once node A comes back alive, there is no new election. Node B remains the master, and C+A are now secondaries.

On the other hand, if two nodes go down you don't have a majority, so the replica set can't accept updates (apply writes) any more until at least one of the two failing servers becomes alive (and connected by the single surviving node) again.

Imagine now a Replica Set with four (voting) members. Let's say that Node A is primary, and nodes B+C+D are secondaries. Node A goes down, so nodes B+C+D go to election. They of course form majority (three out of four)

However, if two nodes go down you don't have a majority (two out of four), so the replica set is again at read only mode.

So that's why an odd number is recommended; If you loose a single member in a 3 members replica set, it's the same as loosing a single member in a 4 members replica set: you still gain quorum majority and a new primary can be elected (the RS can still elect a new master by majority). On the other hand, if you loose two members in a 3 members replica set or a 4 members replica set (or n/2 members of n-members replica set) - again - the impact is the same: No new leader can be voted by election.

So, to make a long story short, there is no redundancy gain by having an even number of members in a replica set.

For more see election internals

like image 97
Ori Dar Avatar answered Feb 02 '23 00:02

Ori Dar