天天看点

mysql数据库,binlog数据恢复

作者:评评无奇打工人

mysql的二进制日志binlog记录了所有的DDL和DML语句,以事件形式记录,还包括语句执行所消耗的时间,mysql的二进制日志是事务安全型的。

测试环境

mysql数据库版本5.7,免安装版,测试mysql binlog数据恢复功能。

查看数据库是否开启binlog日志

登录mysql

执行

show variables like '%log_bin%';

mysql数据库,binlog数据恢复

ON:标识开启日志

开启binlog日志的

修改my.cnf配置文件

log-bin=mysql-bin

server_id=1

#设置日志格式

binlog_format=ROW

查看binlog日志列表

show master logs;

mysql数据库,binlog数据恢复

查询日志事件

show binlog events in 'mysql-bin.000001';

mysql数据库,binlog数据恢复

重置所有的binlog日志

reset master;

binlog转化为文本文件

mysqlbinlog --base64-output=decode-rows -v E:\mysql-5.7.32-winx64\data\mysql-bin.000001 > e:\1.log

数据恢复

先新增数据:

insert into

再删除数据

delete from

然后查看日志事件,找到新增事件的结束位置,stop-position对应了结束位置

mysql数据库,binlog数据恢复

mysqlbinlog --stop-position=524 --database=test E:\mysql-5.7.32-winx64\data\mysql-bin.000002 | mysql -uroot –p

重新查看数据库,删除的数据已恢复到删除前。

注意:

如果insert时,未开启binlog日志,那么delete该数据后,无法使用binlog恢复该数据。(一开始还以为能恢复,结果测试的时候一直提示ERROR 1032 (HY000) at line 17: Can't find record in 'tablexxx')

继续阅读