sh.balancerCollectionStatus()
定义
sh.balancerCollectionStatus(namespace)
返回一个文档,其中包含有关分片collection的数据块是否平衡的信息(即 不需要移动),或者由于排干、区域违规或数据块不平衡而需要移动。
重要
mongosh 方法
本页面提供
mongosh
方法的相关信息。这不是数据库命令或特定语言驱动程序(例如 Node.js)的相关文档。有关数据库命令,请参阅
balancerCollectionStatus
命令。如需了解 MongoDB API 驱动程序,请参阅特定语言的 MongoDB 驱动程序文档。
兼容性
此方法可用于以下环境中托管的部署:
MongoDB Atlas:用于云中 MongoDB 部署的完全托管服务
重要
M 0 、M 2和 M 5集群不支持此命令。 有关更多信息,请参阅不支持的命令。
MongoDB Enterprise:基于订阅、自我管理的 MongoDB 版本
MongoDB Community:源代码可用、免费使用且可自行管理的 MongoDB 版本
语法
sh.balancerCollectionStatus()
具有以下形式:
sh.balancerCollectionStatus( <namespace> )
Parameter
sh.balancerCollectionStatus()
方法采用以下参数:
访问控制
使用访问控制运行时,用户必须对enableSharding
数据库和/或collection 具有 操作权限才能运行该方法。也就是说,用户必须具有授予以下 权限 的 角色 :
{ resource: { db: <database>, collection: <collection> }, actions: [ "enableSharding" ] }
内置 clusterManager
角色提供了相应的特权。
示例
要检查分片集合test.contacts
的数据段当前是否均衡,请连接到mongos
实例并发出以下命令:
sh.balancerCollectionStatus("test.contacts")
如果不需要移动collection的数据块,该方法将返回类似于以下内容的输出:
{ "balancerCompliant" : true, "ok" : 1, "operationTime" : Timestamp(1583193238, 1), "$clusterTime" : { "clusterTime" : Timestamp(1583193238, 1), "signature" : { "hash" : BinData(0,"AAAAAAAAAAAAAAAAAAAAAAAAAAA="), "keyId" : NumberLong(0) } } }
正在进行的碎片整理过程
如果所查询的命名空间正在进行数据段碎片整理,则sh.balancerCollectionStatus
方法将返回类似于以下内容的输出:
{ "chunkSize": Long("128"), "balancerCompliant": false, "firstComplianceViolation": "defragmentingChunks", "details": { "currentPhase": "moveAndMergeChunks", "progress": { "remainingChunksToProcess": 1 } } }
注意
数据块碎片整理分多个阶段进行。progress
字段仅与当前阶段相关。
有关输出的说明,请参阅balancerCollectionStatus 输出。