ERROR 1105 (HY000): other error for mpp stream: Code: 0, e.displayText() = DB::TiFlashException: Table doesn’t exist, keyspace=4294967295 table_id=24461, e.what() = DB::TiFlashException,
去执行一条SQL,SELECT /*+ read_from_storage(tiflash[x.x]) */ DISTINCT x FROM x
但是报错了,走tikv 就没问题,有3个tiflash 实例,这个表有2个tiflash 副本,目前的方案是把这个tiflash 副本设置0,然后再设置为2,但是这个表很重要,设置为0,走tikv 那边是全表扫描,怕扛不住,大佬们有更好的办法吗,好像没办法指定一个表去某个对应的tiflash 实例
还是得解决报错问题。
- 在遇到报错时先查看 tiflash 状态是否正常
- 再查看副本是否可用,AVAILABLE 字段是否为 1
SELECT * FROM information_schema.tiflash_replica WHERE TABLE_SCHEMA = ‘<db_name>’ and TABLE_NAME = ‘<table_name>’;
若有异常可以提供下 tiflash 相关日志再进一步分析
tiflash 状态完全正常
tiflash 副本也正常
执行如下命令试试:ALTER TABLE your_db.your_table SET TIFLASH REPLICA 2;
可不可以使用label 标签,指定placement rule,指定tiflash的副本在指定的另外的实例上。
这个太麻烦了,还要重启tiflash吧,直接重置tiflash 副本数
TiFlash 元数据不一致问题
元数据有差异的问题吗
这个错误是 TiFlash 节点上的表元数据 / 数据文件丢失 / 损坏
没遇到过这种问题,解决了分享下方法
这个命令 ALTER TABLE ... SET TIFLASH REPLICA 修复元数据或下线坏节点,看行不行
是啊,现在解决了吗?
你是什么版本。有可能有bug。记着类似问题。6.5.3报错, 升级6.5.8 就可以了。
8.5.3,你还记得是BUG 编号吗
会不会tidb内存泄露?
TiKV 和 TiFlash 本身就是两种引擎,如果需要在 TiDB完成数据聚合没问题,但是只能选某个引擎完成所需的数据获取。
最好的办法,就是打宽,放 tiflash ,而不是做 Join
是版本原因吗
最终是版本bug吗
若副本元数据损坏但 TiKV 数据完好,无需重置,直接 ALTER TABLE ... SET TIFLASH REPLICA 0; 后等待副本元数据清理(几秒),再 SET TIFLASH REPLICA N 重新创建,此过程由 PD 调度,比设0再设N中间穿插业务压力更可控