一个CONNECTION 插件引起的连接问题

适用范围

5.7+

问题概述

应用反应,数据库帐户经常连接不上,时好时坏。而且手动测试,也是hang在这里,现象如下:
image.png

问题原因

通过手动测试,确实时连接不上。而且其这帐户正常。 查看错误日志并无异常。
随后能过root 帐户登录 ,查看了一上等待事件。
image.png

从processlis 上可以看出,连接一直在等待 connection_control plugin, 这里基本上可以确定是这个插件影引起的了。 随后我们也查看了插件和启用状态,为ACTIVE。
image.png

插件的参数配置:
image.png

参数说明如下:
connection_control_failed_connections_threshold:单个用户登录失败(由于密码错误引起)次数上限,默认3次, 这里设置的5次
connection_control_max_connection_delay:失败上限之后再次尝试登录前最大等待时间,单位ms
connection_control_min_connection_delay:失败上限之后再次尝试登录前最小等待时间,单位ms。 这里是15分钟

也就是说DB尝试5次错误输入密码后,在第6次登录时会delay 15分钟(由connection_control_min_connection_delay指定),同时Connection_control_delay_generated计数+1(若登录密码继续输入错误,则delay秒数与计数器继续增加。直到成功登录为止之后,此时delay清零。

我们可以查看Connection_control_delay_generated 信息,已有292次错误。
image.png

通过和客户确认,确实是在MYSQL服务上配置这connection插件和参数。

解决方案

  1. 临时解决办法 将connection_control_failed_connections_threshold 参数设置到足够大,或都将connection_control_min_connection_delay设置为足够小。这样客户的感知就会减小。
  2. 临时卸载connection 插件
mysql> UNINSTALL PLUGIN CONNECTION_CONTROL_FAILED_LOGIN_ATTEMPTS;
mysql> UNINSTALL PLUGIN CONNECTION_CONTROL;
  1. 通过分析审计日志,找出连接失败的服务,确定连接配置的密码是否正常。

参考文档

https://dev.mysql.com/doc/refman/5.7/en/connection-control-installation.html

posted @ 2022-11-14 15:13  www.cqdba.cn  阅读(310)  评论(0编辑  收藏  举报