balancerCollectionStatus
定义
balancerCollectionStatus
返回一个文档,其中包含有关分片collection的数据块是否平衡的信息(即 不需要移动),或者由于排干、区域违规或数据块不平衡而需要移动。
您只能对
admin
数据库发出balancerCollectionStatus
。提示
在
mongosh
中,该命令也运行通过sh.balancerCollectionStatus()
辅助方法运行。辅助方法对
mongosh
用户来说很方便,但它们返回的信息级别可能与数据库命令不同。如果不追求方便或需要额外的返回字段,请使用数据库命令。
兼容性
此命令可用于以下环境中托管的部署:
MongoDB Atlas:用于云中 MongoDB 部署的完全托管服务
重要
无服务器实例不支持此命令。 有关更多信息,请参阅不支持的命令。
MongoDB Enterprise:基于订阅、自我管理的 MongoDB 版本
MongoDB Community:源代码可用、免费使用且可自行管理的 MongoDB 版本
语法
该命令具有以下语法:
db.adminCommand( { balancerCollectionStatus: "<db>.<collection>" } )
指定分片collection的完整命名空间 ( "<db>.<collection>"
)。
访问控制
使用访问控制运行时,用户必须对enableSharding
数据库和/或集合 具有 操作权限才能运行命令。也就是说,用户必须具有授予以下 权限 的 角色 :
{ resource: { db: <database>, collection: <collection> }, actions: [ "enableSharding" ] }
内置 clusterManager
角色提供了相应的特权。
输出文档
以下是该命令返回的文档示例:
{ "chunkSize": Long("128"), "balancerCompliant" : false, "firstComplianceViolation" : "chunksImbalance", "ok" : 1, "operationTime" : Timestamp(1583192967, 16), "$clusterTime" : { "clusterTime" : Timestamp(1583192967, 16), "signature" : { "hash" : BinData(0,"AAAAAAAAAAAAAAAAAAAAAAAAAAA="), "keyId" : NumberLong(0) } } }
字段 | 说明 |
---|---|
"chunkSize" | 5.3 版本中的新增功能。 一个整数,表示数据块大小(以 MB 为单位)。 |
"balancerCompliant" | 一个布尔值,表示数据块是不需要移动 ( true ) 还是需要移动 ( false )。 |
"firstComplianceViolation" | 一个字符串,表示需要移动此命名空间的数据块的原因。该字段仅当 可能的值为:
此字段仅返回 MongoDB 观察到的第一次违规的信息。 由于与 |
"details" | 包含有关正在进行的碎片整理过程的信息的对象。 该对象指示碎片整理的当前阶段以及该阶段还有多少数据段有待处理。 有关输出示例,请参阅正在进行的碎片整理过程。 仅当 |
除了特定于命令的返回字段之外,该命令还返回操作的ok
状态字段、 operationTime
字段和$clusterTime
字段。 有关这些字段的详细信息,请参阅响应。
示例
要检查分片集合test.contacts
的数据段当前是否均衡,请连接到mongos
实例并发出以下命令:
db.adminCommand( { balancerCollectionStatus: "test.contacts" } )
如果不需要移动集合的数据段,该命令将返回类似于以下内容的输出:
{ "chunkSize": Long("128"), "balancerCompliant" : true, "ok" : 1, "operationTime" : Timestamp(1583193238, 1), "$clusterTime" : { "clusterTime" : Timestamp(1583193238, 1), "signature" : { "hash" : BinData(0,"AAAAAAAAAAAAAAAAAAAAAAAAAAA="), "keyId" : NumberLong(0) } } }
正在进行的碎片整理过程
如果查询的命名空间正在进行数据块碎片整理,则balancerCollectionStatus
命令将返回类似于以下内容的输出:
{ "chunkSize": Long("128"), "balancerCompliant": false, "firstComplianceViolation": "defragmentingChunks", "details": { "currentPhase": "moveAndMergeChunks", "progress": { "remainingChunksToProcess": 1 } } }
注意
数据块碎片整理分多个阶段进行。progress
字段仅与当前阶段相关。