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

MyISAM 表損壞成因、症狀與修復完整指南

     編輯:MySQL 資料庫相關知識

常見損壞成因

  • mysqld 寫入過程中被強制終止(kill -9、OOM Killer)。
  • 作業系統意外關機(斷電、崩潰)。
  • 硬體故障(磁碟壞軌、記憶體錯誤)。
  • 外部工具(如 myisamchk)在伺服器修改表時並行操作。
  • MySQL/MyISAM 程式碼本身的 Bug。

典型症狀

  • 查詢報錯:Incorrect key file for table: '...'. Try to repair it
  • 查詢找不到本應存在的行,或回傳不完整結果集。

檢測與修復工具

場景指令
伺服器運行中(SQL 層)CHECK TABLE tbl_name; / REPAIR TABLE tbl_name;
伺服器離線(檔案層)myisamchk tbl_name.MYI / myisamchk -r tbl_name.MYI

頻繁損壞的根因排查

  1. 查閱錯誤日誌,搜尋最近的 restarted mysqld 訊息 → 若有,損壞多因伺服器崩潰導致。
  2. 若無崩潰記錄,損壞發生於正常運作 → 可能是 MySQL Bug,需構建可重現測試案例回報官方。

預防最佳實踐

  • 生產環境務必啟用 --log-error 記錄錯誤日誌。
  • 定期備份(mysqldump 或檔案級快照)。
  • 避免在伺服器運行時直接用外部工具操作表檔案。
  • 硬體層面:使用 ECC 記憶體、RAID 冗餘、UPS 防斷電。
  • 重大版本升級前在測試環境驗證相容性。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved