天天看點

mysql的subsys locked_mysqld dead but subsys locked 的解決辦法

項目使用的mysql資料突然宕掉了,使用ps  -ef|grep mysql ,沒有發現mysql的程序,隻有一些使用了mysql的項目的程序。

資料庫腳本目錄:/usr/bin/mysql

mysqld目錄:/etc/init.d/mysqld

1、檢查mysql服務狀态:

[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,發現如下日志:

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端口占用情況:

[root@ init.d]# netstat -apn|grep 3360

沒有占用3360端口的程序

[root@ init.d]# lsof -i:3360

也沒有占用3360端口的程序

4、關閉所有使用了該mysql的項目,然後執行:killall  mysql

5、啟動資料庫:/etc/init.d/mysqld start

竟然啟動成功了!