線上 MySQL 服務器斷電導致系統損壞,重裝系統後嘗試通過複製數據目錄文件恢復,發現應用報「Table doesn't exist」,網站無法訪問。
.frm、.MYD、.MYI 三文件獨立,直接複製即可恢復ibdata1 中,僅複製 .frm 結構文件無法識別表數據service mysqld stop
cd /home/mysql_bak/mysql/ # 假設備份在這裡
ls ibdata1 ib_logfile* # 確認核心文件存在
cp /home/mysql_bak/mysql/ibdata1 /usr/local/mysql/data/ibdata1
chown mysql:mysql /usr/local/mysql/data/ibdata1
# 必須刪除舊重做日誌,否則啟動報 LSN mismatch
rm /usr/local/mysql/data/ib_logfile0
rm /usr/local/mysql/data/ib_logfile1
service mysqld start
mysql -u root -p -e "SHOW TABLES FROM business_db;"
| 文件 | 作用 | 備份必要性 |
|---|---|---|
ibdata1 | InnoDB 共享表空間,存放所有表數據、索引、撤銷日誌、系統信息 | 必備 |
ib_logfile* | 重做日誌,崩潰恢復用 | 可刪除,啟動自動重建 |
.frm | 表結構定義 | 必備 |
.ibd | 獨立表空間文件(開啟 innodb_file_per_table 時) | 必備 |
innodb_file_per_table=1**,每表獨立 .ibd 文件,便於單表備份恢復、磁盤空間回收mysqldump 邏輯備份 + 定期物理備份(xtrabackup)雙重保障ibdata1、.frm、.ibd、ib_logfile*(可選)CHECK TABLE、ANALYZE TABLE 修復潛在損壞