监控分片集合的解碎片化
要监控分片集合的解碎片化,请使用balancerCollectionStatus
命令。
您可以看到当前的解碎片化状态和剩余待处理的碎片数。这显示了解碎片化的进度。
关于此任务
解碎片化使用以下阶段来减少集合中的碎片数量并提高性能
合并同一分片上可以合并的碎片。
将较小的碎片迁移到其他分片。较小的碎片是指包含的数据少于25%的
chunkSize
设置。合并同一分片上剩余的可合并碎片。
此任务中的步骤使用了一个名为 ordersShardedCollection
的示例分片集合,该集合位于名为 test
的数据库中。
您可以在步骤中使用自己的分片集合和数据库。
在此任务的步骤中,您将监控阶段并查看解碎片化的进度。
开始之前
开始对分片集合进行碎片整理。有关详细信息,请参阅开始对分片集合进行碎片整理。
连接到
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
,且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 监控分片,请参阅审查分片集群