MongoDB 分片命令

2025年3月17日 | 阅读 3 分钟

分片是一种将数据分布在不同机器上的方法。MongoDB 可以使用分片来支持大规模数据集的部署和高吞吐量操作。

MongoDB Sharding Commands

MongoDB sh.addShard(<url>) 命令

使用此命令将分片副本集添加到分片集群。 如果我们在集群的分片中添加它,它会影响块的平衡。 它开始传输块以平衡集群。

<replica_set>/<hostname><:port>,<hostname><:port>, ...

语法

示例

输出

MongoDB Sharding Commands

它将添加一个分片以指定副本集的名称和副本集中至少一个成员的主机名。

MongoDB sh.addShardTag() 命令

此命令在分片中添加一个标签或标识符。 MongoDB 使用这些标识符将属于标记范围的线程发送到指定的分片。

示例

它将向三个不同的分片添加三个标签。

MongoDB Sharding Commands

MongoDB sh.addShardToZone(shard, zone) 命令

此命令将指定的分片添加到指定的区域。 此命令在版本 3.4 中引入。 只有属于该区域的分片才会被分配到这些分片。

示例

// 将 LGA 关联到 shard0000

// shard0000 同时与 LGA 区域和 JFK 区域关联。

MongoDB sh.addTagRange(namespace, min, max, tag) 命令

使用此命令,会将分片键值范围附加到分片标签。 区域范围始终排除上限并包含下限。

示例

我们有一个分片键 {state: 1, zip: 1},

下面的示例生成一个特定的标签范围,涵盖加州州的邮政编码

MongoDB sh.disableBalancing(name_space) 命令

使用此命令将禁用参数中指定分片的负载均衡器。 它对块的平衡没有任何影响,但对同一集群中的其他分片集合有影响。

MongoDB sh.enableBalancing(namespace) 命令

此命令启用参数中指定分片的负载均衡器。 它对块的平衡没有任何影响,但对同一集群中的其他分片集合有影响。

MongoDB sh.disableAutoSplit 命令

此命令删除配置设置集合中的自动拆分标志。 当分片集群启用了自动拆分选项时,MongoDB 会根据分片键值自动将其拆分为块。

sh.disableAutoSplit() 只能从连接到指定的 mongos 实例的 mongo shell 中执行。 如果在 mongod 实例上运行 sh.disableAutoSplit() 命令,则会返回错误

MongoDB updateZoneKeyRange 命令

借助此命令,将创建或删除分片键值的范围与区域之间的关系。 使用 db.runCommand( { <command> } ) 方法来运行 updateZoneKeyRange。 必须在 admin 数据库上运行 addShardToZone。

语法

示例

下面的示例在 alpha 区域上创建了一个范围,下限为 1,上限为 10

下面的查询通过将 null 传递给 zone 字段来删除先前创建的范围。

现在检查分片的状态

MongoDB Sharding Commands
下一个主题MongoDB 会话命令