MyISAM 表損壞時,官方工具 myisamchk(MyISAM)與 isamchk(舊 ISAM)提供分級修復方案。建議按順序嘗試,由輕到重。
| 階段 | 指令 | 說明 |
|---|---|---|
| 1. 輕量快速修復 | myisamchk --recover --quick tbl_name | 只修復索引樹,不動資料檔,速度最快 |
| 2. 標準修復 | myisamchk --recover tbl_name | 移除 --quick,重建資料檔與索引,較徹底 |
| 3. 安全模式修復 | myisamchk --safe-recover --quick tbl_name | 用較舊、較穩定演算法,適用前兩者失效情況 |
| 4. 完全安全修復 | myisamchk --safe-recover tbl_name | 最徹底但最慢,終極手段 |
systemctl stop mysql 或 mysqladmin shutdown,避免檔案被鎖定。.MYD(資料)、.MYI(索引)、.frm(結構)全備份。/var/lib/mysql/db_name/。InnoDB 不支援 myisamchk。損壞時請嘗試:
innodb_force_recovery=1~6 啟動參數強制啟動導出資料。mysqldump 導出後重建表。CHECK TABLE 早期發現問題。sync_binlog=1、innodb_flush_log_at_trx_commit=1 保障寫入安全。