On this page
addShardToZone
On this page
Definition
addShardToZone
-
New in version 3.4: Associates a shard with a zone. MongoDB associates this shard with the given zone. Chunks that are covered by the zone are assigned to shards associated with the zone.
Syntax
You can only run addShardToZone
on the admin
database from a mongos
instance.
The addShardToZone
command has the following syntax:
db.adminCommand(
{
addShardToZone: <string>,
zone: <string>
}
)
Fields
The command takes the following fields:
Field | Type | Description |
---|---|---|
addShardtoZone | string | The name of the shard to associate with the zone. |
zone | string | The name of the zone to associate with the shard. |
The mongo
shell provides the helper method sh.addShardToZone()
Behavior
You can associate a zone with multiple shards, and a shard can associate with multiple zones.
See the zone manual page for more information on zones in a sharded cluster.
Ranges
MongoDB effectively ignores zones that do not have at least one range of shard key values associated with it.
To associate a range of shard key values with a zone, use the updateZoneKeyRange
database command, or the sh.updateZoneKeyRange()
shell helper.
Security
For sharded clusters that enforce access control, you must authenticate as a user whose privileges include either:
update
on theshards
collection in theconfig
database; or, alternatively,enableSharding
on the cluster resource (available starting in version 3.6.16).
The clusterAdmin
or clusterManager
built-in roles have the appropriate permissions for issuing addShardToZone
. See the documentation page for Role-Based Access Control for more information.
Example
The following example associates shard0000
with zone JFK
:
db.adminCommand( { addShardToZone : "shard0000" , zone : "JFK" } )
A shard can associate with multiple zones. The following example associates LGA
to shard0000
:
db.adminCommand( { addShardToZone : "shard0000" , zone : "LGA" } )
shard0000
associates with both the LGA
zone and the JFK
zone. In a balanced cluster, MongoDB routes reads and writes covered by either zone to shard0000
.