通过 DECOMMISSION 下线 BE 节点时,为什么总会有部分 tablet 残留?
在下线过程中,通过 show backends 查看下线节点的 tabletNum,会观察到 tabletNum 数量在减少,说明数据分片正在从这个节点迁移走。当数量减到 0 时,系统会自动删除这个节点。但某些情况下,tabletNum 下降到一定数值后就不变化。这通常可能有以下两种原因:
- 这些 tablet 属于刚被删除的表、分区或物化视图。而刚被删除的对象会保留在回收站中。而下线逻辑不会处理这些分片。可以通过修改 FE 的配置参数 catalog_trash_expire_second 来修改对象在回收站中驻留的时间。当对象从回收站中被删除后,这些 tablet 就会被处理了。
- 这些 tablet 的迁移任务出现了问题。此时需要通过
show proc "/cluster_balance"
来查看具体任务的错误了。
对于以上情况,可以先通过 show proc "/cluster_health/tablet_health";
查看集群是否还有 unhealthy 的分片,如果为 0,则可以直接通过 drop backend 语句删除这个 BE。否则,还需要具体查看不健康分片的副本情况。