Force a Member to Become Primary


You can force a replica set member to become primary by giving it a higher members[n].priority value than any other member in the set.

Optionally, you also can force a member never to become primary by setting its members[n].priority value to 0, which means the member can never seek election as primary. For more information, see Priority 0 Replica Set Members.

For more information on priorities, see members[n].priority.


A majority of the configured members of a replica set must be available for a set to reconfigure a set or elect a primary. See Replica Set Elections for more information.


Force a Member to be Primary by Setting its Priority High

This procedure assumes your current primary is and that you’d like to instead make primary. The procedure also assumes you have a three-member replica set with the configuration below. For more information on configurations, see Replica Set Configuration Use.

This procedure assumes this configuration:

    "_id" : "rs",
    "version" : 7,
    "members" : [
            "_id" : 0,
            "host" : ""
            "_id" : 1,
            "host" : ""
            "_id" : 2,
            "host" : ""
  1. In a mongo shell connected to the primary, use the following sequence of operations to make the primary:

    cfg = rs.conf()
    cfg.members[0].priority = 0.5
    cfg.members[1].priority = 0.5
    cfg.members[2].priority = 1

    The last statement calls rs.reconfig() with the modified configuration document to configure to have a higher members[n].priority value than the other mongod instances.

    The following sequence of events occur:

    • and sync with (typically within 10 seconds).
    • sees that it no longer has highest priority and, in most cases, steps down. does not step down if‘s sync is far behind. In that case, waits until is within 10 seconds of its optime and then steps down. This minimizes the amount of time with no primary following failover.
    • The step down forces on election in which becomes primary based on its priority setting.
  2. Optionally, if is more than 10 seconds behind‘s optime, and if you don’t need to have a primary designated within 10 seconds, you can force to step down by running:

    db.adminCommand({replSetStepDown: 86400, force: 1})

    This prevents from being primary for 86,400 seconds (24 hours), even if there is no other member that can become primary. When catches up with it will become primary.

    If you later want to make primary again while it waits for to catch up, issue the following command to make seek election again:


    The rs.freeze() provides a wrapper around the replSetFreeze database command.

Force a Member to be Primary Using Database Commands

Changed in version 1.8.

Consider a replica set with the following members:

  • - the current primary.
  • - a secondary.
  • - a secondary .

To force a member to become primary use the following procedure:

  1. In a mongo shell, run rs.status() to ensure your replica set is running as expected.

  2. In a mongo shell connected to the mongod instance running on, freeze so that it does not attempt to become primary for 120 seconds.

  3. In a mongo shell connected the mongod running on, step down this instance that the mongod is not eligible to become primary for 120 seconds:

 becomes primary.


    During the transition, there is a short window where the set does not have a primary.

For more information, consider the rs.freeze() and rs.stepDown() methods that wrap the replSetFreeze and replSetStepDown commands.