MySQL中hostisblocked,flushhosts的示例分析

本篇文章为大家展示了MySQL中host is blocked, flush hosts的示例分析,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。

网站建设公司,为您提供网站建设,网站制作,网页设计及定制网站建设服务,专注于成都定制网页设计,高端网页制作,对展览展示等多个行业拥有丰富的网站建设经验的网站建设公司。专业网站设计,网站优化推广哪家好,专业seo优化排名优化,H5建站,响应式网站。



背景:
MySQL-5.5.41, 开发用的环境连接MySQL客户端时报错;

场景:
业务方反馈在连接MySQL的时候报错了, 且应用也在输出了一样的错误信息:

点击(此处)折叠或打开

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

且开发的同事尝试修改了max_connect_errors的参数;

调整到1000以后, 再进行flush hosts, 虽然能够解决问题, 但是一分钟之后还是会报同样的错误;

分析:
引起这个问题的原因很直白, 在报错信息里面都写明了, "because of many connection errors";

然后看了一下aborted connections, 确实如描述一般, too many......

MySQL中host is blocked, flush hosts的示例分析

中间还查看了一次host的参数, 因为在5.7里面, 设置host_cache_size为0就可以避免这个问题了,

然而5.5压根就没有这个参数......_(:з」∠)_

考虑一下发生这个问题的根本原因:

host_cache中, 记录了的blocked错误, 如果这种错误的数量太多, 且在上一次成功连接之后, 这种错误的数量超过了max_connect_errors的值,
那么MySQL就会抛出这个错误, 并提示需要flush hosts;

5.7中设置size为0(动态参数), 变相的使得mysql认为blocked的数量一直是0, 所以就不会再报这种错了,

从根本原因来看, 关掉host cache也是一个解决的办法;

那么如何关掉host cache?

MySQL5.5和5.7在show variables中都没有一个明确的参数能关闭host cache,

翻了一下文档, 发现只能在启动的时候加上skip-host-cache才能关闭;

处理方式:
最终是协商了重启的时间, 在开发机的MySQL配置文件加上了skip-host-cache来彻底关闭这个cache, 然后随开发们乱搞去吧......╮(╯_╰)╭

上述内容就是MySQL中host is blocked, flush hosts的示例分析,你们学到知识或技能了吗?如果还想学到更多技能或者丰富自己的知识储备,欢迎关注创新互联行业资讯频道。


分享标题:MySQL中hostisblocked,flushhosts的示例分析
本文路径:http://myzitong.com/article/gshopd.html