【详述】Bad page: checksum mismatch、too many version
【业务影响】
【StarRocks版本】例如:2.1.12
【集群规模】例如:3fe+12be
【机器信息】例如:32C/128G/万兆
【背景】:数仓定时任务偶尔会出现如下报错:
mysql> insert into tmp_transfer select * from transfer;
ERROR 1064 (HY000): Bad page: checksum mismatch (actual=243080401 vs expect=12)
今天上午多个表的写入程序报错: Too many version
BE的配置已经修改为如下:
#compaction
cumulative_compaction_num_threads_per_disk = 16
cumulative_compaction_check_interval_seconds = 2
cumulative_compaction_write_mbytes_per_sec=500
base_compaction_num_threads_per_disk = 8
base_compaction_check_interval_seconds = 30
base_compaction_write_mbytes_per_sec=50
compaction_mem_limit = 10737418240
push_write_mbytes_per_sec=30
查看源表 transfer 的partition 发现version 一直没有减少:
于是手动将数据导入临时表中再将表 swap,手动使用insert into tmp select * from prod 时,出现报错:ERROR 1064 (HY000): Bad page: checksum mismatch (actual=243080401 vs expect=12)
多尝试几次后插入成功。
成功替换表后 数据写入正常。版本变为2:
【背景】:几张大表模型:unixque key 单表大概5T。五张类似的大表。导入频率目前都在5-10s 一次。
问题:
- Bad page 这个错误具体原因是什么
- 这个导入频率再上如上compaction 的参数 依旧会报错 toomany version。 有优化方案吗