mysqld dead but subsys locked的解决办法

2022-06-09 15:06:01 浏览数 (1)

项目使用的mysql数据突然宕掉了,使用ps -ef|grep mysql ,没有发现mysql的进程,只有一些使用了mysql的项目的进程。

数据库脚本目录:/usr/bin/mysql mysqld目录:/etc/init.d/mysqld

1、检查mysql服务状态:

代码语言:javascript复制
[root@ bin]# /usr/bin/mysql status
ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' (2)

[root@ init.d]# /etc/init.d/mysqld status
mysqld dead but subsys locked

对于“mysqld dead but subsys locked” 网上找的资料都是说安装完数据库后没初始化数据造成无法启动的,这里不适用。没办法只有自己摸索了。

2、检查mysql 的pid文件 和socket文件,发现对应目录下没有 这2文件(目录可以通过查看my.cnf配置找到) 这里数据库pid和socket文件目录为:

pid-file:/var/run/mysqld/mysqld.pid socket:/var/lib/mysql/mysql.sock

之前遇到过mysql无法启动,删除pid和socket文件 后就能启动了。

启动数据库:/etc/init.d/mysqld start 提示启动失败

查看日志 cat /var/log/mysqld.log,发现如下日志:

代码语言:javascript复制
130708 12:36:04 [ERROR] Can't start server: Bind on TCP/IP port: Address already in use
130708 12:36:04 [ERROR] Do you already have another mysqld server running on port: 3306 ?
130708 12:36:04 [ERROR] Aborting

日志上提示端口被占用了

3、检查3360端口占用情况:

代码语言:javascript复制
[root@ init.d]# netstat -apn|grep 3360
[root@ init.d]# lsof -i:3360

4、关闭所有使用了该mysql的项目,然后执行:killall mysql

5、启动数据库:/etc/init.d/mysqld start

竟然启动成功了!

0 人点赞