MySQL 資料庫在運行過程中可能遭遇資料損壞或遺失,掌握正確的備份與還原方法至關重要。本文以實例說明 MySQL 資料庫的備份、重建與還原流程,特別針對 InnoDB 存儲引擎的日誌檔案處理進行說明。
ib_logfile0 和 ib_logfile1 是 InnoDB 用於事務暫存與回滾的日誌檔案。若在遷移或復原時僅複製 ibdata1 而遺漏這兩個日誌檔,MySQL 將無法啟動,錯誤日誌(.err)中會出現類似 InnoDB: Your database may be corrupt... 或 log文件無法被識別 的訊息。
進入 MySQL bin 目錄,執行:
mysqld-nt --innodb_force_recovery=4
此參數以唯讀方式啟動資料庫,允許備份資料但禁止寫入操作。啟動後請保持該視窗開啟。
另開命令視窗,使用 mysqldump 匯出資料:
mysqldump -u使用者 -p密碼 --opt --add-drop-table 資料庫名稱 > 備份檔案路徑
登入 MySQL 執行:
DROP DATABASE 資料庫名稱;
輸入 QUIT 退出 MySQL,並關閉步驟 1 中以 --innodb_force_recovery=4 啟動的服務視窗。
進入 MySQL data 目錄,刪除除資料夾以外的所有檔案(包含 ibdata1、ib_logfile* 等系統檔案)。
執行 mysqld 正常啟動服務,MySQL 將自動建立新的系統檔案(ibdata1、ib_logfile0/1 等)。
登入 MySQL 執行:
CREATE DATABASE 資料庫名稱;
在命令列執行(非 MySQL 內部):
mysql -u使用者 -p密碼 資料庫名稱 < 備份檔案路徑
--innodb_force_recovery=4 僅供緊急備份使用,不可長期運行。