定义
sh.shardDrainingStatus(shardId)显示排干分片的状态,即负载均衡器是否仍在将数据块移动到集群中的其他分片,或者该进程已完成。
9.0版本新增。
如果不指定
shardId,该方法将返回当前正在排干的所有分片的状态。重要
mongosh 方法
本页介绍了
mongosh方法。这不是数据库命令或特定语言驱动程序(例如 Node.js)的文档。有关数据库命令,请参阅
shardDrainingStatus命令。如需了解 MongoDB API 驱动程序,请参阅特定语言的 MongoDB 驱动程序文档。
兼容性
此方法可用于以下环境中托管的部署:
MongoDB Enterprise:基于订阅、自我管理的 MongoDB 版本
MongoDB Community:源代码可用、免费使用且可自行管理的 MongoDB 版本
注意
MongoDB Atlas不支持此命令。请参阅修改Atlas分片集群以在Atlas 集群中添加或删除分片。
语法
sh.shardDrainingStatus( <shardId> )
参数
Parameter | 类型 | 说明 |
|---|---|---|
| 字符串 | 可选。要报告的排干分片的名称。如果省略,该方法将报告所有排干分片的情况。 |
输出字段
有关输出字段,请参阅 shardDrainingStatus 命令。
行为
访问要求
如果已启用authorization ,则必须具有clusterManager角色或任何包含removeShard操作的角色。
数据库迁移要求
分片集群中的每个数据库都有一个主分片。如果您要排空的分片也是集群数据库之一的主节点 (primary node in the replica set),则在迁移分片的所有数据后,您必须手动将数据库移动到新分片。有关更多信息,请参阅 movePrimary 命令和 从分片集群中删除分片。
集合迁移要求
未分片集合存储在单个分片上。如果其中一个集合位于要删除的分片上,则必须先将该集合迁移到其他分片。
要迁移未分片集合,请参阅 moveCollection 命令。
例子
以下示例返回 shard04分片的排干状态:
sh.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") } } }