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

shardDrainingStatus(数据库命令)

shardDrainingStatus

显示排干分片的状态,即负载均衡器是否仍在将数据块移动到集群中的其他分片,或者该进程已完成。

如果分片不存在,该命令将返回错误,否则将返回排干操作的状态。

要开始排干分片,请参阅 startShardDraining 命令。

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

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

8.3版本新增。

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

注意

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

该命令具有以下语法:

db.adminCommand( {
shardDrainingStatus: <shard>
} )

此命令返回以下输出:

字段
类型
说明

msg

字符串

提供负载负载均衡器当前正在执行的排干操作。

state

字符串

提供排干操作的状态。

shard

字符串

指示排干分片。

remaining

文档

显示负载均衡器为清空分片而必须执行的剩余任务。

remaining.chunks

long

表示仍在分片上的数据段数。

remaining.dbs

long

指示仍在分片上的数据库数量。

remaining.jumboChunks

long

表示仍在分片上的数据块的数量。

remaining.collectionsToMove

long

表示仍在分片上的集合数量。

remaining.estimatedRemainingBytes

long

正在删除的分片上估计剩余的字节数。

note

字符串

为用户提供附加消息。

dbsToMove

阵列

指示用作主分片的排干分片的数据库。从集群中删除分片之前,必须使用 movePrimary 命令手动将这些数据库移至新分片。

collectionsToMove

阵列

表示存储在排干分片上的未分片集合。从集群中删除分片之前,必须使用 moveCollection 命令手动将这些集合移动到另一个分片。

pendingRangeDeletions

long

The number of pending range deletions remaining on the shard undergoing removal. Present only during a transitionToDedicatedConfigServer operation, after the balancer has moved all chunks and databases off the config server.

firstNonEmptyCollection

字符串

The first non-empty collection on the shard undergoing removal. Present only during a transitionToDedicatedConfigServer operation, after the balancer has moved all chunks and databases off the config server.

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

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

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

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

要开始排干分片,请使用 db.adminCommand() 方法运行 startShardDraining 命令:

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

要检查排干操作的状态,请使用 shardDrainingStatus 命令:

db.adminCommand( { shardDrainingStatus: "shard04" } )
{
msg: "draining ongoing",
state: "ongoing",
remaining: {
chunks: Long(2),
dbs: Long(2),
jumboChunks: Long(0),
collectionsToMove: Long(2)
},
shard: "shard04",
note: "you need to call moveCollection for collectionsToMove and afterwards movePrimary for the dbsToMove",
dbsToMove: [
"fizz",
"buzz"
],
collectionsToMove: [
"fizz.coll1",
"buzz.coll1"
],
ok: 1,
operationTime: Timestamp(1575399086, 1655),
$clusterTime: {
clusterTime: Timestamp(1575399086, 1655),
signature: {
hash: BinData(0,"XBrTmjMMe82fUtVLRm13GBVtRE8="),
keyId: Long("6766255701040824328")
}
}
}