集群有显示有不健康的副本。 SHOW PROC '/cluster_health/tablet_health'

Viewed 53

背景

命令

 SHOW PROC '/cluster_health/tablet_health'

如下图示:
image.png
显示集群中存在不健康的数据副本。

查看某个库的情况

-- 查看DbId为11490的数据库的异常副本。
 SHOW PROC '/cluster_health/tablet_health/11490'

结果

如下图示:
image.png
【ReplicaMissingTablets】【ReplicaMissingForTagTablets】【OversizeTablets】这三个字段列举了有若干个tabletId。

ReplicaMissingTablets: 5个。
ReplicaMissingForTagTablets: 213个。
OversizeTablets: 2250个。


【ReplicaMissingTablets】的情况

命令

 SHOW TABLET 16375869;

结果

image.png
定位到tablet所在的库和表。

tablet块详情

SHOW PROC '/dbs/11490/9149487/partitions/16375868/9149488/16375869';

结果

image.png
可知有两个副本块, 所以我大概理解了【ReplicaMissingTablets】是什么意思, 表设置是3副本,实际这些tablet块是两个副本, 就是副本缺失。

意料之外

select * from ads_ths_ip_orgcode_detail

这个表是没有数据的, 没有数据怎么还会有【缺失副本】的情况,而且Doris还没有自动修复这【副本缺失】的状态。


【ReplicaMissingForTagTablets】的情况。

命令

 SHOW TABLET 25345933;

结果

image.png
定位到tablet块所在的表。

TABLET块详情

SHOW PROC '/dbs/11490/9149487/partitions/16375868/9149488/16375869';

结果

image.png
发现确实为3个副本, 但分布的服务器分组group tag和表定义ddl不符。 因此,【ReplicaMissingForTagTablets】大概是在一个group tab内副本不符合要求。

同样的意料之外

查询对应的表

select * from ads_ths_ip_orgcodecount_agg

发现表是空的。 同样的问题, 空的表怎么会有不健康的数据块?


【OversizeTablets】的情况

通过show 查看发现【OversizeTablets】没有什么异常的地方。


(TabletNum 63521)-(HealthyNum 63303)

(ReplicaMissingTablets 5) + (ReplicaMissingForTagTablets 213)
= 218

即【OversizeTablets】列举的tablet块没有算到【不健康tablet】。
只需要了解【OversizeTablets】的具体含义即可


最终总结

1: 表数据为空的情况下, 为什么会出现【ReplicaMissingTablets】【ReplicaMissingForTagTablets】异常的tablet块。
2: 【ReplicaMissingTablets】【ReplicaMissingForTagTablets】【OversizeTablets】具体含义要明确下。
3: 该文档基本做到了如何找出异常的tablets和对应的库表。 但目前需要可以修复的命令。 单个tablet块修复的命令需要有, 因磁盘损坏造成的大批量的tablet损坏也需要有命令。
4: tablet管理是否系统内置的传统型关系型数据表来管理。这样可以用普通的sql实现归因分析,比如损坏的tablet块是否集中在某块盘上。 类似于审计日志,查询这张表和普通的业务表一样。

0 Answers