mysql误删除数据后的恢复策略

一、系统环境配置情况

系统环境: Linux 2.6.32-754.3.5.el6.x86_64

数据库环境:mysql 5.7.23
日志格式: MIXED

gtid:启用

备份策略:利用xtrabackup每天凌晨00:00自动完全备份

 

二、模拟场景

        某技术人员在上午10点不小心trancate了一个表,上午11点发现了异常需紧急恢复被删除的数据。

 

三、数据恢复思路

        因为凌晨全备后到误操作这段时间(凌晨00:00到上午10:00)以及误操作到被发现准备紧急恢复这段时间(上午10:00到上午11:00),数据库都可能发生了更新,所以必须依靠全备数据配合binlog来做数据恢复,还需要注意binlog在这两个时间段内是否发生滚动的情况。

 

四、实操(binlog文件未发生滚动的情况)

1、停止mysqld服务

service mysqld stop

 

2、利用mysqlbinlog命令将对应的binlog文件导出为sql文件

mysqlbinlog log-bin.000034 > log-bin34.sql

 

3、找出truncate语句对应的内容,并将其删除,如图:

 

4、利用当天凌晨全备的xtrabackup_info信息找到备份时对应的pso值,如图:

 

5、在上述的log-bin34.sql文件中找出end_log_pos 6044对应的位置并删除该值以及该值之前的所有语句,如图:

 

6、利用innobackupex正常恢复数据库状态到全备那一刻的所有数据

清除mysql数据目录(最好备份)

rm –rf /mysql/data/*

prepare操作:

innobackupex --apply-log --use-memory=4G /backup/2018-12-19_00-00-00/

全备恢复(恢复完后要把数据目录的所属用户和组设置回mysql):

innobackupex --datadir=/mysql/data --copy-back /backup/2018-12-19_00-00-00/

 

7、启动mysql直接执行上述处理好的sql文件即可恢复数据

service mysqld start
mysql –utest –p123456 –e 'source /log-bin34.sql'

 

 

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值