Add Shards to a Cluster将分片添加到集群
On this page本页内容
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 Sharded Cluster.如果尚未创建分片集群,请参阅部署分片集群。
In production environments, all shards should be replica sets.在生产环境中,所有分片都应该是副本集。
Considerations注意事项
Balancing平衡
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.有关更多信息,请参阅平衡器内部。
Capacity Planning产能规划
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.在向集群添加分片时,始终确保集群有足够的容量来支持平衡集群所需的迁移,而不会影响合法的生产流量。
Add a Shard to a Cluster将分片添加到群集
You interact with a sharded cluster by connecting to a 您可以通过连接到mongos
instance.mongos
实例来与分片集群进行交互。
In在mongosh
, connect to themongos
instance.mongosh
中,连接到mongos
实例。For example, if a例如,如果可以在mongos
is accessible atmongos0.example.net
on port27017
, issue the following command:mongos0.example.net
的端口27017
上访问mongos
,请发出以下命令:mongosh --host mongos0.example.net --port 27017
Add a shard to the cluster using the使用sh.addShard()
method, as shown in the examples below.sh.addShard()
方法将分片添加到集群中,如下例所示。Issue为每个分片分别发出sh.addShard()
separately for each shard.sh.addShard()
。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.在生产部署中,所有分片都应该是副本集。NoteOptional可选择的You can instead use the您可以使用addShard
database command, which lets you specify a name and maximum size for the shard.addShard
数据库命令,该命令允许您指定分片的名称和最大大小。If you do not specify these, MongoDB automatically assigns a name and maximum size.如果您没有指定这些,MongoDB会自动分配一个名称和最大大小。To use the database command, see要使用数据库命令,请参阅addShard
.addShard
。The following are examples of adding a shard with以下是使用sh.addShard()
:sh.addShard()
添加分片的示例:To add a replica set shard named要添加名为rs1
with a member running on port27018
onmongodb0.example.net
, issue the following command:rs1
的副本集分片,其成员运行在mongodb0.example.net
的27018
端口上,请发出以下命令:sh.addShard( "rs1/mongodb0.example.net:27018" )
To add a standalone要添加在mongod
shard running on port27018
ofmongodb0.example.net
, issue the following command:mongodb0.example.net
的27018
端口上运行的独立mongod
分片,请发出以下命令:sh.addShard( "mongodb0.example.net:27018" )