龙空技术网

Mysql数据库出现大量communication packets报错的解决方法

JasonTang 643

前言:

眼前看官们对“mysqlallowedpacket”都比较关注,各位老铁们都需要知道一些“mysqlallowedpacket”的相关内容。那么小编也在网络上网罗了一些有关“mysqlallowedpacket””的相关内容,希望兄弟们能喜欢,我们快快来学习一下吧!

简介:这几天呀,我发现某个系统访问起来特别慢,打开系统登录页面得停个好几秒。一开始我猜可能是服务器的 CPU 和内存出了毛病,就用 top 这类命令去查看服务器的 CPU、MEM 还有 IO 的使用状况,结果发现都挺正常的。接着我又去查系统的日志 messages,也没看到有 error 报错的信息。因为这个系统有前后端两台服务器,我就寻思会不会是另一台数据库的问题,去查看那个数据库 Mysql 的日志,居然发现有好多“Got an error reading communication packets”的报错信息。估计就是数据库的连接出了问题,所以我就接着继续处理。

这篇文章主要讲的是解决 Mysql 数据库“Got an error reading communication packets”报错信息的处理办法。详细的内容您请看下面。

一、访问Linux系统

1.登录Linux系统

2.查看Mysql数据库运行状态

二、查看Mysql数据库报错信息

1.查看Linux系统日志

执行指令# cat /var/log/messages | grep error

备注:出现这个错误啊,是因为用的 CentOS 7 仓库已经被归档啦,当下的镜像地址找不到咱需要的文件。CentOS 7 的官方仓库在 2024 年 6 月 30 号以后就不再维护了。所以呢,用最新的 CentOS 7 官方仓库很可能会碰到问题。

2.查看Mysql日志

执行指令# tail -n 200 /var/log/mysqld.log | grep error查看数据库日志

三、分析Mysql数据库报错信息

1.问题分析

说明:Mysql数据库出现少量的Aborted connection的报错信息是很难避免,但是大量出现就有问题了。

2.可能因素

说明:导致Mysql数据库出现Aborted connection的可能因素如下:

四、Mysql数据库报错的解决办法

1. 查看Aborted_clients和Aborted_connects数值

执行指令> show global status like '%abort%';

备注:Aborted_clients和Aborted_connects含义如下

2. 查看并修改数据库wait_timeout和interactive_timeout参数

(1)查看wait_timeout和interactive_timeout参数

执行指令> show global variables like '%timeout%';

(2)修改wait_timeout和interactive_timeout参数

执行指令> set globa interactive_timeout = 600000;

执行指令> set globa wait_timeout = 600000;

将该参数从默认28800修改为程序连接池设置的超时时间600000。

3. 查看并修改max_allowed_packet的数值

(1)查看max_allowed_packet的数值

执行指令> show variables like 'max_allowed_packet';

备注:max_allowed_packet 是MySQL中的一个参数,用于设置服务器端和客户端在一次传输数据包过程中允许的最大数据包大小。

(2)修改max_allowed_packet的数值

临时解决办法:

执行指令> set global max_allowed_packet = 10 * 1024 * 1024;将该值修改为1000M。

永久解决办法:

执行指令# vim /etc/my.cnf然后在其中将链接值修改为1000M,如下所示

备注:将该值修改为max_allowed_packet = 1000M,然后保存退出。

五、访问Mysql数据库的相关知识

1.连接mysql

格式: mysql -h主机地址 -u用户名 -p用户密码

回车后提示输入密码。

退出mysql命令:exit(回车)

2.修改mysql密码

格式:mysqladmin -u用户名 -p旧密码 password 新密码

或进入mysql

命令行SET PASSWORD FOR root=PASSWORD("root");

3.增加新用户

create user test@"%" identified by "P@55word";

grant select,insert,update,delete,create,drop on *.* to test@"%" identified by "P@55word";

4.删除用户

(1) 使用 DROP USER 语句删除普通用户

DROP USER 'test1'@'localhost';grant select;

(2) 使用DELETE语句删除普通用户

DELETE FROM mysql.user WHERE Host='localhost'AND User='test2';

标签: #mysqlallowedpacket