打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
max_allowed_packet设置过小导致slave报错原因

最近遇到一个问题,同样的mysql参数配置,然后往master上面成功插入一条 >16M的记录,结果slave复制报错。

测试:

建测试表

CREATE TABLE `Attachments` (  `Content`    longblob) ENGINE=InnoDB DEFAULT CHARSET=utf8;

查看max_allowed_packet大小

root@(none) 04:26:57>show global variables like 'max_allowed_packet';+--------------------+----------+| Variable_name      | Value    |+--------------------+----------+| max_allowed_packet | 16777216 |+--------------------+----------+1 row in set (0.00 sec)

往里面插入>16M数据

xuebb@xuebb-Aspire-5733:/home/vobiledata$ du -sh s 29M        sLOAD DATA INFILE '/home/vobiledata/s' INTO TABLE Attachments1;

结果发现在master成功插入,同时slave报错

131118 13:31:23 [ERROR] Error reading packet from server: log event entry exceeded max_allowed_packet; Increase max_allowed_packet on master ( server_errno=1236) 131118 13:31:23 [ERROR] Slave I/O: Got fatal error 1236 from master when reading data from binary log: 'log event entry exceeded max_allowed_packet; Increase max_allowed_packet on master', Error_code: 1236

解释:读取master binlog是由于单行记录超过了max_allowed_packet的限制大小。读取失败

原因: 事务具有四大特性:原子性,一致性,隔离性,持久性

max_allowed_packet 针对的是一个事务中的一行记录大小,当一行记录超过了限制的大小,将会报错。master上能插入成功的原因在于事务是不可分割的整体,他有原子性。不管 多大,都会插入,然而 slave会通过dmp命令读取master的binlog,然后写入relay log中,当读取的一行记录大小超过max_allowed_packet的大小,将会报错。

解决方法:

加大max_allowed_packet大小即可;

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
mysql主从不同步之max_allowed_packet参数设置问题
数据导入报错:Got a packet bigger than‘max_allowed_packet’bytes的问题
MySQL调整max_allowed_packet的大小
数据库:MYSQL参数max
MySQL 导入数据量过大报错解决办法
数据同步给第三方系统的方案探索
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服