参考 > 参考 > mongo Shell方法 > 分片方法 > sh.addShardToZone()
您可以将一个区域与多个分片关联,而一个分片可以与多个区域关联。
有关分片群集中区域的更多信息,请参见区域手册页。
MongoDB有效地忽略了没有至少一个与之关联的分片键值范围的区域。
要将范围的分片键值范围与区域关联,请使用
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
内置角色有发放相应的权限sh.addShardToZone()
。有关更多信息,请参见
基于角色的访问控制手册页。
下面的示例将三个区域,NYC
,LAX
,和NRT
,关联到每一个碎片:
一个分片可以与多个区域关联。下面的例子关联
LGA
到shard0000
:
shard0000
与LGA
区域和JFK
区域相关联。在平衡的集群中,MongoDB将任一区域覆盖的读取和写入路由到
shard0000
。