前提:使用TiUP升级tidb3.1->4.0GA 报错内容:TiFlash重启超时
排查过程: (1)登录TiFlash所在服务器,查看tiflash_error.log日志中的报错信息: 2020.06.02 10:00:15.084960 [ 1 ] Application: DB::Exception: Path “/data/deploy/tiflash/data/db//data/sdkrec2_report/sdk_user_report_day/” is missing.
(2)然后在metadata目录找sdk_user_report_day的表在哪个文件? grep -r ‘sdk_user_report_day’ /data/deploy/tiflash/data/db/metadata/sdkrec2_report/media_report_day.sql 查看该文件发现表结构中的表名是media_report_day,而sql文件中有关表名的信息中还有之前sdk_user_report_day表名的信息。
(3)备份+修改/data/deploy/tiflash/data/db/metadata/sdkrec2_report/media_report_day.sql文件。 原文件一定要mv到metadata目录外。
(4) 将sql文件中:{“L”:“sdk_user_report_day”,“O”:“sdk_user_report_day”}这个表名部分修改为: media_report_day
(5) 修改完毕后重新再次升级4.0即可
问题原因:表名由sdk_user_report_day修改为media_report_day,修改后tiflash的meta没有及时更新导致tiflash一直重启一直失败。 所有表的schema都会同步到tiflash的,tiflash应该有一份较新的schema。这个问题是sql文件里面 schema 的表名没更新,从3.1.0或4.0.0升级时,有个升级逻辑需要根据schema信息来进行升级操作。