zoukankan      html  css  js  c++  java
  • 连接mysql慢或者多台服务器ping不通mysql

    异常:“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。

  • 相关阅读:
    Centos 卸载 MySQL
    Kafka体系架构、命令、Go案例
    Go 平滑重启(优雅重启)
    etcd集群数据迁移至新集群
    ubuntu 20.04使用TLSv1
    mybatis拦截器对SQL处理,数据权限逻辑控制
    java敏感字查找和替换
    SpringBoot自定义validation验证
    java使用druid解析器解析SQL语句
    国产数据库人大金仓 KingbaseES V8 R2 在 x86_64 Linux 安装过程
  • 原文地址:https://www.cnblogs.com/start-fxw/p/10488841.html
Copyright © 2011-2022 走看看