环境:
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是个坑,只是因为磁盘性能不行才入坑许久,不能自拔。