monit mysql 服务器由于太多不良连接而被阻止

monit mysql 服务器由于太多不良连接而被阻止

是否有任何针对 monit 的调整或其他方法来监视一台服务器是否可以访问另一台服务器上的 mysql?

我尝试使用 monit,但您可能知道,尝试 10 次后,mysql 会阻止服务器。

check host db1.server with address db1.server
   if failed port 3306 protocol mysql then alert

mysqli: host <host> is blocked because of many connection errors; unblock with mysqladmin flush-hosts

答案1

编辑(全新答案)

我对这个问题进行了一些 Google 搜索,并找到了一些线索:

似乎MySql不太喜欢的时候:

  • 未经身份验证在端口 3306 上建立连接
  • 打开套接字后,在未进行任何 SQL 握手的情况下将其断开

因此,解决方法可能是执行真正的MySql连接并运行查询。

这是一种方法。您需要mysql-client在监控服务器上安装并在 MySql 服务器上授予正确的访问权限。

Monit检查设置:

check program mysql with path "/root/mysql_check.sh"
  if status != 0 then alert

脚本mysql_check.sh

#!/bin/sh
mysql -u<user> -p<password> --host=xx.xx.xx.xx <<END
SHOW VARIABLES LIKE "%version%";
END

脚本mysql_check.sh对于自定义检查也应该有效Nagios


我已经成功测试了这一点(意味着可以远程运行查询),但是就我无法blocked host在我的服务器上重现该问题而言MySql 5.5,我无法判断这是否真的解决了该问题。

尝试一下并告诉我结果如何。


我的参考文献:

相关内容