问题:
批量更新数据库时报错
原因:
数据包大小超过了max_allowed_packet设定的阈值
问题排查过程:
- 查看mysql的参数配置,原来是16M,改为500M,如下:
mysql> show variables like 'max_allowed_packet';
+--------------------+-----------+
| Variable_name | Value |
+--------------------+-----------+
| max_allowed_packet | 524288000 |
+--------------------+-----------+
1 row in set (0.01 sec)
修改为500M后,已经确定比数据包大,但日志仍然报错,奇怪,怀疑是哪里的配置出了问题。
- 由于经过一层proxysql的代理,怀疑是代理配置有问题
proxysql参数默认配置为4M,最大为1G,https://github.com/sysown/proxysql/wiki/Global-variables#mysql-max_allowed_packet
查询proxysql的配置,一查果然有问题,才4M,如下:
mysql> show variables like '%max_allowed_packet';
+--------------------------+---------+
| Variable_name | Value |
+--------------------------+---------+
| mysql-max_allowed_packet | 4194304 |
+--------------------------+---------+
修改为更大值:
SET mysql-max_allowed_packet=64*1024*1024;
LOAD MYSQL VARIABLES TO RUNTIME;
SAVE MYSQL VARIABLES TO DISK;
将proxysql的配置调为64M后问题成功解决!