1.版本
1)操作系统
cat /etc/issue
Red Hat Enterprise Linux Server release 5.5 (Tikanga)
Kernel \r on an \m
cat /proc/version
Linux version 2.6.32-504.el6.x86_64 ([email protected]) (gcc version 4.4.7 20120313 (Red Hat 4.4.7-11) (GCC) ) #1 SMP Wed Oct 15 04:27:16 UTC 2014
2)mysql数据库版本
mysql --version
mysql Ver 14.14 Distrib 5.6.26, for linux-glibc2.5 (x86_64) using EditLine wrapper
2.问题描述
在使用mysqlbinlog执行如下命令的时候报错 mysql的binlog日志时报如下错误:
mysqlbinlog --start-position="845016601" --stop-position="845016721" --base64-output=decode-rows -v -v 3306-bin.000017 >test ERROR: Error in Log_event::read_log_event(): 'read error', data_len: 234781854, event_type: 2
3.问题分析
网上很多案例都说是因为mysqlbinlog 版本问题导致的
cd / [root@all-middle-mysql-05 /]# find ./ -name mysqlbinlog ./data/mysql/mysql-advanced-5.6.26-linux-glibc2.5-x86_64-2/bin/mysqlbinlog ./data/mysql/mysql-advanced-5.6.26-linux-glibc2.5-x86_64/bin/mysqlbinlog ./data/mysql/mysql3308/bin/mysqlbinlog ./usr/bin/mysqlbinlog##本机上有这些mysqlbinlog,但是这些mysqlbinlog版本都是一致的,我使用的是/usr/bin/mysqlbinlog
mysqlbinlog --version mysqlbinlog Ver 3.4 for linux-glibc2.5 at x86_64
##我的库是5.6.26版本,使用的就是mysqlbinlog 3.4 而且如下的命令我执行是成功的,所以应该不是版本的问题
mysqlbinlog --start-datetime="2015-12-12 00:00:00" --stop-datetime="2015-12-12 00:30:00" --base64-output=decode-rows -v -v 3306-bin.000017 >test
4.问题解决
后来发现了问题,我想根据从库的sql线程报错(报错中包含 end_log_pos 845016721)中指定的end position 去分析日志,所以就根据end position往前推了一个start position,结果那个start position根本不存在,所以报错。我把--start-position参数去掉 上面报错的命令就执行成功了
mysqlbinlog --stop-position="845016721" --base64-output=decode-rows -v -v 3306-bin.000017 >test