Docs Menu
Docs Home
/
MongoDB Manual
/ /

Add Shards to a Cluster

On this page

  • Considerations
  • Add a Shard to a Cluster

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

All shards must be replica sets.

When you add a shard to a sharded cluster, you affect the balance of chunks among the shards of a cluster for all existing sharded collections. The balancer will begin migrating chunks so that the cluster will achieve balance. See Balancer Internals for more information.

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

If you add a shard while your cluster executes a DDL operation (operation that modifies a collection such as reshardCollection), the operation that adds a shard only executes after the concurrent DDL operation finishes.

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

  1. In mongosh, connect to the mongos instance. For example, if a mongos is accessible at mongos0.example.net on port 27017, issue the following command:

    mongosh --host mongos0.example.net --port 27017
  2. Add a shard replica set to the cluster using the sh.addShard() method, as shown in the example below. Issue sh.addShard() separately for each shard. Specify the name of the replica set and a member of the set.

    Note

    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 example illustrates adding a shard with sh.addShard():

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

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

    Note

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

Back

View Cluster Configuration