mysql - 我可以查询给定主机给了多少 connect_errors 吗?

mysql - can I query how many connect_errors a given host gave?

MySQL 有一个策略,一旦主机达到可配置的登录尝试失败次数,就拒绝主机重新连接。

这可以使用 @@global.max_connect_errors 进行设置。 看这里: https://dev.mysql.com/doc/refman/5.7/en/blocked-host.html

我找不到的,如果有人能给我指明方向,我将不胜感激 - 询问数据库,数据库从给定主机经历了多少次失败的连接尝试。

我正在几个节点之间进行高可用性设置,发现这一点对我来说很重要 - 特别是在我们的测试和集成环境中。

有人吗?

您可以尝试阅读 performance_schema.host_cache。这是内部主机缓存的动态视图,它跟踪每个主机的错误。

您可能知道,当您执行语句 FLUSH HOSTS.

时,主机缓存跟踪的数据会被重置

您需要使用 MySQL 5.6 并启用 performance_schema(默认情况下应启用)。

mysql> select * from host_cache limit 1\G
*************************** 1. row ***************************
                                        IP: 192.168.48.95
                                      HOST: app.mcappface.example.com
                            HOST_VALIDATED: YES
                        SUM_CONNECT_ERRORS: 0
                 COUNT_HOST_BLOCKED_ERRORS: 0
           COUNT_NAMEINFO_TRANSIENT_ERRORS: 0
           COUNT_NAMEINFO_PERMANENT_ERRORS: 0
                       COUNT_FORMAT_ERRORS: 0
           COUNT_ADDRINFO_TRANSIENT_ERRORS: 0
           COUNT_ADDRINFO_PERMANENT_ERRORS: 0
                       COUNT_FCRDNS_ERRORS: 0
                     COUNT_HOST_ACL_ERRORS: 0
               COUNT_NO_AUTH_PLUGIN_ERRORS: 0
                  COUNT_AUTH_PLUGIN_ERRORS: 0
                    COUNT_HANDSHAKE_ERRORS: 0
                   COUNT_PROXY_USER_ERRORS: 0
               COUNT_PROXY_USER_ACL_ERRORS: 0
               COUNT_AUTHENTICATION_ERRORS: 0
                          COUNT_SSL_ERRORS: 0
         COUNT_MAX_USER_CONNECTIONS_ERRORS: 0
COUNT_MAX_USER_CONNECTIONS_PER_HOUR_ERRORS: 0
             COUNT_DEFAULT_DATABASE_ERRORS: 0
                 COUNT_INIT_CONNECT_ERRORS: 0
                        COUNT_LOCAL_ERRORS: 0
                      COUNT_UNKNOWN_ERRORS: 0
                                FIRST_SEEN: 2018-03-01 19:54:39
                                 LAST_SEEN: 2018-03-19 16:13:06
                          FIRST_ERROR_SEEN: NULL
                           LAST_ERROR_SEEN: NULL