文档菜单
文档首页
/
MongoDB 手册
/ / /

balancerCollectionStatus

本页内容

  • 定义
  • 兼容性
  • 语法
  • 访问控制
  • 输出文档
  • 示例
balancerCollectionStatus

返回一个文档,包含有关分片集合的块是否平衡(即不需要移动)的信息,这些信息是在执行命令时获取的,或者由于碎片清理、区域违规或跨碎片块的不平衡而需要移动。

您只能对admin数据库发出balancerCollectionStatus命令。

提示

mongosh中,此命令也可以通过sh.balancerCollectionStatus()辅助方法运行.

辅助方法方便mongosh用户,但它们可能不会返回与数据库命令相同级别的信息。在不需要便利性或需要额外的返回字段的情况下,请使用数据库命令。

此命令在以下环境中的部署中可用

  • MongoDB Atlas:云中MongoDB部署的全托管服务

重要

此命令不支持在无服务器实例上。更多信息,请参阅不受支持的命令。

该命令具有以下语法

db.adminCommand(
{
balancerCollectionStatus: "<db>.<collection>"
}
)

指定分片集合的完整命名空间("<db>.<collection>")。

mongosh提供包装方法sh.balancerCollectionStatus()

当启用访问控制时,用户必须在数据库和/或集合上具有 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"

一个字符串,表示为什么需要移动此命名空间下的块。如果 "balancerCompliant"false,则字段可用。

可能的值包括

"chunksImbalance"
具有最多块的分区和具有最少块的分区之间块数量的差异超过了 迁移阈值
"defragmentingChunks"
查询的命名空间目前正在经历块碎片化过程。可以通过 configureCollectionBalancing 命令触发碎片化。
"draining"
正在进行移除分片操作,MongoDB必须将移除的分片上的数据块迁移到其他分片。
"zoneViolation"
数据块违反了分片定义的区域范围

此字段仅返回MongoDB观察到的第一个违规信息。可能存在由于不同于在firstComplianceViolation中报告的原因而导致的其他挂起的块迁移。

"details"

一个包含正在进行去碎片化过程信息的对象。此对象指示去碎片化的当前阶段以及该阶段中还需要处理多少个块。例如,输出结果,请参阅正在进行去碎片化过程。

仅在firstComplianceViolationdefragmentingChunks时返回此字段。

除了特定于命令的返回字段外,命令还返回操作对应的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 字段仅与当前阶段相关。

了解更多关于

返回

analyzeShardKey