对于 AI 代理:可在 https://www.mongodb.com/zh-cn/docs/llms.txt 获取文档索引—通过在任何 URL 路径后添加 .md 可获取所有页面的 Markdown 版本。
Docs 菜单

addShardToZone(数据库命令)

addShardToZone

将分片与区域关联。 MongoDB 将此分片与给定区域关联。 该区域覆盖的数据块将分配给与该区域关联的分片。

提示

在 mongosh 中,该命令也可以通过 sh.addShardToZone() 辅助方法运行。

助手方法对于 mongosh 用户来说很方便,但它们可能返回与数据库命令不同级别的信息。如果不追求方便或需要额外的返回字段,请使用数据库命令。

您只能从 mongos实例对admin数据库运行addShardToZone。

此命令可用于以下环境中托管的部署:

  • MongoDB Atlas :用于在云中部署MongoDB 的完全托管服务

该命令具有以下语法:

db.adminCommand(
{
addShardToZone: <string>,
zone: <string>
}
)

该命令接受以下字段:

mongosh 提供了辅助方法 sh.addShardToZone()。

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

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

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

要将分片键值范围与区域关联,请使用updateZoneKeyRange数据库命令或sh.updateZoneKeyRange() Shell 助手。

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

提示

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

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

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

clusterAdmin 或 clusterManager内置角色具有发出addShardToZone 的适当权限。有关更多信息,请参阅基于角色的访问控制的文档页面。

以下示例将shard0000与区域JFK关联:

db.adminCommand( { addShardToZone : "shard0000" , zone : "JFK" } )

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

db.adminCommand( { addShardToZone : "shard0000" , zone : "LGA" } )

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