balancerCollectionStatus
定义
balancerCollectionStatus
返回一个文档,包含有关分片集合的块是否平衡(即不需要移动)的信息,这些信息是在执行命令时获取的,或者由于碎片清理、区域违规或跨碎片块的不平衡而需要移动。
您只能对
admin
数据库发出balancerCollectionStatus
命令。提示
在
mongosh
中,此命令也可以通过sh.balancerCollectionStatus()
辅助方法运行.辅助方法方便
mongosh
用户,但它们可能不会返回与数据库命令相同级别的信息。在不需要便利性或需要额外的返回字段的情况下,请使用数据库命令。
兼容性
此命令在以下环境中的部署中可用
MongoDB Atlas:云中MongoDB部署的全托管服务
重要
此命令不支持在无服务器实例上。更多信息,请参阅不受支持的命令。
MongoDB Enterprise:基于订阅的、自行管理的MongoDB版本
MongoDB Community:源代码可用的、免费使用和自行管理的MongoDB版本
语法
该命令具有以下语法
db.adminCommand( { balancerCollectionStatus: "<db>.<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. 一个整数,表示以兆字节为单位的块大小。 |
"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
字段仅与当前阶段相关。
了解更多关于
监控碎片整理,请参阅 监控分片集合的碎片整理。
整理分片集合,请参阅 整理分片集合。