首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫

MySQL 「mysql is not running but lock exists」啟動失敗:清理 lock/pid/log 三步根治

     編輯:MySQL 資料庫相關知識

現象:service mysql status 顯示 mysql is not running but lock exists,實際進程已無,殘留鎖文件誤導監控腳本。

標準清理流程

  1. 刪除鎖文件:rm -f /var/lock/subsys/mysql(CentOS/RHEL)或 /var/lock/mysql(Debian/Ubuntu)。
  2. 刪除 PID 文件:rm -f /var/run/mysqld/mysqld.pid 或 datadir/hostname.pid。
  3. 檢查/清理錯誤日誌:rm -f /var/log/mysqld.log(或 datadir/*.err),舊日誌體積大可能導致啟動卡頓。
  4. 權限修正:chown -R mysql:mysql /var/lib/mysql /var/run/mysqld /var/log/mysqld.log。
  5. 重啟驗證:systemctl start mysqld。

深度排查(反覆出現)

  • 磁盤滿:df -h,清理 ibtmp1、舊 binlog。
  • SELinux/AppArmor:ausearch -m avc | grep mysqld,臨時 setenforce 0 驗證。
  • 配置錯誤:innodb_log_file_size 修改後未刪 ib_logfile* 導致啟動失敗,留下 lock 殘留。
  • 多實例衝突:同機多實例共用 lock 目錄,建議各實例 pid-file/lock-file 獨立路徑。

cPanel/WHM 環境特殊處理

/scripts/mysqlup --force  # 重裝二進制
/scripts/restartsrv_mysql # 服務管理腳本重啟

若仍失敗,檢查 /usr/local/cpanel/3rdparty/bin/mysqladmin 路徑是否正確。

一鍵修復腳本

#!/bin/bash
systemctl stop mysqld
rm -f /var/lock/subsys/mysql /var/run/mysqld/mysqld.pid /var/lib/mysql/*.pid
chown -R mysql:mysql /var/lib/mysql /var/run/mysqld
systemctl start mysqld
systemctl status mysqld
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved