mysql误删除数据恢复之3 innodbackup+binlog日志解析

环境信息:

mysql  Ver 14.14 Distrib 5.6.35, for Linux (x86_64) using  EditLine wrapper

CentOS release 6.5 (Final)

binlog_format: row

tx_isolation: read-commit

步骤大体如下:

(1) 拷贝备份文件到服务器;

(2) 全量+增量恢复;

(3) 在binlog日志中找到误操作数据的位置点,并从恢复点解析binlog日志到恢复点,由于解析binlog日志时,只支持细化到库级。

解析数据库日志:

 mysqlbinlog -vv -d wifilock --start-position=236288775 mysql-bin.003874  > db_reback.sql

-d: 数据库名

--start_position: 起始位置

如果是多个日志,日志与日志之间,使用空格分开。

缺点:恢复的时间取决于你的数据量大小,如果数据量太大 ,那么时间会很长。

适用范围:所有误操作

遇到的问题:在恢复时不识别解析后的binlog日志。

mysql -u root -p -S /tmp/mysql.sock155 < /home/mysql/db_reback.sql

恢复时

日志如内容如下:

/*!50530 SET @@SESSION.PSEUDO_SLAVE_MODE=1*/;
/*!40019 SET @@session.max_insert_delayed_threads=0*/;
/*!50003 SET @OLD_COMPLETION_TYPE=@@COMPLETION_TYPE,COMPLETION_TYPE=0*/;
DELIMITER /*!*/;
# at 4
#180207  5:04:03 server id 22  end_log_pos 120 CRC32 0xe67119af         Start: binlog v 4, server v 5.6.35-log created 180207  5:04:03    #记录了日志版本信息
BINLOG '
Qxh6Wg8WAAAAdAAAAHgAAAAAAAQANS42LjM1LWxvZwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAEzgNAAgAEgAEBAQEEgAAXAAEGggAAAAICAgCAAAACgoKGRkAAa8Z
ceY=

'/*!*/;

如果把日志中的前11行,就是与日志版本相关的信息删除后,重新进行恢复,还是依然会出现如下问题

ERROR 1609 (HY000) at line 374883: The BINLOG statement of type `Table_map` was not preceded by a format description BINLOG statement

此问题是日志格式的问题。参考如下处理方式处理。但是每一处有'BINLOG'标志的地方都需要处理。每一条insert或者delete的地方就有一个BINLOG标志。

https://www.percona.com/blog/2017/02/16/mysql-bug-72804-workaround-binlog-statement-can-no-longer-be-used-to-apply-query-events/

这个解决问题的方法,非常不靠谱,据官方资料,BINLOG日志格式的问题,在mysql5.6版本中已经解决了。不知为何还会遇到。

目前日志解析格式后的问题,一直没有解决。



发布了145 篇原创文章 · 获赞 21 · 访问量 37万+

猜你喜欢

转载自blog.csdn.net/wxc20062006/article/details/79295652
今日推荐