balancerCollectionStatus
定义
balancerCollectionStatus
返回一个文档,其中包含有关分片collection的数据块是否平衡的信息(即 不需要移动),或者由于排干、区域违规或数据块不平衡而需要移动。
您只能对
admin
数据库发出balancerCollectionStatus
。提示
在
mongosh
中,该命令也可以通过sh.balancerCollectionStatus()
辅助方法运行。辅助方法对
mongosh
用户来说很方便,但它们返回的信息级别可能与数据库命令不同。如果不追求方便或需要额外的返回字段,请使用数据库命令。该命令采用以下形式:
db.adminCommand( { balancerCollectionStatus: "<db>.<collection>" } ) 指定分片集合的完整命名空间(“<db>.<collection>”)。
访问控制
使用访问控制运行时,用户必须对enableSharding
数据库和/或集合 具有 操作权限才能运行命令。也就是说,用户必须具有授予以下 权限 的 角色 :
{ resource: { db: <database>, collection: <collection> }, actions: [ "enableSharding" ] }
内置 clusterManager
角色提供了相应的特权。
输出文档
以下是该命令返回的文档示例:
{ "balancerCompliant" : false, "firstComplianceViolation" : "chunksImbalance", "ok" : 1, "operationTime" : Timestamp(1583192967, 16), "$clusterTime" : { "clusterTime" : Timestamp(1583192967, 16), "signature" : { "hash" : BinData(0,"AAAAAAAAAAAAAAAAAAAAAAAAAAA="), "keyId" : NumberLong(0) } } }
字段 | 说明 | ||||||||
---|---|---|---|---|---|---|---|---|---|
"balancerCompliant" | 一个布尔值,表示数据块是不需要移动 ( true ) 还是需要移动 ( false )。 | ||||||||
"firstComplianceViolation" | 一个字符串,表示需要移动此命名空间的数据块的原因。该字段仅当 可能的值为:
|
除了特定于命令的返回字段之外,该命令还返回操作的ok
状态字段、 operationTime
字段和$clusterTime
字段。 有关这些字段的详细信息,请参阅响应。
例子
要检查分片集合test.contacts
的数据段当前是否均衡,请连接到mongos
实例并发出以下命令:
db.adminCommand( { balancerCollectionStatus: "test.contacts" } )
如果不需要移动集合的数据段,该命令将返回类似于以下内容的输出:
{ "balancerCompliant" : true, "ok" : 1, "operationTime" : Timestamp(1583193238, 1), "$clusterTime" : { "clusterTime" : Timestamp(1583193238, 1), "signature" : { "hash" : BinData(0,"AAAAAAAAAAAAAAAAAAAAAAAAAAA="), "keyId" : NumberLong(0) } } }