将分片添加到集群

在本页面

在创建集群之后或需要在集群中增加容量的任何时间,都可以将分片添加到sharded cluster。如果尚未创建分片群集,请参见部署分片集群

在生产环境中,所有分片都应为replica sets

Considerations

Balancing

将分片添加到分片群集时,会影响所有现有分片集合的群集中各分片中chunks的平衡。平衡器将开始迁移块,以便群集将达到平衡。有关更多信息,请参见Cluster Balancer

在 2.6 版中进行了更改:块迁移可能会影响磁盘空间。从 MongoDB 2.6 开始,源碎片默认情况下会自动存档迁移的文档。有关详细信息,请参见moveChunk directory

Capacity Planning

向群集添加分片时,请始终确保群集具有足够的容量以支持平衡群集所需的迁移,而不影响合法的生产流量。

将分片添加到集群

您可以通过连接到mongos实例来与分片群集进行交互。

  • mongoShell 连接到mongos实例。例如,如果在端口27017mongos0.example.net处可访问mongos,则发出以下命令:
mongo --host mongos0.example.net --port 27017
  • 使用sh.addShard()方法将分片添加到群集,如以下示例所示。每个分片分别发出sh.addShard()。如果该分片是副本集,请指定副本集的名称并指定该集的成员。在生产部署中,所有分片均应为副本集。

Optional

您可以改用addShard数据库命令,该命令可为分片指定名称和最大大小。如果您未指定这些名称,则 MongoDB 会自动分配名称和最大大小。要使用数据库命令,请参见addShard

以下是使用sh.addShard()添加分片的示例:

  • 要添加名为rs1的副本集分片(其成员在mongodb0.example.net的端口27018上运行),请发出以下命令:
sh.addShard( "rs1/mongodb0.example.net:27018" )
  • 要添加在mongodb0.example.net的端口27018上运行的独立mongod碎片,请发出以下命令:
sh.addShard( "mongodb0.example.net:27018" )

Note

chunks可能需要一些时间才能迁移到新分片。