监控分片集合的碎片整理
要监控分片集合的分片的整理,请使用 balancerCollectionStatus
命令。
您可以查看当前的碎片整理状态以及要处理的剩余数据段数量。 这会向您显示碎片整理进度。
关于此任务
碎片整理使用以下阶段来减少集合中数据段的数量并提高性能:
合并同一分片上可合并的数据段。
将较小的数据段迁移到其他分片。 小数据段是指包含的数据少于
chunkSize
设置的25 %。合并可合并的同一分片上的剩余数据段。
此任务中的过程使用名为 test
的数据库中名为 ordersShardedCollection
的示例分片集合。
在此过程中,您可以使用自己的分片集合和数据库。
在此任务的过程中,您将监控各个阶段并查看碎片整理进度。
开始之前
开始对分片集合进行碎片整理。 有关详细信息,请参阅开始对分片集合进行碎片整理。
连接到
mongos
。
步骤
检查输出文档
上一条命令返回一个文档,其中包含有关碎片整理状态、当前阶段和剩余碎片整理工作的信息。 例如:
{ "balancerCompliant": false, "firstComplianceViolation": "defragmentingChunks", "details": { "currentPhase": "moveAndMergeChunks", "progress": { "remainingChunksToProcess": 1 } } }
下表描述了文档字段。
字段 | 类型 | 说明 |
---|---|---|
balancerCompliant | 布尔 | false 是否必须移动集合数据段。 否则为true 。 |
firstComplianceViolation | 字符串 | 指示必须移动或合并命名空间数据段的原因。 仅当 balancerCompliant 为false 时才返回。 |
details | 对象 | 有关当前碎片整理状态的其他信息。 仅当 firstComplianceViolation 为defragmentingChunks 时才返回。 |
currentPhase | 字符串 | 当前碎片整理阶段:
|
remainingChunksToProcess | 整型 | 当前阶段要处理的剩余数据段的数量。 |
有关返回的文档字段的更多信息,请参阅负载均衡器集合状态输出文档。
确认碎片整理已完成
碎片整理完成后,该命令将返回以下任一项:
balancerCompliant: true
如果您的集合是平衡的。balancerCompliant: false
如果您的collection不均衡,则将firstComplianceViolation
设置为defragmentingChunks
以外的字符串。
碎片整理完成后平衡集合的输出示例:
{ chunkSize: 0.2, balancerCompliant: true, ok: 1, '$clusterTime': { clusterTime: Timestamp({ t: 1677543079, i: 1 }), signature: { hash: Binary(Buffer.from("0000000000000000000000000000000000000000", "hex"), 0), keyId: Long("0") } }, operationTime: Timestamp({ t: 1677543079, i: 1 }) }
后续步骤
如果碎片整理尚未完成,您可以停止它。 有关详细信息,请参阅停止对分片集合进行碎片整理。
了解详情
要查看负载均衡器集合状态输出文档,请参阅负载均衡器集合状态输出文档
打印分片状态,请参阅
db.printShardingStatus()
检索分片状态详细信息,请参阅
sh.status()
要查看分片状态集合字段,请参阅分片集合
要查看活跃的 mongos 实例,请参阅活跃的
mongos
实例使用 MongoDB Atlas 监控分片,请参阅查看分片集群