您只能从实例addShardToZone
在admin
数据库上运行mongos
。
该addShardToZone
命令具有以下语法:
该命令包含以下字段:
领域 | 类型 | 描述 |
---|---|---|
addShardtoZone | 串 | 与该区域关联的分片的名称。 |
区 | 串 | 该区域的名称与相关联的碎片。 |
所述mongo
外壳提供了辅助方法
sh.addShardToZone()
您可以将一个区域与多个分片关联,而一个分片可以与多个区域关联。
有关分片群集中区域的更多信息,请参见区域手册页。
MongoDB有效地忽略了没有至少一个与之关联的分片键值范围的区域。
要将范围的分片键值范围与区域相关联,请使用
updateZoneKeyRange
数据库命令或
sh.updateZoneKeyRange()
外壳帮助程序。
在MongoDB中4.0.2开始,您可以运行
updateZoneKeyRange
数据库命令及其助手
sh.updateZoneKeyRange()
和sh.addTagRange()
上unsharded集合或不存在的集合。
小费
在版本4.0.3中更改:通过在分片一个空的或不存在的集合之前定义区域和区域范围,分片收集操作将为定义的区域范围以及所有其他覆盖整个区域范围的块创建块。分片键值,并根据区域范围执行初始块分配。块的这种初始创建和分配允许更快地设置分区分片。在初始分配之后,平衡器将管理后续的块分配。
有关示例,请参见为空集合或不存在的集合预定义区域和区域范围。
对于实施访问控制的分片群集,您必须以具有以下任一特权的用户身份进行身份验证:
update
在
数据库中的shards
集合上config
;或者,enableSharding
在群集资源上可用(从版本4.2.2、4.0.14、3.6.16开始可用)。在clusterAdmin
或clusterManager
内置角色有发放相应的权限addShardToZone
。有关更多信息,请参见基于角色的访问控制的文档页面。
以下示例shard0000
与zone 相关联JFK
:
一个分片可以与多个区域关联。下面的例子关联
LGA
到shard0000
:
shard0000
与LGA
区域和JFK
区域相关联。在平衡的集群中,MongoDB将任一区域覆盖的读取和写入路由到
shard0000
。