Navigation
This version of the documentation is archived and no longer supported.

Add Shards to a Cluster

You add shards to a sharded cluster after you create the cluster or anytime that you need to add capacity to the cluster. If you have not created a sharded cluster, see Deploy a Sharded Cluster.

When adding a shard to a cluster, you should always ensure that the cluster has enough capacity to support the migration without affecting legitimate production traffic.

In production environments, all shards should be replica sets.

Add a Shard to a Cluster

You interact with a sharded cluster by connecting to a mongos instance.

  1. From a mongo shell, connect to the mongos instance. Issue a command using the following syntax:

    mongo --host <hostname of machine running mongos> --port <port mongos listens on>
    

    For example, if a mongos is accessible at mongos0.example.net on port 27017, issue the following command:

    mongo --host mongos0.example.net --port 27017
    
  2. Add each shard to the cluster using the sh.addShard() method, as shown in the examples below. Issue sh.addShard() separately for each shard. If the shard is a replica set, specify the name of the replica set and specify a member of the set. In production deployments, all shards should be replica sets.

    Optional

    You can instead use the addShard database command, which lets you specify a name and maximum size for the shard. If you do not specify these, MongoDB automatically assigns a name and maximum size. To use the database command, see addShard.

    The following are examples of adding a shard with sh.addShard():

    • To add a shard for a replica set named rs1 with a member running on port 27017 on mongodb0.example.net, issue the following command:

      sh.addShard( "rs1/mongodb0.example.net:27017" )
      

      Changed in version 2.0.3.

      For MongoDB versions prior to 2.0.3, you must specify all members of the replica set. For example:

      sh.addShard( "rs1/mongodb0.example.net:27017,mongodb1.example.net:27017,mongodb2.example.net:27017" )
      
    • To add a shard for a standalone mongod on port 27017 of mongodb0.example.net, issue the following command:

      sh.addShard( "mongodb0.example.net:27017" )
      

    Note

    It might take some time for chunks to migrate to the new shard.