2月23日,中午接到某个电商客户的需求,MYSQL数据库无法启动,对方比较急需恢复,于是中午加班帮他处理,远程到客户LINUX服务器
使用service mysqld start 报错如下:
[root@snsgou mysql]# service mysql restart MySQL server PID file could not be found![失败] Starting MySQL...The server quit without updating PID file (www/server/data/WxHost-610bc8.pid).[失败]

使用传统方法去排查:
1、可能是/usr/local/mysql/data/mysql.pid文件没有写的权限 解决方法 :给予权限,执行 “chown -R

mysql:mysql /var/data” “chmod -R 755 /usr/local/mysql/data”
然后重新启动mysqld!

2、可能进程里已经存在mysql进程 解决方法:用命令“ps -ef|grep
mysqld”查看是否有mysqld进程,如果有使用“kill -9 进程号”杀死,然后重新启动mysqld!

3、可能是第二次在机器上安装mysql,有残余数据影响了服务的启动。
解决方法:去mysql的数据目录/data看看,如果存在mysql-bin.index,就赶快把它删除掉吧,它就是罪魁祸首了。本人就是使用第三条方法解决的!

4、mysql在启动时没有指定配置文件时会使用/etc/my.cnf配置文件,请打开这个文件查看在[mysqld]节下有没有指定数据目录(datadir)。
解决方法:请在[mysqld]下设置这一行:datadir = /usr/local/mysql/data

5、skip-federated字段问题
解决方法:检查一下/etc/my.cnf文件中有没有没被注释掉的skip-federated字段,如果有就立即注释掉吧。

6、错误日志目录不存在 解决方法:使用“chown” “chmod”命令赋予mysql所有者及权限

7、selinux惹的祸,如果是centos系统,默认会开启selinux
解决方法:关闭它,打开/etc/selinux/config,把SELINUX=enforcing改为SELINUX=disabled后存盘退出重启机器试试


用以上方法排查都无果后,于是对MYSQL数据库的错误日志进行排查,根据客户反映的故障时间点,于是发现下面红圈部分的报错日志:
分析:查看故障点的数据库日志报错信息,发现/tmp/mysql.sock.lock这个文件有异常,数据库无法识别,于是整个数据库实例挂掉!
mysql.sock.lock是可读文本文件,记录了MySQL启动的PID,对应套接字文件mysql.sock
于是查看该文件,显示0字节,最后故障的时间点刚好是这个时间,于是备份了这个文件后,决定删除该异常文件:
查看该文件发现确实是空文件,删除该文件后再启动服务可以正常启动:

再次启动MYSQL服务,正常!