環境:
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是個坑,只是因為磁盤性能不行才入坑許久,不能自拔。