MySQL 误删数据恢复

本文详细介绍了在MySQL中误删除数据后的恢复方法。首先,通过检查`log_bin`状态确认是否开启了二进制日志,然后找到数据存放的日志目录。利用`mysqlbinlog`工具结合指定时间范围恢复SQL语句,并将DELETE语句转换为INSERT语句,生成恢复文件。最终通过执行生成的SQL脚本来恢复数据。关键操作包括:时间范围的选择、binlog文件定位和SQL语句转换。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

关于MySQL误删除之后的恢复方式:

在Navicat或者其他可执行的地方,执行

show variables like '%log_bin%';

若log_bin处于ON状态,继续执行如下命令:(如果处于关闭状态,那就提前拜拜吧)

show variables like '%datadir%';

查看日志存放在哪个目录下。

cd到这个目录下,执行

mysqlbinlog -u数据库用户名 -p数据库密码 --base64-output=decode-rows --start-datetime="2022-06-22 06:30:00" --stop-datetime="2022-06-22 07:00:00" --read-from-remote-server -vv  binlog.000010 | sed -n '/### DELETE FROM `数据库名`/, /COMMIT/p' > /var/lib/mysql/mydata.sql;

特别说明:
  start-datetime和stop-datetime分别表示要恢复的时间段,比如,数据是在2022年6月22日下午删除的,但不知道具体时间,只知道大约在早上6点30至7点左右。     binlog.xxxxxx可能有多个,查找到最相近的那个binlog即可。

此时,在/var/lib/mysql下已经生成一个row.sql的文件。接下来执行如下命令:

cat row.sql | sed -n '/###/p' | sed 's/### //g;s/\/\*.*/,/g;s/DELETE FROM/INSERT INTO/g;s/WHERE/SELECT/g;' | sed 's/@[1-9]=//g' | sed 's/@[1-6][0-9]=//g' > rollback.sql;

此命令是将原文件的DELETE语句改为INSERT,rollback.sql就是最后要执行的恢复文件(要注意,每条INSERT语句应该有个分号,大家自己批量替换一下即可)

以上内容,部分命令参考了:Mysql数据库误删除数据恢复方案_深夜面包的博客-优快云博客_mysql误删除数据恢复

我是来自北京天码科技的卢泽

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值