How to scale replicas and shards
In this guide, you will find instructions on how to scale your MongoDB replica set and sharded cluster.
Summary
Scale a replica set
To scale a replica set, simply use juju
’s add-unit
and remove-unit
commands.
Add replicas
To add more replicas, run:
juju add-unit <application_name> -n <num_of_replicas_to_add>
Where an application
can be either a bare replica set, shard, or config-server.
Remove replicas
remove-unit
allows removing more than one replica so long as they do not constitute the majority of the replicas.
To remove replicas, run:
juju remove-unit <application_name>/<unit_number> <application_name>/<unit_number>
Where an application
can be either a bare replica set, shard, or config-server.
Retrieve primary replica
To retrieve the primary replica, use the juju
action get-primary
:
juju run <application_name>/<unit_number> get-primary
Where an application
can be either a bare replica set, shard, or config-server.
Scale a sharded cluster
Add shards to a cluster
To add a shard to a cluster, first deploy the new shard.
To deploy a shard named new-shard
, run:
juju deploy mongodb --config role="shard" new-shard -n <number of replicas for shard>
Wait for the shard to show blocked
and idle
with juju status --watch 1s
.
Next, add it to your config-server:
juju integrate <config-server-name>:config-server new-shard:sharding
Remove shards from a cluster
Like official MongoDB, Charmed MongoDB does not support removing the last shard.
To remove a shard named new-shard
that is not the last, run:
juju remove-relation <config-server-name>:config-server new-shard:sharding
You can watch your sharded cluster scale down with juju status --watch 1s
.
Once the shard is drained, you can fully remove it with:
juju remove-application new-shard