各位大佬,有个问题,在没有开启binlog和进行br备份时,执行了delete语句删除了全表,请怎么可不可以使用recover table 进行恢复?如果不行,请问怎么恢复数据?
GC未运行之前,可以通过snapshot看到之前的数据
具体怎么操作啊,大佬
FLASHBACK TABLE
其功能是在 Garbage Collection (GC) life time 时间内,可以用 FLASHBACK TABLE
语句来恢复被 DROP
或 TRUNCATE
删除的表以及数据。
FLASHBACK TABLE table_name [TO other_table_name]
https://docs.pingcap.com/zh/tidb/stable/sql-statement-flashback-table#flashback-table
1、通过系统变量 tidb_snapshot 读取历史数据
https://docs.pingcap.com/zh/tidb/stable/read-historical-data
设置一个特殊的环境变量,这个是一个 session scope 的变量,其意义为读取这个时间之前的最新的一个版本。
set @@tidb_snapshot=“2016-10-08 16:45:26”;
清空
set @@tidb_snapshot=“”;
set @@tidb_snapshot后执行select 语句就是查这个时间点的数据。
也可以用
select * from table1 as of timestamp ‘2023-07-28 10:24:00’;
但是不能使用insert into select * from 来插入闪回查询的数据,可以使用dumpling来导出指定时间的表
通过tidb_gc_life_time设置 gc时间
set global tidb_gc_life_time=48h;
SELECT * FROM mysql.tidb WHERE variable_name = ‘tikv_gc_safe_point’; 确认可查询时间范围
2、使用dumping工具导出特定时间的数据
如下 备份 dev_vegas2.game_draw 特定时间2023-07-08 10:50:45的 带where条件:
tiup dumpling -uroot -p “XXXX” -P 3390 -h 192.168.24.200 --filetype sql -t 8 -o “/tmp/dumpling” -r 200000 -F256MiB -B dev_vegas2 -T dev_vegas2.game_draw --snapshot “2023-07-28 10:50:45” --where “draw_id = 789”
Garbage Collection (GC) life time 时间内(默认10分钟),使用FLASHBACK TABLE table_name [TO other_table_name]
dumpling添加snapshot参数,可以导出指定时间段数据
这个要看gc有没有运行
这个命令随时准备好,误删数据先调life
这个怎么操作
FLASHBACK TABLE
进行恢复
此话题已在最后回复的 60 天后被自动关闭。不再允许新回复。