环境:

mysql 5.6 ; binlog  3.4 ; binlog_format MIXED ;

.报错:

mysqlbinlog -v --start-position=166084123 mysql-bin.000228 >c.log
ERROR: Error in Log_event::read_log_event(): 'read error', data_len: 1836021866, event_type: 120

.网上解决方案:

上网查看,查到的解决方法都是 mysqlbinlog版本不兼容,mysql 5.5 是mysqlbinlog 3.3版本,mysql 5.6 以上是mysqlbinlog 3.4版本,需要升级mysqlbinlog的版本解决问题。和我的情况完全不符。

我的问题:

mysqlbinlog -v mysql-bin.000228,全量解析日志,没问题。

mysqlbinlog -v --start-position=166084123 mysql-bin.000228 添加start-position解析日志,会出现上述错误。

问题应该在start-position点上,记得之前日志点有问题时会报错:日志点不可用。这次问题奇怪,一开始没去判断日志点是否准确。而且日志点是从xtrabackup_slave_info文件拿的,没理由不准确的。

问题解决:

问题就是出在日志点不准确上,不知道为什么从xtrabackup_slave_info拿到的日志点会不准确。从binlog日志中,取出相近位置点,执行就OK了。

总结:

问题奇怪,感觉和binlog_format=MIXED有关。mixed是个坑,只是因为磁盘性能不行才入坑许久,不能自拔。

05-19 04:47