萬盛學電腦網

您现在的位置: 萬盛學電腦網 >> 程式設計 >  >> 資料庫 >> MySQL 教學

MySQL 資料庫修復實戰:DBCC CHECKDB 與 myisamchk 修復 MyISAM 表

SQL Server 風格修復(參考)

ALTER DATABASE [dvbbs] SET SINGLE_USER;
DBCC CHECKDB('dvbbs', REPAIR_ALLOW_DATA_LOSS) WITH TABLOCK;
ALTER DATABASE [dvbbs] SET MULTI_USER;

⚠ REPAIR_ALLOW_DATA_LOSS 可能導致資料遺失,務必先備份。

MySQL MyISAM 表修復實戰

phpMyAdmin 修復導致資料遺失後,使用 myisamchk 成功恢復:

# 進入資料目錄
cd /var/lib/mysql/dvbbs

# 修復並排序索引
myisamchk -r -B pw_posts.MYI

# 輸出示例
- recovering (with sort) MyISAM-table 'pw_posts.MYI'
Data records: 1
- Fixing index 1 ... Fixing index 6
Data records: 259889

參數說明

  • -r:恢復模式(修復)
  • -B / --sort-recover:建立臨時排序檔案加速索引重建
  • -q:快速修復(僅修復索引樹,不檢查資料)
  • -f:強制覆蓋舊臨時檔

InnoDB 表修復

InnoDB 有崩潰恢復機制,通常自動修復。若嚴重損壞:

  1. 設定 innodb_force_recovery = 1..6 由低到高嘗試啟動導出資料。
  2. 導出後重建表(CREATE TABLE ... LIKE + INSERT SELECT)。

預防勝於治療

  • 定期 CHECK TABLE、ANALYZE TABLE。
  • 備份策略:全備 + 增量(binlog)+ 異地存放。
  • 硬體層面:RAID、ECC 記憶體、UPS 防止斷電損壞。
copyright © 萬盛學電腦網 all rights reserved