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

MySQL 資料庫目錄結構與資料遷移實戰

     編輯:MySQL 資料庫相關知識

一、目錄結構解析

MySQL 安裝目錄下的 my.ini(Windows)或 my.cnf(Linux)中 datadir 參數決定資料檔案存放位置。每個子目錄對應一個資料庫,表檔案依存儲引擎不同而異:

引擎表定義資料檔案索引檔案
MyISAM[table_name].frm[table_name].MYD[table_name].MYI
InnoDB[table_name].frm共享表空間 ibdata1 或獨立 .ibdRedo Log ib_logfile*

二、物理檔案遷移資料庫(冷備份法)

適用於同版本、同架構、同引擎環境:

  1. 停止 MySQL 服務
  2. 複製整個資料庫目錄 + ib_logfile0、ib_logfile1、ibdata1 至目標機器相同路徑
  3. 啟動目標機器 MySQL 服務
  4. 驗證資料完整性
優點:速度快、保留所有索引統計資訊。缺點:需停機、版本/架構必須一致。

三、mysqldump 邏輯備份遷移

# 匯出
mysqldump -u root -p --single-transaction --routines --triggers dbname > dump.sql

# 匯入
mysql -u root -p dbname < dump.sql
優點:跨版本/平台相容性好。缺點:大數據量匯入較慢、需重建索引統計資訊。

四、Windows InnoDB 資料檔案遷移至 Linux 實戰記錄

環境

  • 來源:Windows MySQL 5.0.37-community-nt
  • 目標:Linux MySQL 5.0.32-Debian

遇到問題與解決

  1. 錯誤 1017 (errno: 13):資料庫目錄缺少執行權限(x),chmod +x 解決
  2. 錯誤 1033 + InnoDB DISABLED:show engines 發現 InnoDB 被禁用
  3. 根因:my.cnf 未設定 innodb_log_file_size,預設 5MB,但遷移來的 ib_logfile* 為 10MB,大小不匹配導致啟動失敗
  4. 解決:刪除舊 ib_logfile*,重啟 MySQL 自動生成 5MB 新檔,再按官方文檔調整為 256MB

五、關鍵檢查清單

  • ✅ 來源/目標 MySQL 版本相容(主版本號一致)
  • ✅ 存儲引擎支援一致
  • ✅ innodb_log_file_size 配置與實體檔案大小匹配
  • ✅ 資料目錄權限正確(mysql 用戶可讀寫執行)
  • ✅ 字元集配置一致(character_set_server、collation_server)
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved