Introducing Dragonfly Cloud! Learn More

Question: How can you force a MongoDB replica set member to become primary?

Answer

In MongoDB, a replica set is a group of mongod instances that maintain the same data set. Replica sets provide redundancy and high availability and are the basis for all production deployments. Within a replica set, only one member is deemed the primary node, which receives all write operations. The other, secondary members, replicate the primary's oplog and apply the operations to their datasets.

However, there might be scenarios where you need to force a specific member of the replica set to become the primary, such as for maintenance or in response to an issue with the current primary. It's important to note that forcing a member to become primary goes against the automatic failover mechanism of MongoDB and should be done with caution.

Here is how to force a MongoDB replica set member to become primary:

  1. Step Down the Current Primary: First, if the current primary is operational but you want another member to take over, you'll need to make the current primary step down. This can be achieved using the rs.stepDown() command.

    rs.stepDown()
  2. Reconfigure the Replica Set: Change the priority settings of the replica set members. MongoDB elects the primary based on a priority value (0 to 100). Members with higher priority values are more likely to be elected primary. You can configure one member to have a higher priority than the others to make it the preferred primary.

    Here is an example of changing the priority of members:

    cfg = rs.conf() cfg.members[0].priority = 0.5 // Assuming member 0 is the current primary cfg.members[1].priority = 1 // Increase priority to make this member the preferred primary rs.reconfig(cfg)
  3. Force Re-election: After adjusting priorities, a re-election will occur automatically if you've stepped down the current primary. If not, or to expedite the process, you can force a re-election by shutting down the current primary or disconnecting it from the network temporarily. Be cautious with this approach as it can impact your cluster's availability.

Remember, these actions can lead to downtime or affect the availability of your database, particularly if not planned and executed carefully. It's also worth noting that forcing a specific member to become primary is generally recommended only in exceptional circumstances. In most cases, it's best to allow MongoDB's election process to select the primary automatically.

Always ensure your replica set members are healthy and the network connections between them are stable before performing any manual intervention.

Was this content helpful?

White Paper

Free System Design on AWS E-Book

Download this early release of O'Reilly's latest cloud infrastructure e-book: System Design on AWS.

Free System Design on AWS E-Book

Start building today 

Dragonfly is fully compatible with the Redis ecosystem and requires no code changes to implement.