您添加到碎片一个分片群集创建群集,或者你需要的容量添加到集群中的任何时间之后。如果尚未创建分片群集,请参阅“ 部署分片群集”。
在生产环境中,所有分片都应为副本集。
将分片添加到分片集群时,会影响所有现有分片集合的集群分片之间的块平衡 。平衡器将开始迁移块,以便群集将达到平衡。有关更多信息,请参见Cluster Balancer。
块迁移可能会影响磁盘空间,因为默认情况下,源分片会自动存档迁移的文档。有关详细信息,请参见moveChunk目录。
向集群添加分片时,请始终确保集群具有足够的容量以支持平衡集群所需的迁移,而又不影响合法的生产流量。
您可以通过连接到mongos
实例来与分片群集进行交互。
从mongo
外壳连接到mongos
实例。例如,如果mongos
可以在mongos0.example.net
port上访问
a 27017
,则发出以下命令:
使用sh.addShard()
方法将分片添加到集群,如以下示例所示。sh.addShard()
为每个分片单独发行。如果该分片是副本集,请指定副本集的名称并指定该集的成员。在生产部署中,所有分片均应为副本集。
以下是使用添加分片的示例
sh.addShard()
:
要添加以rs1
成员在port 27018
on上运行的成员命名的副本集碎片mongodb0.example.net
,请发出以下命令:
要添加mongod
在端口27018
上运行
的独立分片mongodb0.example.net
,请发出以下命令:
注意
块可能需要一些时间才能迁移到新的分片。