首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 數據庫知識 >  >> MySQL 資料庫 >> MySQL 綜合教學

MySQL 數據目錄遷移後啟動失敗:InnoDB 臨時文件創建失敗與 ib_logfile 損壞排查實錄

     編輯:MySQL 綜合教學

故障現象

將 data 目錄整體複製至新安裝的 WAMP/MySQL,啟動報錯:

InnoDB: Error: unable to create temporary file; errno: 2
[ERROR] Plugin 'InnoDB' init function returned error.
[ERROR] Unknown/unsupported storage engine: InnoDB
Aborting

排查過程

  1. 嘗試修改 default-storage-engine=MyISAM → 無效。
  2. 調整 innodb_buffer_pool_size 等參數 → 無效。
  3. 刪除 ib_logfile0、ib_logfile1 → **啟動成功!**

核心文件角色解析

遷移最佳實踐(零風險)

# 1. 正常關閉源實例
systemctl stop mysqld

# 2. 同步數據目錄(保留權限)
rsync -av /var/lib/mysql/ /new_disk/mysql/

# 3. 修改目標 my.cnf datadir 指向新路徑
datadir=/new_disk/mysql

# 4. 調整目錄權限
chown -R mysql:mysql /new_disk/mysql
# SELinux 環境
semanage fcontext -a -t mysqld_db_t "/new_disk/mysql(/.*)?"
restorecon -Rv /new_disk/mysql

# 5. 啟動
systemctl start mysqld

暴力遷移補救清單(已發生故障時)

  1. 保留 ibdata1、所有 *.ibd、庫目錄。
  2. 刪除 ib_logfile*、*.pid、*.err、auto.cnf(UUID 衝突)。
  3. 確保 tmpdir 目錄存在且可寫(mkdir -p /tmp/mysql && chown mysql:mysql /tmp/mysql)。
  4. 啟動驗證:CHECK TABLE ...、業務抽樣查詢。

避坑指南

1. 絕不刪除 ibdata1 —— 除非你接受全量數據丟失。
2. 不同版本間遷移 必須運行 mysql_upgrade。
3. 跨主機遷移 優先用 mysqldump / xtrabackup / mydumper,物理複製僅限同版本、同架構、同配置。
4. 臨時目錄權限 是隱形殺手,my.cnf 顯式設置 tmpdir=/data/tmp 並預創建。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved
文件作用遷移策略
ibdata1系統表空間:數據字典、Undo Log、雙寫緩衝、插入緩衝必須遷移,包含表元數據與未提交事務
ib_logfile0/1Redo Log(重做日誌):崩潰恢復、WAL 機制核心可刪除重建,啟動時自動創建新文件
*.ibd獨立表空間(開啟 innodb_file_per_table 時)必須遷移,屬於具體表數據
臨時文件排序、中間結果等啟動時自動創建,目錄需可寫