MyISAM 表因無事務、文件級鎖、索引文件與數據文件分離,極易在斷電、殺進程、磁盤故障時損壞。myisam_recover_options (舊名 myisam_recover) 讓 MySQL 啟動時自動檢測並修復損壞的 MyISAM 表,減少人工干預。
編輯 /etc/my.cnf [mysqld] 區段:
myisam_recover_options = FORCE,BACKUP
重啟生效:systemctl restart mysqld。
| 模式 | 行為 | 風險 | 推薦場景 |
|---|---|---|---|
| BACKUP | 修復前自動備份 .MYD 為 .BAK | 佔用磁盤空間 | 強烈推薦,保留現場數據供事後分析 |
| FORCE | 即使丟失數據行也強制修復 | 可能丟失少量數據 | 高可用優先、可容忍極少量丟失的日誌/統計表 |
| QUICK | 無刪除塊時跳過行檢查 | 可能遺漏損壞 | 大表加速修復,配合 FORCE 使用 |
| DEFAULT | 不自動修復 | 需人工干預 | 極高數據敏感度、寧可停機也不自動修復 |
,出現 Automatic repair of table 'db.tbl' failed/succeeded 字樣表明生效。
tbl_name-20231001-120000.BAK 文件。mysqldump + Binlog PITR 才是核心保障。TimeoutStartSec 或改用人工 myisamchk -r。myisam_recover_options,舊名會報棄用警告。