首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 數據庫知識 >  >> MySQL 資料庫 >> MySQL 綜合教學

MySQL PID 文件丟失導致無法啟動/停止/登錄的排查與修復實戰

     編輯:MySQL 綜合教學

MySQL PID 文件丟失導致無法啟動/停止/登錄的排查與修復實戰

生產環境 MySQL 因誤操作導致 PID 文件與 Socket 文件丟失,服務雖存活但管理命令失效、命令行無法登錄。本文記錄完整故障現象、根因分析、修復步驟與預防措施。

故障現象回顧

  • 同事誤執行 /var/lib/mysql/libexec/mysqld restart(以 root 直接啟動進程)→ 報錯退出,但殘留進程佔用 3306 端口。
  • 隨後執行 service mysql restart → 提示 MySQL manager or server PID file could not be found! [FAILED]。
  • 命令行 mysql -u root -p → ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/tmp/mysql.sock'。
  • service mysql status → 正常顯示運行中(PID 文件丟失前狀態)。

根因深度剖析

  1. PID 文件丟失:mysqld 直接啟動非服務腳本管理,未生成 PID 文件;service mysql stop 讀取 PID 文件發送信號失敗。
  2. Socket 文件丟失:服務腳本啟動失敗未創建 Socket,或殘留進程未正確清理 Socket。
  3. 管理腳本依賴:/etc/init.d/mysqld / service mysql 完全依賴 pid-file 和 socket 路徑配置一致。

修復實戰步驟

1. 定位存活進程 PID

ps aux | grep mysql | grep "user=mysql" | grep -v grep | awk '{print $2}'
# 假設輸出 10949

2. 重建 PID 文件

service mysql status  # 應顯示 MySQL running (10949) [OK]
service mysql restart # 應正常 Shutting down / Starting 並生成 socket

4. 驗證命令行登錄

service mysql start
  └─ 讀取 my.cnf [mysqld] pid-file, socket
  └─ 啟動 mysqld_safe → mysqld
  └─ mysqld 創建 pid-file, socket
  └─ 返回成功

service mysql stop
  └─ 讀取 pid-file 獲取 PID
  └─ kill -TERM PID
  └─ 等待進程退出並清理 socket
  └─ 返回成功

mysql -u root -p
  └─ 讀取 my.cnf [client] socket
  └─ 連接 Unix Domain Socket
  └─ 登錄成功

理解依賴鏈,故障時才能精準定環節、補文件、通鏈路。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved