Docs 菜单
Docs 主页
/
MongoDB Manual
/ / /

balancerCollectionStatus

在此页面上

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

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

您只能对admin数据库发出 balancerCollectionStatus

提示

mongosh中,该命令也运行通过 sh.balancerCollectionStatus()辅助方法运行。

辅助方法对 mongosh 用户来说很方便,但它们返回的信息级别可能与数据库命令不同。如果不追求方便或需要额外的返回字段,请使用数据库命令。

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

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

重要

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

该命令具有以下语法:

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

指定分片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 版本中的新增功能

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

"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字段仅与当前阶段相关。

后退

addShardToZone