对于 AI 代理:可在 https://www.mongodb.com/zh-cn/docs/llms.txt 获取文档索引—通过在任何 URL 路径后添加 .md 可获取所有页面的 Markdown 版本。
Docs 菜单

balancerCollectionStatus(数据库命令)

balancerCollectionStatus

返回一个文档,其中包含有关分片collection的数据块是否平衡的信息(即 不需要移动),或者由于排干、区域违规或数据块不平衡而需要移动。

You can only issue the balancerCollectionStatus against the admin database.

提示

In mongosh, this command can also be run through the sh.balancerCollectionStatus() helper method.

Helper methods are convenient for mongosh users, but they may not return the same level of information as database commands. In cases where the convenience is not needed or the additional return fields are required, use the database command.

此命令可用于以下环境中托管的部署:

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

该命令具有以下语法:

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

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

mongosh provides a wrapper method 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" : Long(0)
}
}
}
字段
说明

"chunkSize"

5.3版本新增。

一个整数,表示数据块大小(以 MB 为单位)。

"balancerCompliant"

一个布尔值,表示数据块是不需要移动 ( true ) 还是需要移动 ( false )。

"firstComplianceViolation"

一个字符串,表示需要移动此命名空间的数据块的原因。该字段仅当"balancerCompliant"false时才可用。

可能的值为:

"chunksImbalance"
拥有最多集合数据段的分片与拥有最少集合数据段的分片之间的数据段数量差值超过迁移阈值。
"defragmentingChunks"
查询的命名空间当前正在进行数据块碎片整理过程。碎片整理可以由configureCollectionBalancing命令触发。
"draining"
删除分分片操作正在进行中, MongoDB必须将已删除分片中的数据段分片到其他分片。
"zoneViolation"
数据块违反了为分片定义的区域范围

此字段仅返回 MongoDB 观察到的第一次违规的信息。 由于与firstComplianceViolation中报告的原因不同的原因,可能还有其他待处理的数据块迁移。

"details"

An object containing information on the ongoing defragmentation process. This object indicates the current phase of the defragmentation and how many chunks are left to process in that phase. For example output, see Ongoing Defragmentation Process.

仅当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" : Long(0)
}
}
}

如果查询的命名空间正在进行数据块碎片整理,则balancerCollectionStatus命令将返回类似于以下内容的输出:

{
"chunkSize": Long("128"),
"balancerCompliant": false,
"firstComplianceViolation": "defragmentingChunks",
"details": {
"currentPhase": "moveAndMergeChunks",
"progress": { "remainingChunksToProcess": 1 }
}
}

注意

数据块碎片整理分多个阶段进行。progress字段仅与当前阶段相关。

要详细了解关于: