斷電、kill -9、硬體故障皆可能導致 MyISAM 資料檔損壞。本文詳細說明 myisamchk 檢查/修復流程、**獨佔存取原則** (必須停服務或離線拷貝)、一般/擴展檢查、修復前備份鐵律。
DATADIR/db_name/tbl.frm (定義)、tbl.MYD (資料)、tbl.MYI (索引)。# 單表檢查 (兩種寫法等效)
myisamchk /usr/local/mysql/var/db_name/tbl_name
myisamchk /usr/local/mysql/var/db_name/tbl_name.MYI
# 全庫檢查
myisamchk /usr/local/mysql/var/db_name/*.MYI
# 全實例檢查
myisamchk /usr/local/mysql/var/*/*.MYI
# 擴展檢查 (較慢但更徹底)
myisamchk --extend-check /path/to/tbl_name
myisamchk **必須獨佔** 檔案。若 MySQL 服務正在寫入同一表,myisamchk 會誤判損壞並嘗試修復 → 導致服務崩潰。
正確流程:
service mysql stop)。# 備份資料檔與索引檔
cp /path/to/tbl_name.MYD /backup/
cp /path/to/tbl_name.MYI /backup/