How to change the master in a MongoDB cluster without restarting the process

high-availabilitymaster-slavemongodbreplication

Reading the documentation of MongoDB about how to configure a master-slave configuration of a cluster (our cluster will have more than 12 nodes, so unfortunately we can't have a replica-set configuration), how can I promote a slave to master without having to stop any process?

Is there any command we can use, like the slaveof command of Redis which allows us to promote a slave to master without the need to restart the process?

This is what we found on MongoDB documentation (http://docs.mongodb.org/manual/core/master-slave/):

To permanently failover from a unavailable or damaged master (A in the
following example) to a slave (B):

Shut down A. Stop mongod on B. Back up and move all data files that
begin with local on B from the dbpath. Warning Removing local.* is
irrevocable and cannot be undone. Perform this step with extreme
caution. Restart mongod on B with the –master option. Note This is a
one time operation, and is not reversible. A cannot become a slave of
B until it completes a full resync.

Is this really the only way?

Best Answer

An addendum to sysadmins answer to clear up your question in the comments:

No, currently (as of 2.4) there is no way to go beyond 12 nodes in a replica set. You could look into using the Mongo Connector to have multiple sets though as a possible solution. The connector allows you to replay the ops from one set in another set, essentially by tailing the oplog (which is how replication works in general). However, that would mean that resolving any sync issues between clusters would not be automatic and would essentially be up to you.

For reference, the relevant issue to vote/watch to increase the 12 node limit is SERVER-3110 - it is currently slated for 2.5.x (the current unstable development branch), but as with all such things until it is committed and in a stable release, you cannot say for sure when it will be done.

Related Topic