目录
问题描述
[Warning] [MY-010055] [Server] IP address 'xxx.xxx.xxx.xxx' could not be resolved: 这是在主机名解析时通常出现的暂时错误,它意味着本地服务器没有从权威服务器上收到响应。
- 问题表现:A主机的服务在访问B主机的MySQL数据库时,产生有规律的断连,频次大概是失败一次,然后成功5秒,再失败一次,再成功5秒。
- 部署结构:
- 系统:A、B主机都是Windows Server 2019系统。
- 网络结构:A主机拥有公网IP(用IP1代表),B主机是云服务器,也拥有公网IP(用IP2代表)
- MySQL配置:MySQL数据库使用默认安装配置。
- 访问方式:A主机使用固定IP方式访问B主机MySQL,B主机MySQL使用IP限制的方式允许A主机使用特定账号访问。
排查流程
- 怀疑网络不稳定
- 使用Ping方式测试A主机到B主机的延迟,但是结果延迟非常稳定。
- 怀疑是端口不稳定
- MicroSoft命令工具包PsTools
- 使用
psping -l 1500 -n 300 -h 10 IP2:3306
测试端口稳定性,结果延迟也很稳定。
- 检查系统hosts文件
- 并没有发现会影响3306端口服务的配置。
- 修改配置
- 在my.ini配置文件中[mysqld]区块增加
skip-name-resolve
配置,然后重启数据库。 - 因为会导致域名访问失效,所以并未尝试是否可行。(增加了这个配置会导致MySQL的mysql.user表中Host部分使用localhost配置的用户都无法正常登陆,因为localhost虽然等同于127.0.0.1,但是这是一个域名,增加了禁止域名解析的配置后,会导致所有的域名配置失效,同时所有使用域名访问数据库的方式都会失效)
- 在my.ini配置文件中[mysqld]区块增加
- 查B主机MySQL日志
- 在MySQL安装的实例目录下,可以找到一个名字是
主机名.err
的文本文件,打开以后找到了非常多的这是在主机名解析时通常出现的暂时错误,它意味着本地服务器没有从权威服务器上收到响应。
日志。 - 在这里分析是不是MySQL会对所有请求做一次DNS域名解析,然后再完成响应呢?
- 到主机B的网络设置中检查网络配置,发现IPv4中没有配置DNS服务器地址。
- 在MySQL安装的实例目录下,可以找到一个名字是
解决方案
- 配置DNS服务器地址
- 114.114.114.114 & 114.114.115.115
- 配置完毕以后保存并关闭设置。
- 使用主机A再次测试与主机B的MySQL连接稳定性,发现没有断联的情况,问题解决。
总结
就是因为MySQL的机制在收到请求以后,会走一遍DNS域名解析,哪怕全程都使用IP来访问,也会走DNS解析,需要配置对了系统的DNS域名解析服务器。
标签:IP,配置,主机,xxx,主机名,MySQL,服务器 From: https://www.cnblogs.com/NyanKoSenSei/p/18539365