1.版本冲突
[root@ops logs]# mysqlbinlog --base64-output=decode-rows -v -v mysql-bin.000007
问题:ERROR: Error in Log_event::read_log_event(): 'Sanity check failed', data_len: 53, event_type: 30
[root@ops logs]# mysqlbinlog -V
mysqlbinlog Ver 3.3 for unknown-linux-gnu at x86_64
[root@ops logs]# /usr/local/mysql/bin/mysqlbinlog -V
/usr/local/mysql/bin/mysqlbinlog Ver 3.4 for Linux at x86_64
解决:cp /usr/local/mysql/bin/mysqlbinlog /usr/bin/mysqlbinlog
2.ROW模式下查看原始SQL
在row模式下,可以通过mysqlbinlog --base64-output=decode-rows –v查看最底层的insert数据模块,也可以通过命令行show binlog events in 'mysql-bin.000216';来实时查看最原始的insert sql记录。
# vim my.cnf
[mysqld]
binlog_format=row # binlog 日志格式
binlog_rows_query_log_events = 1 # 将原始的操作sql记录写入事件中
3.日志增长过快问题
binlog_row_image默认值是full,现在改为binlog_row_image=minimal
4.row模式下注意事项
#如果想查看row模式下的语句,使用参数--base64-output=decode-rows
mysqlbinlog --base64-output=decode-rows -v -v /usr/local/mysql/logs/mysql-bin.000010 --start-position="1666" --stop-position="1899"
#恢复数据时不可以使用参数--base64-output=decode-rows,这与STATEMENT一致
mysqlbinlog /usr/local/mysql/logs/mysql-bin.000010 --start-position="1666" --stop-position="1899" | mysql -u root -p bptest