windows恢复下误删MySQL的数据

1、遇到问题

最近在本地开发的时候,一不小心把一个数据表当成废弃表给删掉了,其中有很多比较重要的数据,懊恼的同时想到我开启了binlog日志,依稀记得可以根据这个可以恢复数据,于是开始一顿搜索资料…

2、解决问题

(1)首先确认是否开启binlog,如果开启了就可以此恢复删除的数据

	show VARIABLES like '%log_bin%';

结果如下图所示:
在这里插入图片描述
可以看到log_bin对应的那行为ON,表示已经开启日志记录(日志怎么开启不再赘述)

(2)查看日志,找到删除数据的记录

上图的log_bin_basename对应的地址就是记录日志的位置,我本机的位置是D:\program\mysql\mysql-8.0.17-winx64\data,
在这里插入图片描述
这里有记录所有操作数据库的日志文件,但是这些都是二进制文件,普通文本编辑器是没法查看的,索性MySQL自带查看工具


一、查看最早binlog的日志:
show binlog events;

二、查看指定的binlog日志:
show binlog events in 'binlog.000047';

三、指定查看 binlog.000047 这个文件,从pos点:20开始查起:        
show binlog events in 'binlog.000047' from 20;      

四、指定查看 binlog.000047 这个文件,从pos点:20开始查起,查询10条        
show binlog events in 'binlog.000047' from 20 limit 10;      

五、指定查看 binlog.000047 这个文件,从pos点:20开始查起,偏移5行,查询10条        
show binlog events in 'binlog.000047' from 20 limit 5,10;

在sql后面加上“\G”,不会显示详情,便于查找操作的节点,每一小块都是一个操作,server_id 记录是在哪台机器上操作的,
event_type 记录操作类型,如下图:
在这里插入图片描述
由于写这篇文章的时候,已经放弃处理那部分日志以及恢复那部分数据了(主要没有设置单个日志大小,导致日志文件太大,已经达到GB级别,普通文本编辑器已经打不开了,chrome浏览器异步加载文件比较好,可以查看一部分信息,但最终会崩溃,可能是内存问题没有继续深入,想到过文件分割,但没有尝试),这里仅模拟当时的操作

(3)日志导出sql

到日志所在的位置,执行以下命令,成功导出到d盘

mysqlbinlog --nodefaults binlog.000048 > d:/my.sql 

在这里插入图片描述
在这里插入图片描述

注意查看下大小,如果命令报错也可能生成空脚本

(4)恢复数据

新开一个cmd窗口,然后执行以下命令

mysql -uroot -p -v plist < my.sql // plist是数据库名,需要和脚本中操作的数据库名一致

至此,成功恢复数据。

发布了11 篇原创文章 · 获赞 2 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/SGdan_qi/article/details/100552520
今日推荐