MySQL 有一个策略,一旦主机达到可配置的登录尝试失败次数,就拒绝主机重新连接。
这可以使用 @@global.max_connect_errors
设置。
看这里:
https://dev.mysql.com/doc/refman/5.7/en/blocked-host.html
我找不到并且如果有人能指点我会非常高兴 - 是询问数据库从给定主机经历了多少次失败的连接尝试。
我正在几个节点之间进行高可用性设置,找到这一点对我来说很重要 - 特别是在我们的测试和集成环境中。
有人吗?
最佳答案
您可以尝试阅读 performance_schema.host_cache 。这是内部主机缓存的动态 View ,可跟踪每个主机的错误。
您可能知道,当您执行 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
关于mysql - 我可以查询给定主机给出的 connect_errors 数吗?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/49367456/