首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫

MySQL 啟動失敗排查:因損壞二進制日志文件導致無法啟動的快速修復

     編輯:MySQL 資料庫相關知識

故障現象

服務器遷移後 MySQL 無法啟動,錯誤日志提示 無法讀取二進制日志文件。

根因分析

直接拷貝 datadir 進行物理遷移時,若源庫正在寫入 binlog 或未正常關閉,binlog 文件(binlog.000001 等)及索引文件(binlog.index)可能處於不一致或損壞狀態。MySQL 啟動時嘗試讀取 binlog 進行崩潰恢復/復制定位,遇損壞文件則拒絕啟動。

緊急修復步驟(適用於無需保留 binlog 的場景)

  1. 停止 MySQL 服務。
  2. 進入 datadir 目錄。
  3. 刪除所有非目錄文件:binlog.*、binlog.index、relay-log.*、relay-log.index、master.info、relay-log.info、*.pid、*.err 等。保留數據庫目錄(子文件夾)及表文件(.frm、.ibd、.MYD、.MYI 等)。
  4. 啟動 MySQL。服務將重新生成干淨的 binlog.000001 和 binlog.index。

⚠️ 風險提示

  • **會丟失 binlog 記錄的增量變更**,若無其他備份,這部分數據不可恢復。
  • **會重置從庫復制坐標**,若該實例為主庫,所有從庫需重新搭建或重新同步。
  • 生產環境嚴禁直接操作,**標準遷移請用 mysqldump 或 xtrabackup 熱備份**。

正規遷移建議

  • 主庫:FLUSH TABLES WITH READ LOCK -> 拷貝文件 -> 記錄 SHOW MASTER STATUS -> UNLOCK TABLES。
  • 或使用 Percona XtraBackup 熱備份(不鎖表、含 binlog 位置)。
  • 遷移後從庫執行 CHANGE MASTER TO MASTER_LOG_FILE='...', MASTER_LOG_POS=...;。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved