【TiDB 使用环境】生产环境
【TiDB 版本】4.0.13
做了什么操作:该集群已经稳定运行了近两年,近一个月除了调整过tiflash内存,再无任何运维操作。
最近一个多月,业务反馈有个表通过tiflash读取会报【tiflash server timeout】,查询SQL如下
select * from db.table where (request_time >= '2025-03-24' and request_time < DATE_ADD('2025-03-24', INTERVAL 1 DAY));));
这个结果集大概300w,表总大小大概7000万,经过测试如果把这个结果集缩到10000以内就能从tiflash查出结果(10000以上没试过)。
业务反馈,昨天的这个查询没问题,今天0点开始有问题。
该集群总共有38张表配置了tiflash,目前就这个表有这个问题(这个表也不是最大的),而且这个问题这次已经发生第二次了,上次发生在半个月前,上次采取的解决方案是在tiflash重建表,待重建完了业务的这类查询就恢复正常了。
查看了该时间段的tiflash日志没发现error级别的日志,监控上也没有明显异常的项。
现在想定位一下这个问题的诱因,以及是否有规避方案。
本次也是通过重建表后,业务的这类查询恢复正常。
mysql> ALTER TABLE db.table SET TIFLASH REPLICA 0;
Query OK, 0 rows affected (0.59 sec)
mysql> select sleep(1800);ALTER TABLE db.table SET TIFLASH REPLICA 2;