Mysql max_allowed_packet参数调整实例

Mysql max_allowed_packet参数调整实例

max_allowed_packet为mysql限制server接受的数据包的大小值,如果写入或者更新的数据包大于配置文件my.cnf其值,则会报错。

某天试运行的某系统管理员和项目组反应他们应用报错了,看日志和数据库有关系,他们试着调整参数,但是没有起作用。
调整命令:
set global max_allowed_packet = 50 * 1024 * 1024;
但是应用还是报错
具体应用报错如下:
++### Eorror updating databases. Cause: com.mysql.jdbc,PacketTooBigException: Packet for query is too large.
You can change this value on the server by setting the ‘max_allowed_packet’ variable.
++### The error may involve com.xxxxxxxx.xxxx.mapper.SqliteMapper.updateData-Inline
==### SQL: REPLACE INTO t_xxx_xxxx_xxxxx(xxx,xxx,xxx,xxxx,xxx,xxx,xxx,xxx,xxx,xxx,xxx,xxx,xx,xxx,xxx,xxx,xxx,xxx) VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)
(?,?,?,?,?,?,?,?,?,?,?,?,?,?,?) (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?) (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?) (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)
(?,?,?,?,?,?,?,?,?,?,?,?,?,?,?) (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?) (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?) (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)

经咨询此系统是和外部系统由数据交互,每天都有外部系统数据推送过来,然后在更新或者插入。

考虑其系统是数据类分析系统,只是动态调整如果重启就会失效。
由于是一主一从架构,主从分别调整my.cnf
vi my.cnf
[mysqld]
#max_allowed_packet = 16M
max_allowed_packet = 50M
wq!

主从分别重启数据库为了两边都加载新的值,应用重新连主库,再查看应用日志显示数据可以正常导入,没有报错。

注意点:
1、如果涉及主从,主库和从库分别调整,不能只改一边,如果主从切换则应用还会报错,调整配置文件以后,务必重启mysql服务。
2、根据官方文档此max_allowed_packet参数最大是1G,动态命令行调整只能使用字节数设置,而且必须是global,配置文件调整才允许设置M、G单位。
3、项目组先用命令行调整没有生效,是因为应用没有重新建链,所以还是识别之前的值,本次重启了数据库应用重新建链,外部数据可以正常导入。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值