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

MySQL 啟動失敗與備份失敗常見問題排查實戰

     編輯:MySQL 綜合教學

MySQL 啟動失敗與備份失敗常見問題排查實戰

線上環境重啟後 MySQL 無法啟動、mysqldump 備份報錯「表不存在」卻能查到表,是運維高發痛點。本文結合實戰案例,系統梳理啟動失敗六大原因及備份失敗的表元數據不一致修復方案。

一、MySQL 啟動失敗:從 PID 文件到磁盤空間

現象:service mysql start 報錯 MySQL server PID file could not be found!、The server quit without updating PID file。錯誤日志顯示 mysqld got signal 11,無明顯業務錯誤。

排查步驟:

  1. 檢查磁盤空間:執行 df -h 發現根分區 /dev/sda1 100% 滿載,導致 MySQL 無法寫入 PID、Socket、臨時文件。
  2. 解決方案:修改 /etc/my.cnf 中 datadir 指向空閒分區(如 /mnt/backup),遷移數據目錄。遷移注意:cp -a 或 tar 保留權限,大數據量必須壓縮傳輸,目標服務器 MySQL 版本需一致。

其他五大常見原因及修復:

原因現象解決命令
PID 文件無寫權限 啟動報權限錯誤 chown -R mysql:mysql /mydata/data/
殘留 mysqld 進程 端口佔用/鎖衝突 ps -ef | grep mysqld → kill -9 PID
二次安裝殘留 mysql-bin.index 啟動卡住/報錯 rm -f /data/mysql-bin.index
skip-federated 參數未註釋 錯誤日志 unknown option '--skip-federated' 編輯 my.cnf 註釋該行
CentOS SELinux 阻攔 無明顯錯誤但啟動失敗 sed -i 's/SELINUX=enforcing/SELINUX=disabled/' /etc/selinux/config 並重啟

二、mysqldump 備份失敗:幽靈表與元數據不一致

現象:mysqldump fx > fx.sql 報錯 Table 'user_suggest_report' doesn't exist when using LOCK TABLES。加 --skip-lock-tables 仍報 Couldn't read status information for table vote_results、Table 'fx.user_suggest_report' doesn't exist (1146)。但 SHOW TABLES; 明明能看到該表。

根因分析:.frm 文件存在,但 InnoDB 內部數據字典中無該表元數據(如誤刪 .ibd、DDL 中斷、崩潰恢復不全),導致 Server 層與引擎層元數據不一致,「幽靈表」阻塞備份。

修復步驟:

  1. 進入數據目錄:cd /var/lib/mysql/fx/(確認 datadir)。
  2. 移走幽靈表結構文件:mv user_suggest_report.frm /data/backup/。
  3. 重啟 MySQL:service mysqld restart,Server 層感知表已刪除。
  4. 重新備份:mysqldump fx > fx.150109.sql 成功。

預防建議:定期運行 pt-table-checksum 檢測主從一致性,避免 DDL 操作中斷,重要變更前做快照備份。

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