一、场景
二、解决方法
在 TiDB 4.0 中,引入了 FLASHBACK TABLE 语法,其功能是在 Garbage Collection (GC) life time 时间内,可以用 FLASHBACK TABLE 语句来恢复被 DROP 或 TRUNCATE 删除的表以及数据。
可以使用系统变量 tidb_gc_life_time 配置数据的历史版本的保留时间(默认值是 10m0s)。可以使用以下 SQL 语句查询当前的 safePoint,即 GC 已经清理到的时间点
SELECT * FROM mysql.tidb WHERE variable_name = 'tikv_gc_safe_point';
tidb_gc_life_time表示数据的历史版本保留时间(默认为10分钟)
show VARIABLES like 'tidb_gc_life_time'
配置自动清理时间
SET GLOBAL tidb_gc_life_time="20m";
特别注意
恢复被 TRUNCATE 的表数据,由于被 TRUNCATE 的表还存在,所以需要重命名被恢复的表,否则会报错表 t 已存在
恢复命令
TRUNCATE TABLE t; FLASHBACK TABLE t TO t1;