本篇文章为大家展示了MySQL中host is blocked, flush hosts的示例分析,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。
背景:
MySQL-5.5.41, 开发用的环境连接MySQL客户端时报错;
场景:
业务方反馈在连接MySQL的时候报错了, 且应用也在输出了一样的错误信息:
点击(此处)折叠或打开
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......
中间还查看了一次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的示例分析,你们学到知识或技能了吗?如果还想学到更多技能或者丰富自己的知识储备,欢迎关注亿速云行业资讯频道。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。