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

MySQL 表故障檢測與修復指南:myisamchk/isamchk 實戰操作手冊

     編輯:MySQL 綜合教學

故障處理標準流程

  1. 檢查表錯誤 → 通過則結束,否則進入修復。
  2. 修復前必備份表檔 (.MYD/.MYI 或 .ISD/.ISM) 以防修復失敗資料全損。
  3. 執行修復。
  4. 修復失敗則從備份或 Binlog 恢復。

工具選擇

  • myisamchk:MyISAM 表 (.MYI 索引、.MYD 資料)。
  • isamchk:ISAM 表 (.ISM、.ISD) (舊版遺留,現少用)。

基本用法

# 檢查/修復單表
myisamchk [options] tbl_name
# 批次處理整庫
myisamchk [options] /path/to/db_dir/*.MYI
# 所有庫所有表
myisamchk [options] /path/to/datadir/*/*.MYI

三種檢查層級

層級參數特點
標準 (預設)無 / -s / --silent發現 99.99% 錯誤,速度快,不檢查資料檔損壞
中等-m / --medium-check比標準徹底,比擴展快,較少用
擴展 (最徹底)-e / --extend-check逐行逐鍵驗證,極慢,大表慎用,搭配 -v 顯示前 20 錯誤

常用輔助參數

  • -i, --information:輸出統計資訊 (索引基數、資料長度等)。
  • -C, --check-only-changed:僅檢查上次檢查後被修改的表。
  • -v, --verbose:詳細輸出。

修復操作

# 標準修復 (保留資料)
myisamchk --recover tbl_name
# 或
myisamchk -r tbl_name

# 強力修復 (若標準失效,可能丟資料)
myisamchk --safe-recover tbl_name
# 或
myisamchk -o tbl_name

# 強制修復 (覆蓋臨時檔)
myisamchk --force --recover tbl_name

關鍵注意事項 (必讀)

  1. 停止 MySQL 服務 或確保無連線存取該表 (建議停庫),否則工具與 Server 同時操作檔案會導致索引損壞。
  2. 以 mysql 使用者身份執行,避免檔案擁有權變更導致 Server 無法讀寫。
  3. Windows 平台無法使用通配符路徑,需逐一指定檔案。
  4. 修復前 複製 .MYD/.MYI 到安全位置。

SQL 層面檢查與修復 (無需停庫)

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