为了更快的定位您的问题,请提供以下信息,谢谢
【详述】问题详细描述
在生产环境中发现有部分表无法查询,可以limit number(number少于表记录数)返回部分数据,但是读全表就会报错,比如select count(*) from table_name;会返回ERROR 1064 (HY000): Build Exec OlapScanNode fail, scan info is invalid的错误。
于是我又建了一张临时表,通过下面的【背景】操作能复现上面的错误,看fe日志是对应的tablet有异常了,然后无法读取,能不能绕过这个异常的tablet,让正常的tablet数据能读取出来呢?
【背景】做过哪些操作?
1、建表(1副本为容易复现问题而设)
create table tb_test(id bigint, name string, age int) engine=olap
duplicate key(id)
distributed by hash(id) buckets 16
properties (
“compression” = “LZ4”,
“fast_schema_evolution” = “true”,
“replicated_storage” = “true”,
“replication_num” = “1”,
);
2、插入数据(一千万条)
insert into tb_test …
此时表还能正常查询。
3、通过meta_tool.sh修改元数据
找到一个tablet,通过下面命令修改:
./meta_tool.sh --operation=get_meta --root_path=/data1/starrocks/be/storage --tablet_id=2145340 > 2145340.json
修改2145340.json文件里的shard_id值,从0改为1。
停止该tablet的be,然后执行下面命令导入:
./meta_tool.sh --operation=load_meta --root_path=/data1/starrocks/be/storage --json_meta_path=2145340.json
启动be,停止be,重启fe,再使用上面的方法把shard_id的值从1改回0,最后重启fe和be。
看着数据是没有变化的,但是此时查表就会出现“Build Exec OlapScanNode fail, scan info is invalid”的报错。
show proc ‘/statistic’;命令也能看到有一个不健康的tablet。
【业务影响】影响表正常读写
【是否存算分离】否
【StarRocks版本】3.3.5
【集群规模】例如:3fe(1 follower+2observer)+3be(fe与be混部)
【机器信息】48C/64G/万兆
【联系方式】社区群13-winky,谢谢
具体的日志你们可以在你们的环境中使用上面的操作复现看一下,这样定位更方便,谢谢。