萬盛學電腦網

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

MySQL 1067 錯誤無法啟動:InnoDB 日誌損壞修復與資料救援實戰

MySQL 服務啟動失敗 1067:進程意外終止

Windows 事件檢視器顯示 Error 1067: The process terminated unexpectedly,通常因 **InnoDB 日誌檔損壞** 或 **資料目錄不一致** 導致。

核心修復流程(資料可接受遺失最近交易)

  1. 停止服務:net stop mysql
  2. 備份關鍵檔案**(建議先複製到安全位置)**:
datadir/
├── ibdata1          # 系統表空間
├── ib_logfile0      # Redo log 0
├── ib_logfile1      # Redo log 1
├── mysql/           # 系統庫
└── user_db/         # 使用者資料庫
  1. 刪除/移動損壞的 InnoDB 日誌與表空間**:
    # 僅刪除 redo log(保留資料,可能丟失未提交交易)
    move ib_logfile0 ib_logfile0.bak
    move ib_logfile1 ib_logfile1.bak
    
    # 若仍失敗,刪除 ibdata1(⚠️ 所有 InnoDB 表結構與資料全失,需從備份恢復)
    move ibdata1 ibdata1.bak
  2. 啟動服務**:MySQL 會自動重建 ib_logfile0/1 與 ibdata1:
net start mysql
  1. 從備份恢復資料**
mysql -u root -p db_name < backup.sql

保守修復嘗試(優先嘗試,保留資料)

  1. 檢查錯誤日誌:data/hostname.err
  2. 嘗試 InnoDB 強制恢復模式(my.ini):
[mysqld]
innodb_force_recovery = 1  # 1=SRV_FORCE_IGNORE_CORRUPT ~ 6=SRV_FORCE_NO_LOG_REDO
# 由小到大嘗試,備份出資料後移除參數正常啟動

預防 1067 復發

  • 設定 innodb_flush_log_at_trx_commit=1、sync_binlog=1 確保持久化
  • UPS 電源 + 優雅關機腳本
  • 定期 mysqldump --single-transaction 邏輯備份
  • 監控磁碟空間、InnoDB 日誌大小 (innodb_log_file_size)

決策樹: 有備份 → 刪除 ib_logfile* 重建最快;無備份 → innodb_force_recovery 1~6 嘗試導出資料;都失敗 → 專業資料恢復服務。切勿在生產庫直接實驗高風險操作。

copyright © 萬盛學電腦網 all rights reserved