• ERROR 1129 (HY000) unblock with 'mysqladmin flush-hosts'


    一、错误解释


    ERROR 1129 (HY000): Host 'x.x.x.x' is blocked because of many connection errors; unblock with 'mysqladmin flush-hosts'

    该IP有过多的错误连接,被mysql被阻止继续连接了。

    二、错误原因 (Only)

    本质原因是因为同一个IP在短时间内产生太多中断的数据库错误连接(超过max_connect_errors的最大值)而导致的。

    三、产生原因

    1、服务配置错误:

    连接MySQL失败之后不断的重连,致使错误连接数飙升,超过最大值,使得同服务器的其他服务不能再继续连接MySQL。

    2、网络超时:

    MySQL客户端与数据库建立连接需要发起三次握手协议,正常情况下,这个时间非常短,但是一旦网络异常,网络超时等因素出现,就会导致这个握手协议无法完成,MySQL有个参数connect_timeout,它是MySQL服务端进程mysqld等待连接建立完成的时间,单位为秒。如果超过connect_timeout时间范围内,仍然无法完成协议握手话,MySQL客户端会收到异常致使错误连接增加。

    3、其他原因: 

     脚本或者Shell命令在不断的使用错误的MySQL用户名和密码连接MySQL。

    四、解决办法

    1、修改 max_connect_errors 的值

    mysql> use performance_schema;
    mysql> show variables like 'max_connect_errors';
    mysql> set global max_connect_errors = 10000;

    2、检查网络超时

    ping 一下服务所在环境和mysql数据库之间的网络,如果延时大于10s基本没救,建议重启服务器(如果服务是部署在docker里面的还建议重启docker)。

    mysql内查看错误连接数量:

    mysql> use performance_schema;
    mysql> select * from host_cacheG

    如果 COUNT_HANDSHAKE_ERRORS 数量 大于 SUM_CONNECT_ERRORS 那么大概可以确定就是网络问题。

    3、根本解决办法

    解决ERROR 1129 (HY000)的方法是执行flush host或者 mysqladmin flush-hosts,其目的是为了清空host cache里的信息,那是不是说不使用host cache就可以了?使host cache不生效(禁用 MySQL DNS 查找)的方式有如下两种:

    A、设置 host_cache_size 为0

    mysql> set global host_cache_size=0;

    B、配置skip-name-resolve 

    编辑mysql配置文件 my.cnf

    vi /etc/my.cnf

    在 [mysqld] 下面添加 下面这一行

    skip-name-resolve

     

     

  • 相关阅读:
    根据进程id pid 查容器id
    jenkins 持续集成笔记1 --- 安装配置
    PMM 监控 MySQL 使用钉钉告警
    PMM 监控 MySQL
    docker HealthCheck健康检查
    顶层const和底层const
    Windows下使用VS2017搭建FLTK开发环境
    解决FAT32格式U盘安装win10时0x8007000D错误
    在VS中为C/C++源代码文件生成对应的汇编代码文件(.asm)
    VS2017设置主题和代码字体
  • 原文地址:https://www.cnblogs.com/easyidea/p/15009534.html
Copyright © 2020-2023  润新知