Join us at MongoDB.local London on 7 May to unlock new possibilities for your data. Use WEB50 to save 50%.
Register now >
Docs 菜单
Docs 主页
/ /

startShardDraining(数据库命令)

startShardDraining

启动从分片排干数据段的进程,为从分片集群中删除该数据段做好准备。

当命令运行时,它会告诉负载均衡器您要清空给定的分片。然后,负载均衡器开始将数据段从该分片异步移动到集群中的其他分片。当负载均衡器完成此进程时,分片将不包含任何数据,可以从集群中安全地删除。

注意

startShardDraining必须启用负载均衡器, 才能将分片移出分片。如果禁用负载均衡器,则不会迁移任何数据段,并且shardDrainingStatus 会继续报告分片上的剩余工作量。

如果分片不存在,该命令将返回错误,否则返回 ok

要检查排干分片的状态,请使用shardDrainingStatus 命令。

要停止分片,请参阅stopShardDraining 命令。

要删除已排空的分片,请参阅commitShardRemoval 命令。

8.3版本新增

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

  • MongoDB Enterprise:基于订阅、自我管理的 MongoDB 版本

  • MongoDB Community:源代码可用、免费使用且可自行管理的 MongoDB 版本

注意

MongoDB Atlas不支持此命令。请参阅修改Atlas分片集群以在Atlas 集群中添加或删除分片。

该命令具有以下语法:

db.adminCommand( {
startShardDraining: <shardToDrain>
} )

如果已启用authorization ,则必须具有clusterManager角色或任何包含removeShard操作的角色。

在排干分片,您无法备份集群。

您一次可以进行多个分片排干操作。

分片集群中的每个数据库都有一个主分片。如果您要排空的分片也是集群数据库之一的主节点 (primary node in the replica set),则在迁移分片的所有数据后,您必须手动将数据库移动到新分片。有关更多信息,请参阅movePrimary 命令和从分片集群中删除分片。

未分片集合存储在单个分片上。如果其中一个集合位于要删除的分片上,则必须先将该集合迁移到其他分片。

要迁移未分片集合,请参阅moveCollection 命令。

当您排出数据块分布不均匀的集群中的分片,负载均衡器首先从排干的分片删除数据段,然后均衡剩余的不均匀数据块分布。

提示

mongos 命令的写关注(write concern)转换为 startShardDraining"majority"

清空分片可能会导致打开的变更流游标关闭,并且关闭的变更流游标可能无法完全恢复。

如果您在集群执行startShardDraining DDL 操作(修改集合,如reshardCollection 的操作)时运行 ,则仅在并发 DDL 操作完成后才会执行分片排干。

要开始排干分片,请使用db.adminCommand() 方法:

db.adminCommand( {
startShardDraining: "shard04"
} )

后退

拆分

在此页面上