mysql 测试环境过一段时间就连接不上

mysql 测试环境过一段时间就连接不上

说明:

测试环境是阿里云RDS mysql同步过去的用的是innobackupex恢复的,设置skip-grant-table免密码登录,版本和阿里云rds 保持一致

启动方式为mysqld--defaults-file=/20180403/backup-my.cnf --user=mysql --datadir=/20180403/ &

问题出现频率:频繁一两天就出现一次,临时解决方法就是重启一下mysql 就可以了

这个问题困扰我很久,刚开始通过分析日志没有出来什么问题

1.      分析mysql 日志没有发现问题(没有明显的报错)

2.      查看操作系统日志也没有异常

3.      操作系统资源也正常排除OOM

4.      网上搜索也没有相似的案例

5.      排除mysql版本的问题

一时间陷入绝境,只能每次出现问题时,重启一下

先在mysql上部署了OSW资源监控脚本

问题昨天又重新出现了,打算在重新从头开始分析一下

1.      首先mysql的错误日志

Events status:

LLA = Last Locked At  LUA = Last Unlocked At

WOC = Waiting On Condition  DL = Data Locked

The Event Scheduler is disabled

2018-05-08 20:54:50 8836 [Warning]IP address '172.17.0.16' could not be resolved: Name or service not known

根据日志看不出什么

2.      打开通用日志,也没有看到有用的信息

3.      通过strace 跟踪mysql登录也没有看到有用信息(能登录上的跟踪和不能登录的跟踪对比)

4.      查看OSW资源日志 top的iostat 都正常

5.      最后查看OSW输出的PS监控信息

发现重要信息

mysql    8836  7646  19 0.2  2.2 8790648 1473768 poll_s S14:00:24 00:01:11 mysqld --defaults-file=/home/mysqldata/20180425/backup-my.cnf--user=mysql --datadir=/home/mysqldata/20180425

mysql    8836  7646  19 0.2  2.2 8790648 1473768 poll_s S14:00:24 00:01:11 mysqld --defaults-file=/home/mysqldata/20180425/backup-my.cnf--user=mysql --datadir=/home/mysqldata/20180425

mysql    8836     1  19 0.2  2.2 8790648 1474180 poll_s S14:00:24 00:01:11 mysqld --defaults-file=/home/mysqldata/20180425/backup-my.cnf--user=mysql --datadir=/home/mysqldata/20180425

mysql    8836     1  19 0.2  2.2 8790648 1474180 poll_s S14:00:24 00:01:11 mysqld --defaults-file=/home/mysqldata/20180425/backup-my.cnf--user=mysql --datadir=/home/mysqldata/20180425

mysql    8836     1  19 0.2  2.2 8790648 1474180 poll_s S14:00:24 00:01:11 mysqld --defaults-file=/home/mysqldata/20180425/backup-my.cnf--user=mysql --datadir=/home/mysqldata/20180425

mysql    8836     1  19 0.2  2.2 8790648 1474180 poll_s S14:00:24 00:01:11 mysqld --defaults-file=/home/mysqldata/20180425/backup-my.cnf--user=mysql --datadir=/home/mysqldata/20180425

mysql    8836     1  19 0.2  2.2 8790648 1474180 poll_s S14:00:24 00:01:11 mysqld --defaults-file=/home/mysqldata/20180425/backup-my.cnf--user=mysql --datadir=/home/mysqldata/20180425

mysql     8836    1  19  0.2 2.2 8790648 1474180 poll_s S 14:00:24 00:01:11 mysqld--defaults-file=/home/mysqldata/20180425/backup-my.cnf --user=mysql--datadir=/home/mysqldata/20180425

mysqld进程的ppid 从7646 变成1了

7646进程是-bash

root      7646 7644  19  0.0 0.0 120892  3532 do_wai S 13:50:5100:00:00 –bash

7646的父进程是 root@pts/4

root      7644    1  19  0.0 0.0 150400  5432 poll_s S 13:50:5100:00:00 sshd: root@pts/4

也就是说-bash进程挂了导致mysqld父进程变成1,导致mysql出问题了

知道问题了,就好解决问题了,把mysql改以服务的形式启动就可以了,这样mysqld父进程就变成1了

改了之后观察,再也没有出现mysql 连接不上的问题了

猜你喜欢

转载自blog.csdn.net/weiwangsisoftstone/article/details/80264858