Docs 菜单

Docs 主页开发应用程序MongoDB Manual

sh.addShardToZone()

在此页面上

  • 定义
  • 行为
  • 安全性
  • 例子
sh.addShardToZone(shard, zone)

版本 3.4 中的新增功能:将分片与区域关联。 MongoDB 将此分片与给定区域关联。 该区域覆盖的数据块将分配给与该区域关联的分片。

重要

mongosh 方法

本页介绍了 mongosh方法。这不是数据库命令或特定语言驱动程序(例如 Node.js)的文档。

有关数据库命令,请参阅 addShardToZone 命令。

对于 MongoDB API 驱动程序,请参阅特定语言的MongoDB 驱动程序文档。

对于传统 mongo Shell 文档,请参阅相应 MongoDB Server 版本的文档:

mongo shell v4.4

此方法具有以下参数:

范围
类型
说明
分片
字符串
字符串

与分片关联的区域的名称

仅在连接到 实例时发出sh.addShardToZone() mongos

您可以将一个区域与多个分片关联,一个分片也可以与多个区域关联。

有关分片集群中区域的更多信息,请参阅区域手册页面。

MongoDB 实际上会忽略至少没有一个与之关联的分片键值范围的区域。

要将分片键值范围与区域关联,请使用sh.updateZoneKeyRange()方法。

从 MongoDB 4.2 开始您可以在未分片的集合或不存在的集合上运行 updateZoneKeyRange 数据库命令及其助手 sh.updateZoneKeyRange() sh.addTagRange()

提示

通过对空集合或不存在的集合进行分片之前定义区域和区域范围,分片集合操作会为定义的区域范围创建数据段以及任何其他数据段,以覆盖分片键值的整个范围,并执行基于区域范围的初始数据段分配。数据段的初始创建和分布可以更快地设置区域分片。在初始分布之后,负载均衡器将管理未来的数据段分布。

有关示例,请参阅为空集合或不存在的集合预先定义区域和区域范围

对于强制执行访问控制的分片集群,您必须以具有以下任一权限的用户身份进行身份验证:

  • 针对updateconfig数据库的shardscollection的 ;或者,

  • enableSharding集群 资源上的 (从版本 4.2.2 开始)。

clusterAdminclusterManager内置角色具有发出sh.addShardToZone()的适当权限。有关更多信息,请参阅基于角色的访问控制手册页。

以下示例添加了三个区域NYCLAXNRT ,并将每个区域与一个分片相关联:

sh.addShardToZone("shard0000", "JFK")
sh.addShardToZone("shard0001", "LAX")
sh.addShardToZone("shard0002", "NRT")

一个分片可以与多个区域关联。 以下示例将LGAshard0000关联:

sh.addShardToZone("shard0000", "LGA")

shard0000 同时与LGA区域和JFK区域关联。 在均衡集群中,MongoDB 会将任一区域覆盖的读取和写入路由到shard0000

← sh.addShardTag()