MySQL数据库远程连接很慢的解决方案

 更新时间:2016年12月09日 08:35:40   作者:linuxidc  
本文给大家分享的是MySQL数据库远程连接很慢的解决方法,简单的说就是开启skip-name-resolve,非常的简单实用,有需要的小伙伴可以参考下

有次同事提出开发使用的MySQL数据库连接很慢,因为我们的MySQL开发数据库是单独一台机器部署的,所以认为可能是网络连接问题导致的。

在进行 ping和route后发现网络通信都是正常的,而且在MySQL机器上进行本地连接发现是很快的,所以网络问题基本上被排除了。以前也遇到过一次这样的问题,可后来就不知怎么突然好了,这次又遭遇这样的问题,所以想看看是不是MySQL的配置问题。在查询MySQL相关文档和网络搜索后,发现了一个配置似乎可以解决这样的问题,就是在MySQL的配置文件中增加如下配置参数:

[mysqld]

skip-name-resolve

在Linux下配置文件是/etc/my.cnf,在windows下配置文件是MySQL安装目录下的my.ini文件。注意该配置是加在 [mysqld]下面,在更改配置并保存后,然后重启mysql并远程连接测试,一切恢复如初。该参数的官方解释信息如下:

复制代码 代码如下:
How MySQL uses DNS

When a new thread connects to mysqld, mysqld will spawn a new thread to handle the request. This thread will first check if the hostname is in the hostname cache. If not the thread will call gethostbyaddr_r() and gethostbyname_r() to resolve the hostname.

If the operating system doesn't support the above thread-safe calls, the thread will lock a mutex and call gethostbyaddr() and gethostbyname() instead. Note that in this case no other thread can resolve other hostnames that is not in the hostname cache until the first thread is ready.

You can disable DNS host lookup by starting mysqld with –skip-name-resolve. In this case you can however only use IP names in the MySQL privilege tables.

If you have a very slow DNS and many hosts, you can get more performance by either disabling DNS lookop with –skip-name-resolve or by increasing the HOST_CACHE_SIZE define (default: 128) and recompile mysqld.

You can disable the hostname cache with –skip-host-cache. You can clear the hostname cache with FLUSH HOSTS or mysqladmin flush-hosts.

If you don't want to allow connections over TCP/IP, you can do this by starting mysqld with –skip-networking.

根据文档说明,如果你的mysql主机查询DNS很慢或是有很多客户端主机时会导致连接很慢,由于我们的开发机器是不能够连接外网的,所以DNS解析是不可能完成的,从而也就明白了为什么连接那么慢了。同时, 请注意在增加该配置参数后,mysql的授权表中的host字段就不能够使用域名而只能够使用 ip地址了 ,因为这是禁止了域名解析的结果。

相关文章

  • MYSQL中解析json格式数据方法示例

    MYSQL中解析json格式数据方法示例

    这篇文章主要给大家介绍了关于MYSQL中解析json格式数据的相关资料,JSON是一种轻量级的数据交换格式,采用了独立于语言的文本格式,类似XML,但是比XML简单,易读并且易编写,需要的朋友可以参考下
    2023-08-08
  • Mysql数据库分库和分表方式(常用)

    Mysql数据库分库和分表方式(常用)

    本文主要给大家介绍Mysql数据库分库和分表方式(常用),涉及到mysql数据库相关知识,对mysql数据库分库分表相关知识感兴趣的朋友一起学习吧
    2016-03-03
  • MySQL判断列的值既不为NULL又不为空字符串的问题

    MySQL判断列的值既不为NULL又不为空字符串的问题

    这篇文章主要介绍了MySQL判断列的值既不为NULL又不为空字符串的问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2023-08-08
  • mysql 复制表结构和数据实例代码

    mysql 复制表结构和数据实例代码

    这篇文章主要介绍了mysql 复制表结构和数据实例代码的相关资料,需要的朋友可以参考下
    2016-10-10
  • 解决Mysql报Invalid default value for ''''operate_time''''错误的问题

    解决Mysql报Invalid default value for ''''operate_time''''错误的问题

    这篇文章主要介绍了解决Mysql报Invalid default value for 'operate_time'错误的问题,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2021-02-02
  • win10 64位 MySQL8.0下载和安装教程图解

    win10 64位 MySQL8.0下载和安装教程图解

    这篇文章主要介绍了MySQL下载和安装 win10 64位 MySQL8.0的教程图解,本文图文并茂给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下
    2019-09-09
  • mysql alter添加列的实现方式

    mysql alter添加列的实现方式

    这篇文章主要介绍了mysql alter添加列的实现方式,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-01-01
  • MySQL表分区配置入门指南

    MySQL表分区配置入门指南

    这篇文章主要为大家介绍了MySQL表分区配置入门指南,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-05-05
  • mysql 实现设置多个主键的操作

    mysql 实现设置多个主键的操作

    这篇文章主要介绍了mysql 实现设置多个主键的操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2021-02-02
  • CentOS安装mysql5.7 及简单配置教程详解

    CentOS安装mysql5.7 及简单配置教程详解

    这篇文章主要介绍了CentOS安装mysql5.7 及简单配置教程详解,非常不错,具有参考借鉴价值,需要的朋友可以参考下
    2017-02-02

最新评论