mysql 异常处理

flush-hosts 异常

错误原因

​ 同一个ip在短时间内产生太多(超过mysql数据库max_connection_errors的最大值)中断的数据库连接而导致的阻塞。
​ 当客户端连接服务端超时(超过connect_timeout),服务端就会给这个客户端记录一次error,当出错的次数达到max_connect_errors的时候,这个客户端就会被锁定,从而应用出现异常:
java.sql.SQLException: null, message from server: "Host 'xxx' is blocked because of many connection errors; unblock with 'mysqladmin flush-hosts'"

参考:https://www.cnblogs.com/kerrycode/p/8405862.html

解决办法

  • 方法一

    进入数据库将max_connection_errors参数调高,也可以在my.cnf文件中修改不过需要重启MySQL

    查看该属性设置为多大

    1
    show global variables like '%max_connect_errors%';

    根据业务尽量把这个值设置大一点,MySQL max_connect_errors默认值为100,我们可以根据具体需要设置大一点,这里设置为500

    1
    set global max_connect_errors=500;

注意:数据库主从或集群模式时,有节点都需要单独设置。

  • 方法二

    1
    2
    3
    mysqladmin -uroot -proot -h192.168.1.1 flush-hosts

    flush hosts;

    注意:数据库主从或集群模式时,要确定是被哪个MySQL服务拒绝了,刷新对应的服务器即可,不确定的话可以所有节点都刷新。

  • 本文作者: forever杨
  • 本文链接: https://blog.yl-online.top/posts/537b60d6.html
  • 版权声明: 本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。如果文章内容对你有用,请记录到你的笔记中。本博客站点随时会停止服务,请不要收藏、转载!