中午刚想趴一会,不料锅从天降!!!Mysql连不上了。。。。。。。

现象如下:

现象1:登录mysql所在服务器,连接MySQL 成功;

现象2:通过客户端远程连接MySQL,返回失败,如下:

Enter password:
ERROR 2003 (HY000): Can't connect to MySQL server on 'xxx' (111)

现象三:通过某些客户端可以连,就是响应极慢。

现象四:通过客户端可以ping通,但是telnet 数据库端口失败。且无论ping还是telnet,数据库服务器均收不到数据包。

客户端: tcpdump -nn -i eth0 icmp  和  执行ping 服务端ip的操作
服务端: tcpdump -i br0 -nn icmp and host 客户端ip

现象五:show processlist 有好多unauthenticated user的用户(参考参考连接所述)

mysql> show processlist;
+-----+----------------------+---------------------+---------------------+---------+------+-------+------------------+
| Id | User | Host | db | Command | Time | State | Info |
+-----+----------------------+---------------------+---------------------+---------+------+-------+------------------+
| 2 | root | 192.168.1.60:43961 | xxx | Sleep | 39 | | NULL |
| 7 | root | 192.168.1.34:41155 | xxx | Sleep | 7 | | NULL |
| 30 | root | 192.168.20.7:38282 | xxx | Sleep | 6 | | NULL |
| 44 | root | 192.168.20.7:38308 | xxx | Sleep | 6 | | NULL |
| 106 | root | 10.88.9.23:61181 | NULL | Sleep | 19 | | NULL |
| 110 | unauthenticated user | 10.88.128.22:38648 | NULL | Connect | NULL | login | NULL |
| 111 | unauthenticated user | 10.88.10.185:57430 | NULL | Connect | NULL | login | NULL |
| 112 | unauthenticated user | 10.88.11.196:56473 | NULL | Connect | NULL | login | NULL |
| 113 | unauthenticated user | 10.88.128.22:38650 | NULL | Connect | NULL | login | NULL |
| 114 | unauthenticated user | 10.88.10.185:57439 | NULL | Connect | NULL | login | NULL |
| 115 | unauthenticated user | 10.88.128.117:58555 | NULL | Connect | NULL | login | NULL |
| 116 | unauthenticated user | 10.88.128.22:38653 | NULL | Connect | NULL | login | NULL |
| 117 | unauthenticated user | 10.88.10.185:57444 | NULL | Connect | NULL | login | NULL |
| 118 | unauthenticated user | 10.88.128.22:38655 | NULL | Connect | NULL | login | NULL |
| 119 | unauthenticated user | 10.88.128.22:38657 | NULL | Connect | NULL | login | NULL |
| 120 | unauthenticated user | 10.88.10.185:57453 | NULL | Connect | NULL | login | NULL |
| 122 | unauthenticated user | 10.88.128.22:38659 | NULL | Connect | NULL | login | NULL |
| 123 | unauthenticated user | 10.88.128.22:38661 | NULL | Connect | NULL | login | NULL |
| 124 | unauthenticated user | 10.88.10.185:57458 | NULL | Connect | NULL | login | NULL |
| 125 | unauthenticated user | 192.168.20.45:47091 | NULL | Connect | NULL | login | NULL |
| 126 | unauthenticated user | 192.168.20.45:47092 | NULL | Connect | NULL | login | NULL |
| 127 | unauthenticated user | 192.168.20.45:47093 | NULL | Connect | NULL | login | NULL |
| 128 | root | localhost | NULL | Query | 0 | NULL | show processlist |
| 129 | unauthenticated user | 10.88.128.22:38664 | NULL | Connect | NULL | login | NULL |
+-----+----------------------+---------------------+---------------------+---------+------+-------+------------------+
24 rows in set (0.01 sec)

问题解决办法:

第一步:修改mysql的my.conf配置文件,在[mysqld]模块下增加,停止mysql的域名反向解析。之后重启数据库,此项解决大多数问题

skip-name-resolve

第二步: 重启客户端的网卡,再次连接mysql,搞定剩下的一小部分问题。

#service network restart
Shutting down interface eth0: [ OK ]
Shutting down loopback interface: [ OK ]
Bringing up loopback interface: [ OK ]
Bringing up interface eth0: Determining if ip address 10.88.128.66 is already in use for device eth0...
[ OK ]

结论

1.  针对MySQL的对连接的客户端进行DNS反向解析的处理,暂不晓得本质原因。网上暂没有搜到本质信息。参考【参考连接】

2. 网卡的问题,网管怀疑客户端的网卡自娱自乐了。。。。ping的时候压根没有走到目的地就返回了

【参考连接】:https://segmentfault.com/a/1190000002682272

今天早上开发那边发现mysql连接很慢,登陆到服务器上查看服务器日志都是正常的,无可疑记录,刚刚还好好的,怎么突然出现这个问题,于是登陆到mysql服务器上,查看下进程,发现有很多这样的连接:
| unauthenticated user | 192.168.10.6: | NULL | Connect | NULL | login | NULL
| unauthenticated user | 192.168.10.6: | NULL | Connect | NULL | login | NULL
........
放狗,放狗。。。
原因是由于mysql对连接的客户端进行DNS反向解析。
有2种解决办法:
,把client的ip写在mysql服务器的/etc/hosts文件里,随便给个名字就可以了。
,在 my.cnf 中加入 –skip-name-resolve 。
对于第一种方法比较笨,也不实用,那么 skip-name-resolve 选项可以禁用dns解析,但是,这样不能在mysql的授权表中使用主机名了,只能使用IP。
我理解mysql是这样来处理客户端解析过程的,
,当mysql的client连过来的时候,服务器会主动去查client的域名。
,首先查找 /etc/hosts 文件,搜索域名和IP的对应关系。
,如果hosts文件没有,则查找DNS设置,如果没有设置DNS服务器,会立刻返回失败,就相当于mysql设置了skip-name-resolve参数,如果设置了DNS服务器,就进行反向解析,直到timeout。
有一点不明白,为什么连接mysql服务器内网的ip地址也要进行DNS反向解析,而这时候DNS解析返回给mysql的是什么呢?
望高手解答。

如有错误,还请各位数据库大神不吝赐教。

谢谢

Mysql异常问题排查与处理——mysql的DNS反向解析和客户端网卡重启的更多相关文章

  1. SELinux导致PHP连接MySQL异常Can't connect to MySQL server的解决方法

    原文摘自:http://www.jb51.net/article/52581.htm 这篇文章主要介绍了SELinux导致PHP连接MySQL异常Can't connect to MySQL serv ...

  2. Linux - mysql 异常:登录不上mysql数据库

    问题描述 重启虚拟机之后,用命令 mysql -u root -p 登录不上 mysql 数据库,页面显示: 但是,用命令 service mysqld status 可以查看状态 解决方案 1.查看 ...

  3. MySQL异常:Caused by: com.mysql.jdbc.exceptions.MySQLTimeoutException: Statement cancelled due to timeout or client request

    Caused by: com.mysql.jdbc.exceptions.MySQLTimeoutException: Statement cancelled due to timeout or cl ...

  4. SELinux导致无法访问外网,PHP连接MySQL异常Can't connect to MySQL server、redis程序访问提示Redis server went away的解决方法

    今天上班遇到的问题,新配的Linux服务器,php.Apache和一系列扩展插件装好后,在本地好好的程序移上去就一直抱数据库连接错误,而用sql命令却能连接上去, 做了一个简单的判断数据库连接页面还是 ...

  5. 问题MySQL Error (2013): Lost connection to MySQL server at waiting for initial communication packet

    错误说明: SQL Error (2013): Lost connection to MySQL server at 'waiting for initial communication packet ...

  6. 一则线上MySql连接异常的排查过程

    Mysql作为一个常用数据库,在互联网系统应用很多.有些故障是其自身的bug,有些则不是,这里以前段时间遇到的问题举例. 问题 当时遇到的症状是这样的,我们的应用在线上测试环境,JMeter测试过程中 ...

  7. mysql报错排查总结

    mysql报错: [root@zabbix ~]# mysql ERROR 2002 (HY000): Can't connect to local MySQL server through sock ...

  8. Mysql 高负载排查思路

    Mysql 高负载排查思路 发现问题 top命令 查看服务器负载,发现 mysql竟然百分之两百的cpu,引起Mysql 负载这么高的原因,估计是索引问题和某些变态SQL语句. 排查思路 1. 确定高 ...

  9. Mysql异常:MySQLNonTransientConnectionException: No operations allowed after statement closed

    Mysql异常:MySQLNonTransientConnectionException: No operations allowed after statement closed MySQLNonT ...

随机推荐

  1. mysql 1449 : The user specified as a definer ('root'@'%') does not exist

    1)创建试图时抛出此错误信息,如下图所示: 2)从网上搜索了一下,是SQL权限问题,通过如下的方式便可以解决: 3)再次执行创建视图的语句,验证一下问题是否已经解决,可以了,如下所示: 4)参考如下所 ...

  2. C#多线程JOIN方法初探

    [说明:刚接触多线程时,弄不明白Join()的作用,查阅了三本书,都不明不白.后来经过自己的一番试验,终于弄清了Join()的本质.大家看看我这种写法是否易懂,是否真的写出了Join()的本质,多提宝 ...

  3. opencv 中出现错误 -215:Assertion failed

    cv2.error: OpenCV(4.0.1) D:\Build\OpenCV\opencv-4.0.1\modules\imgproc\src\color.cpp:181: error: (-21 ...

  4. numpy 中的axis轴问题

    在numpy库中,axis轴的问题比较重要,不同的值会得到不同的结果,为了便于理解,特此将自己的理解进行梳理 为了梳理axis,借助于sum函数进行! a = np.arange(27).reshap ...

  5. 安装Eclipse Maven插件的方法

    安装IDE Plugins的方法有很多.其一:在线安装,通过Help-->Install New Software的方式,输入HTTP地址来安装,简单易操作,但是也优缺点,就是下载速度慢,或者有 ...

  6. 跟我学SharePoint 2013视频培训课程——使用垃圾箱(5)

    课程简介 第5天,在SharePoint 2013中 使用垃圾箱 视频 SharePoint 2013 交流群 41032413

  7. php file_get_contents读取大容量文件方法

      当我们遇到文本文件体积很大时,比如超过几十M甚至几百M几G的大文件,用记事本或者其它编辑器打开往往不能成功,因为他们都需要把文件内容全部放到内存里面,这时就会发生内存溢出而打开错误,遇到这种情况我 ...

  8. Java – How to convert String to Char Array

    Java – How to convert String to Char ArrayIn Java, you can use String.toCharArray() to convert a Str ...

  9. ELK日志相关

    转: Logstash 讲解与实战应用 原创qw871122016-08-20 16:06:07评论(1)40217人阅读 一.Logstash 介绍 Logstash 是一款强大的数据处理工具,它可 ...

  10. C#基础第三天-作业-集合-冒泡排序-模拟名片

    1.名片:用两种集合(ArrayList/List<>)去输出余下信息.身份证号码,电话号码,性别,姓名,身高,年龄,体重.需求:根据 姓名 去查询某一行数据.如果集合中不存在提示(“自定 ...