上周生产库上有主从出现警告,从库的Slave_IO_Thread死掉了,查看后,出现以下错误提示:
Got a packet bigger than 'max_allowed_packet' bytes
很明显是由于max_allowed_packet的设置太小导致的,然后查检主从库上的设置,主库的设置大于从库,因为max_allowed_packet是动态参数,先调整从库上的max_allowed_packet 与主库相同,重新单独启动I/O线程就正常了。
原理说明:binlog的事件以RBR格式记录,且当前的事件长度大于了从库的max_allowed_packet, 导致无法Slave IO不能正常读取master binlog event.
分析:
1、生产线上的库使用的binlog_format多为mixed, 它记录binlog默认以SBR的,在特定情况下自动切为RBR来记录的。
2、此类问题基本都记录binlog切到Row模式下才有的。
3、如果在5.1.64, 5.5.26, and 5.6.6版本下,有一个新服务器变量:slave_max_allowed_packet可以避免此类问题的发生。
参照:
阅读(4692) | 评论(0) | 转发(0) |