在迁移一套应用的时候最近碰到了一个问题,这套应用使用的是mysql数据库,应用的服务器没有换,数据库服务器更换了一台机器。数据库和应用启动都是正常的,但是就是应用打开的时候特别慢。一直以为是应用端出了问题,但是怎么查都没有看到不正常的地方。

后 来就怀疑数据库服务器有问题,因为数据库服务器是更换过的,而应用保持原来的状态是没有动过的。在mysql的日志中发现这样的错误信息 [Warning] IP address '192.168.1.21' could not be resolved: Name or service not known,每次打开应用都会产生一条错误。
数据库服务器上配置了外部的DNS,但是应用并没有发布出去,host文件中也没有相关的记录,主机名解析不了也是可以理解的,怎么能是mysql绕开这个解析呢?

在 mysql的网站上看到,可以在启动mysql的时候指定启动参数--skip-name-resolve,或者在mysql的配置文件my.cnf中 mysql的选项下面添加skip-name-resolve,重启mysql都可以彻底解决这个问题。要看清楚是mysql配置文件my.cnf的 mysql的选项,不是mysql选项。我第一次添加
就加到mysql选项了,启动时没有任何问题的。但是登录数据库的时候会报无效的参数,导致无法登录的。

skip- name-resolve参数的意思是禁止MySQL对外部连接进行DNS解析,使用这一选项可以消除MySQL进行DNS解析的时间,使客户端连接 mysql服务器的速度有一定的提升。但也需要注意,如果开启该选项,则所有远程客户端主机连接数据库服务器都要使用IP地址方式,否则MySQL将无法 正常处理连接请求!