Nginx 代理 Mysql 出现锁 IP 的情况

2020-10-27 12:08:37 +08:00
 krisbai

有没有好点的解决方案呢,以下时报错: Host ‘host_name‘ is blocked because of many connection errors. Unblock with ‘mysqladmin flush-hosts’

3145 次点击
所在节点    MySQL
11 条回复
ragnaroks
2020-10-27 15:14:16 +08:00
出错的链接太多了,要么拉高阈值,要么定时执行如上命令行
encro
2020-10-27 16:05:15 +08:00
Host ‘host_name‘ is blocked

host_name 错了。。。。

应该是实际的 host name 不是字符串"host_name"
lzhlzhlc123
2020-10-27 16:54:34 +08:00
上服务器登录数据库 执行命令 FLUSH HOSTS
lzhlzhlc123
2020-10-27 16:57:02 +08:00
要么有人用错误的密码疯狂连接你的数据库,要么就是你自己连接数据库的时候密码或者用户名输入错误,如果后端服务用的 tomcat,可以进 log 里面看一下 catalina.out 是不是报的数据库连接池连接失败
est
2020-10-27 17:20:44 +08:00
nginx 还可以代理 mysql ?走 tcp 代理功能么?
krisbai
2020-10-27 18:15:50 +08:00
@lzhlzhlc123 感谢回复。FLUSH HOSTS 这个命令 ok 的,但是治标不治本。我们用 nginx 做的同步服务,开发的同事反馈不走代理直接走阿里的 SLB 没问题的。好像是多任务同步就会出问题,单任务正常执行,摸不着头脑。
krisbai
2020-10-27 18:16:14 +08:00
@est 对的,有个 steam 模块支持代理 mysql 。
akira
2020-10-27 18:37:16 +08:00
大概率是 2l 说的问题,
治标的话,改大 mysql 的 max_connect_errors 应该能有改善。
治本的话,还是要找出是哪个地方出错了
encro
2020-10-27 18:39:07 +08:00
我说的很明显了,因为你配置的 host 是 "host_name"而不是真实的 host name,所以 nginx 去连名字叫做"host_name"的 host,链接不上,错误次数太多,所以被 block 了,解决办法是将 host_name 修改为真实的 mysql host name,并运行 mysqladmin flush-hosts 解除屏蔽。



整个英文也是这个意思:


Host ‘host_name‘ is blocked because of many connection errors. Unblock with ‘mysqladmin flush-hosts’

主机"host_name"被屏蔽因为错误数太多,通过 ‘mysqladmin flush-hosts’解除屏蔽。

为什么会错误次数太多?无非就是因为这个 host_name 不是一个真实的 mysql 服务器名称或者 IP 地址,你需要将这个换成真实的 mysql 服务器名称或者 IP 地址。
encro
2020-10-27 18:41:30 +08:00
@akira

我记得默认连接错误有几万次呢,够用了。
encro
2020-10-27 18:46:22 +08:00
如果你主机名设置对了,那么就是网络链接(比如没开端口)或者 dns 解析问题(比如没有配置正确 resolv.conf )了。

检查办法就是 ping/telnet host_name,估计不通。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/718979

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX