Chinaunix首页 | 论坛 | 博客
  • 博客访问: 744523
  • 博文数量: 38
  • 博客积分: 587
  • 博客等级: 中士
  • 技术积分: 579
  • 用 户 组: 普通用户
  • 注册时间: 2011-10-17 14:32
文章存档

2013年(15)

2012年(23)

分类: Mysql/postgreSQL

2012-08-09 21:10:19

  上周生产库上有主从出现警告,从库的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) |
给主人留下些什么吧!~~