Navigation

Convert a Standalone to a Replica Set

On this page

This tutorial describes the process for converting a standalone mongod instance into a replica set. Use standalone instances for testing and development, but always use replica sets in production. To install a standalone instance, see the installation tutorials.

To deploy a replica set without using a pre-existing mongod instance, see Deploy a Replica Set instead.

Procedure

  1. Shut down the standalone mongod instance.

  2. Restart the instance. Use the --replSet option to specify the name of the new replica set.

    For example, the following command starts a standalone instance as a member of a new replica set named rs0. The command uses the standalone’s existing database path of /srv/mongodb/db0:

    mongod --port 27017 --dbpath /srv/mongodb/db0 --replSet rs0
    

    If your application connects to more than one replica set, each set should have a distinct name. Some drivers group replica set connections by replica set name.

    If converting a shard standalone instance to a shard replica set, the shard replica set name must not use the same name as the config server replica set.

    For more information on configuration options, see Configuration File Options and the mongod manual page.

  3. Connect a mongo shell to the mongod instance.

  4. Use rs.initiate() to initiate the new replica set:

    rs.initiate()
    

    The replica set is now operational. To view the replica set configuration, use rs.conf(). To check the status of the replica set, use rs.status().

    Important

    If converting a shard standalone instance to a shard replica set, you must also update the shard information.

To add members to this replica set, use the rs.add() method. For more information on adding members to a replica set, see Add Members to a Replica Set.

Sharding Considerations

If the new replica set is a shard replica set, change the shard information in the config database by doing the following:

  1. Connect to one of the sharded cluster’s mongos instances and retrieve the shard information:

    var myShard = db.getSiblingDB("config").shards.findOne( { _id: "<name>"} )
    

    Replace <name> with the name of the shard.

    Note

    The <name> of the shard is separate from the shard replica set name. To retrieve the name of the shard, see the shards section in the results from the sh.status() method.

  2. Update the host information with the replica set information:

    myShard.host = "<replica-set>/<member,><member,><...>"
    

    Replace <replica-set> with the name of the replica set. Replace <member,><member,><...> with the list of the replica set members.

  3. Save the information.

    db.getSiblingDB("config").shards.save( myShard )
    
  4. Restart all mongos instances and all shard binaries.