首页 > 数据库 >mysql 出现 mysqladmin flush-hosts

mysql 出现 mysqladmin flush-hosts

时间:2023-07-12 10:36:18浏览次数:50  
标签:ERRORS flush mysqladmin hosts CONNECT mysql 连接

【1】报错信息

message from server: "Host 'xx.xx.xx.xx' is blocked because of many connection errors; unblock with 'mysqladmin flush-hosts'"
主机xx.xx.xx.xx被锁,因为许多连接错误;

【2】快速解决

mysql出现 mysqladmin flush-hosts,是因为

  其他客户机连接错误次数过多时,mysql会禁止客户机连接

  使用 mysqladmin flush-hosts 是清理host_cache表,它会记录连接客户端主机名、IP地址信息和其他连接信息,帮助诊断连接问题;(flush hosts;清除的是此表的数据)

解决方法:

 

mysql -u root -p 后台登陆mysql以后 执行 flush hosts; 
或者通过设置较大的 max_connect_errors值
mysql> set global max_connect_errors=1000;
可以暂时解决问题

【3】深入分析

(3.1)根因分析

虽然报错解决了,但是过段时间以后,还会报以上错误;关于这个错误,其实就是因为同一IP在短时间内,产生了很多中断的数据连接(超过 MAX_CONNECT_ERRORS 最大值)二导致的

(3.2)performance_schema下的 hosts 表和 host_cache 表

host_cache表会记录连接客户端主机名、IP地址信息和其他连接信息,帮助诊断连接问题;(flush hosts;清除的是此表的数据)

如果要彻底解决此问题,请往下看

首先了解下MySQL performance_schema下的hosts表和host_cache。

mysql> use performance_schema;
mysql> select * from host_cache\G;
mysql> select * from hosts\G;

host_cache表会记录连接客户端主机名、IP地址信息和其他连接信息,帮助诊断连接问题;(flush hosts;清除的是此表的数据)

需要关注的两个列:

  SUM_CONNECT_ERRORS:连接错误数

  COUNT_HANDSHAKE_ERRORS:握手错误计数

  

hosts表中记录了连接客户端的HOST(主机名),以及CURRENT_CONNECTIONS(当前连接数),和TOTAL_CONNECTIONS(总连接数);

  

看到此处以后,你大概也清除了,其实也就是host_cache中SUM_CONNECT_ERRORS=MAX_CONNECT_ERRORS 时,再连接数据库时报的错;

#查看值
mysql> show variables like '%max_connect_errors%';
#设置值
mysql> set global max_connect_errors=3;

(3.3)SUM_CONNECT_ERRORS 参数的累加计数

那到底什么的错误,才会让SUM_CONNECT_ERRORS累加1呢?

1.首先排除网上说的密码错误,SUM_CONNECT_ERRORS累加1;

  密码错误的话只会让COUNT_AUTHENTICATION_ERRORS累加1;

  

2.由于网络原因或其它一些连接错误会导致SUM_CONNECT_ERRORS累加1;

  网络原因 Lost connection to MySQL server at 'XXX', system error: errno;

  网络原因可以通过设置connect_timeout解决

#一般默认是10s
mysql> mysql> show variables like 'connect_timeout';
mysql> set global connect_timeout=20;

 

其它原因,比如

  


也会导致SUM_CONNECT_ERRORS累加1;

我当时排除网络原因、并把所有我知道的数据库连接都关闭以后,还是发现SUM_CONNECT_ERRORS值在一直变大;
这时候可以通过mysql服务CONNECTION_CONTROL和CONNECTION_CONTROL_FAILED_LOGIN_ATTEMPTS插件来查看监控情况;

(3.4)8.0版本使用连接插件观察

1.查看是否安装插件

mysql> show plugins;

2.如果没有的话,登录mysql执行

mysql>INSTALL PLUGIN CONNECTION_CONTROL SONAME 'connection_control.so';
mysql>INSTALL PLUGIN CONNECTION_CONTROL_FAILED_LOGIN_ATTEMPTS SONAME 'connection_control.so';

3.插件安装成功后(如果只是为了排查问题,其它参数不要设置,如果有需求可以参考参考官网:https://dev.mysql.com/doc/refman/5.7/en/connection-control-installation.html)

-- 执行下面这个SQL,看是否有错误记录,错误记录会记录在information_schema.connection_control_failed_login_attempts表
 select * from information_schema.connection_control_failed_login_attempts;
 

 

这时候可以看到用户主机,和失败的尝试;
我是通过这个,找到了一个主库,在用一个不用的用户,不停的在向从库发送请求;然后删除主从库关系,问题解决;SUM_CONNECT_ERRORS不在增大;
记录日常一次排错记录;

【参考文档】

本文转自:https://www.jianshu.com/p/3a397a358a22

标签:ERRORS,flush,mysqladmin,hosts,CONNECT,mysql,连接
From: https://www.cnblogs.com/gered/p/17546854.html

相关文章

  • 给ansible的hosts文件加密及使用方法
    转: https://blog.csdn.net/Li_haiyu/article/details/125774440  ......
  • 08异步短信发送,注册功能,补充【1.为什么要写media才能访问,2.debug作用,3.ALLOWED_HOSTS
    1异步发送短信#原来的发送短信,是同步 -前端输入手机号---》点击发送短信---》前端发送ajax请求----》到咱们后端接口---》取出手机号----》调用腾讯发送短信---》腾讯去发短信---》发完后----》回复给我们后端发送成功---》我们后端收到发送成功---》给我们前端返回发送成功......
  • linux中,如何在/etc/hosts中将一个域名解析为多个IP地址?工作原理是什么?
    可以在/etc/hosts文件中,将一个域名配置多个IP地址 比如:[root@nccztsjb-node-23yamls]#cat/etc/hosts127.0.0.1localhostlocalhost.localdomainlocalhost4localhost4.localdomain4::1localhostlocalhost.localdomainlocalhost6localhost6.localdomain......
  • mysql flush table的使用
    会话1:selectsleep(500)fromt_biz1where.....会话2:setsessionwait_time_out=5000;flushtableswithlock; 会话3:select*fromt_biz1where....会话4:select*fromt_biz2where....会话5:unlocktables; 要保证会话1的sleep时间大于会话2 会话1执......
  • 查看nebula版本号 console里show hosts graph
    (root@nebula)[(none)]>showhostsgraph+-------------+------+----------+---------+--------------+---------+|Host|Port|Status|Role|GitInfoSha|Version|+-------------+------+----------+---------+--------------+---------+|&q......
  • https:imnks.com369.html hosts处理
    https:imnks.com369.htmlhosts处理sudo-i#手动筛选的ip,2022.11.1更新curlhttp://code.imnks.com/hosts.sh|bash#自动筛选的ipcurlhttp://code.imnks.com/hosts-auto.sh|bash​​......
  • macOS 上修改 hosts 文件后刷新DNS
    打开终端:在Launchpad中打开"终端"应用程序,或者通过在Spotlight中搜索"终端"并打开它。输入刷新命令:在终端中输入以下命令并按下回车键:sudokillall-HUPmDNSResponder这将发送刷新DNS缓存的信号。输入密码:您可能需要输入管理员密码来执行sudo命令。在输......
  • Java IO流 flush()的作用和缓冲流
    Java缓冲流和flush()的作用哪些流是缓冲流,哪些流带有缓冲区?根据Java官方文档关于BufferedStreams的介绍,缓冲流有四种:BufferedInputStream:包装字节输入流BufferedOutputStream:包装字节输出流BufferedReader:包装字符输入流BufferedWriter:包装字符输出流这些流又被称为包装......
  • SwitchHosts 一款管理本地 host 文件配置的工具,支持一键切换不同环境配置的 host 文件
    简介Hosts相关的小工具着实不少,大家需求最多的肯定是hosts切换工具了。SwitchHosts!是一款可以方便你管理和一键切换多个hosts方案的免费开源工具,跨平台支持Windows、macOS和Linux系统。软件获取➤https://www.hereitis.cn/articleDetails/1269功能介绍SwitchHos......
  • MySQL 8.0半同步复制-net_flush()失败
    MySQL8.0.26做的增强半同步复制,log-error日志中出现如下报错:2021-12-28T14:04:24.663005+08:0011[ERROR][MY-011161][Repl]Semi-syncmasterfailedonnet_flush()beforewaitingforreplicareply.2021-12-28T14:51:49.217811+08:00413824[ERROR][MY-011161][Repl......