最近遇到了连接数撑爆数据库的情况,据搜集信息来看,MySQL8之前会预留一个连接给super用户,但是8.0死活登不上去,只能眼睁睁看着连接满,却不知道服务器里面发生了什么。
经过搜索,发现MySQL官方给出了管理端口的方式来解决连接数爆满的情况。
这个设置好的管理端口不会限制连接数量,但是需要连接的用户拥有connection_admin权限。
接下来我们讲讲如何操作,修改配置文件,在[mysqld]的配置下方加入如下两行
#test1为服务器的主机名,也可以使用127.0.0.1,但是使用127.0.0.1无法远程连接,使用具体的ip会报错 admin_address=test1 admin_port=33062
加入上面两行后,将max_connections设小一点,例如为1,这个时候普通用户直接登录不上去了,会报too many connections
我们使用管理端口来登录服务器
#这里使用的root用户,也可以创建用户赋予connection_admin权限然后进行登录 mysql -uroot -p$pwd -h$ip -P33062
这个时候就可以成功登录到服务器中,然后查看服务器的情况
对于生产上部署MySQL服务器来说,留这样一个后门是非常有必要的,因为我们在测试环境中跑应用的时候可能不会发生连接数爆满的问题,但是如果写的业务中包含了这种长连接很可能会造成连接数过多导致数据库hang住,这个时候还没办法上服务器排查问题,就很尴尬,只能重启服务器,不能找到根本的原因。所以,管理端口用起来!