V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
MySQL 5.5 Community Server
MySQL 5.6 Community Server
Percona Configuration Wizard
XtraBackup 搭建主从复制
Great Sites on MySQL
Percona
MySQL Performance Blog
Severalnines
推荐管理工具
Sequel Pro
phpMyAdmin
推荐书目
MySQL Cookbook
MySQL 相关项目
MariaDB
Drizzle
参考文档
http://mysql-python.sourceforge.net/MySQLdb.html
krisbai
V2EX  ›  MySQL

Nginx 代理 Mysql 出现锁 IP 的情况

  •  
  •   krisbai · 2020-10-27 12:08:37 +08:00 · 3276 次点击
    这是一个创建于 1513 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

    11 条回复    2020-10-27 18:46:22 +08:00
    ragnaroks
        1
    ragnaroks  
       2020-10-27 15:14:16 +08:00   ❤️ 1
    出错的链接太多了,要么拉高阈值,要么定时执行如上命令行
    encro
        2
    encro  
       2020-10-27 16:05:15 +08:00   ❤️ 1
    Host ‘host_name‘ is blocked

    host_name 错了。。。。

    应该是实际的 host name 不是字符串"host_name"
    lzhlzhlc123
        3
    lzhlzhlc123  
       2020-10-27 16:54:34 +08:00
    上服务器登录数据库 执行命令 FLUSH HOSTS
    lzhlzhlc123
        4
    lzhlzhlc123  
       2020-10-27 16:57:02 +08:00
    要么有人用错误的密码疯狂连接你的数据库,要么就是你自己连接数据库的时候密码或者用户名输入错误,如果后端服务用的 tomcat,可以进 log 里面看一下 catalina.out 是不是报的数据库连接池连接失败
    est
        5
    est  
       2020-10-27 17:20:44 +08:00
    nginx 还可以代理 mysql ?走 tcp 代理功能么?
    krisbai
        6
    krisbai  
    OP
       2020-10-27 18:15:50 +08:00
    @lzhlzhlc123 感谢回复。FLUSH HOSTS 这个命令 ok 的,但是治标不治本。我们用 nginx 做的同步服务,开发的同事反馈不走代理直接走阿里的 SLB 没问题的。好像是多任务同步就会出问题,单任务正常执行,摸不着头脑。
    krisbai
        7
    krisbai  
    OP
       2020-10-27 18:16:14 +08:00   ❤️ 1
    @est 对的,有个 steam 模块支持代理 mysql 。
    akira
        8
    akira  
       2020-10-27 18:37:16 +08:00
    大概率是 2l 说的问题,
    治标的话,改大 mysql 的 max_connect_errors 应该能有改善。
    治本的话,还是要找出是哪个地方出错了
    encro
        9
    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
        10
    encro  
       2020-10-27 18:41:30 +08:00
    @akira

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

    检查办法就是 ping/telnet host_name,估计不通。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1102 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 30ms · UTC 18:46 · PVG 02:46 · LAX 10:46 · JFK 13:46
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.