前言:生产上对于误操作想要把某张表恢复到指定时间点的数据
一、使用第三节点进行操作
首先确定全备以及归档日志正确性,并将全备和归档日志传到第三节点
1、关闭第三节点
cm_ctl stop -n 3
2、备份第三节点数据
mv /database/panweidb/data /database/panweidb/data.bak.date +"%Y%m%d-%H%M%S"
3、根据最近全备恢复data目录
gs_probackup restore -i xxxx -B /archive/bk/probackup --instance=panweidb -D /database/panweidb/data -j 32
4、增加恢复文件,填写如下内容
vi /database/panweidb/data/recovery.conf
recovery_target_time = ‘2025-02-19 09:43:00’
restore_command = ‘cp /archive/%f %p’
5、启动数据库
gs_ctl start -D /database/panweidb/data -M primary
6、导出数据
#编辑脚本写入导出命令
vi a.sql
copy xxx.xxx to ‘/home/omm/table.dat’;
#执行导出脚本
gsql -d xxx -p 17700 -f a.sql
7、主库创建bak表
#创建相同结构的备份表(在生产上此操作由业务处理)
#创建备份表的目的:不直接导入覆盖旧表,就是为了让业务处理两张表,即原有误操作表,和新的恢复指定时间点的表
create table bak_t(id int,XXXX);
8、导入到bak表里,
#首先将三节点导出的文件scp传到主机点
#编辑导入脚本,写入导入命令
vi b.sql
COPY xxx.xxx FROM ‘/home/omm/table.dat’;
#在主库执行脚本,将恢复指定时间点的表导入
gsql -d xxx -p 17700 -f b.sql
9、第三个节点恢复环境
gs_ctl stop -D /database/panweidb/data
rm -rf /database/panweidb/data
二、恢复集群(在业务确定业务恢复正常后才进行恢复集群动作)
1、把原来目录mv改回来
mv /database/panweidb/data /database/panweidb/data.bak.date +"%Y%m%d-%H%M%S"
cm_ctl start -n 3
2、检查数据库状态
gs_om -t status --detail




