ICode9

精准搜索请尝试: 精确搜索
首页 > 数据库> 文章详细

连接mysql慢或者多台服务器ping不通mysql

2019-03-07 12:37:46  阅读:240  来源: 互联网

标签:缓存 skip ping 主机名 线程 mysql mysqld 多台


异常:“OperationalError:(1042,”无法获取您的地址的主机名“)

  或者 多主机,dns慢,有的ping不通mysql,有的连接慢

  或者 重启某些服务,突然起来不来,mysql连接超时

分析:有防火墙?关闭 systemctl stop firewalld 没啥用,再看看

处理:在mysql配置文件 /etc/mysql/my.cnf 添加

skip-host-cache
skip-name-resolve

原因: 

当新的客户连接mysqld时,mysqld创建一个新的线程来处理请求。该线程先检查是否主机名在主机名缓存中。如果不在,线程试图解析主机名:

·         如果操作系统支持线程安全gethostbyaddr_r ()和gethostbyname_r()调用,线程使用它们来执行主机名解析。

·         如果操作系统不支持线程安全调用,线程锁定一个互斥体并调用gethostbyaddr()和gethostbyname()。在这种情况下,在第1个线程解锁互斥体前,没有其它线程可以解析不在主机名缓存中的主机名。

   重启某些服务后,缓存不匹配,导致连接不上

    1、 可以用--skip-name-resolve选项启动mysqld来禁用DNS主机名查找。然而,在这种情况下,你只可以使用MySQL中的授权表中的IP号。

    2、如果你有一个很慢的DNS和许多主机,你可以通过用--skip-name-resolve禁用DNS查找或增加HOST_CACHE_SIZE定义(默认值:128)并重新编译mysqld来提高性能。

    3、可以用--skip-host-cache选项启动服务器来禁用主机名缓存。要想清除主机名缓存,执行FLUSH HOSTS语句或执行mysqladmin flush-hosts命令。

    4、如果你想要完全禁止TCP/IP连接,用--skip-networking选项启动mysqld。

 

标签:缓存,skip,ping,主机名,线程,mysql,mysqld,多台
来源: https://www.cnblogs.com/start-fxw/p/10488841.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有