关于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误删除数据恢复
我是来自北京天码科技的卢泽