背景
最近为了在公司很久前配发的8G内存MacBook Pro上少开几个软件,我选择了idea提供的Database Client和Http Client,然而因为自己的不够细心加上对idea提供的Database Client不够熟悉,导致了误删了某张表的全部数据。
万幸不影响用户使用……
在这里复盘一下Mysql误删数据后的恢复
SQL命令
-- input |
mysqlbinlog的使用
1、在datadir下找到对应删除数据时间段的数据日志文件 |
得到结果如图所示:
语句转换
DELETE语句转成Insert语句
使用Linux命令
cat mysqllog.sql | sed -n '/###/p' | sed 's/### //g;s/\/\*.*/,/g;s/DELETE FROM/;INSERT INTO/g;s/WHERE/SELECT/g;' |sed -r 's/(@17.*),/\1;/g' | sed 's/@1=//g'| sed 's/@[1-9]=/,/g' | sed 's/@[1-9][0-9]=/,/g' > mysqllogOK.sql |
得到结果如图所示:
数据恢复与一点小结
运行此sql语句即可
大批量删除数据时,可以将这些数据插入到一个新表中,确认之后再删除。