前言

测试过程中删除了张表,虽然不重要,但突发奇想能否恢复,然后就有了这篇文章,使用binlog恢复数据。

binlog中的事件(show binlog events)数据恢复就会使用到该命令

1
2
3
4
5
查看所有的事件
show binlog events;

当binlog文件比较多的时候可以加条件来查看具体的某一个文件中的所有事件
show binlog events in 'binlog.000001';

binlog命令恢复

llk9uomn.png
主要配置几个参数--start-position:建表起始pos,--stop-position:执行删除操作之前的pos,还有就是注意binlog.000001这个路径和文件名修改对应的即可。

1
mysqlbinlog --start-position=157 --stop-position=175990065 D:\mysql-8.0.33-winx64\mysql-8.0.33-winx64\data\binlog.000001 | mysql -u root -p

然后输入密码回车等待就行。

异常处理

可能会出现报编码错误的问题
unknown variable ‘default-character-set=utf8mb4’

打开mysql安装目录下的my.ini配置文件。

1
2
# 服务端默认编码
character_set_server = utf8mb4

只保留这个配置即可,其他的比如default-character-set=utf8mb4,这些都删除,然后重启mysql即可。

windows下按 Win+R,然后输入services.msc,然后找到运行中的mysql右键重启即可。

详细参考可看