# 安裝同版本 MySQL # 停止服務 net stop mysql
進入源數據目錄 (如 C:\ProgramData\MySQL\MySQL Server 5.6\Data\):
# 必須拷貝的文件/目錄 - 目標數據庫目錄 (如 platform/) - ibdata1 # 核心系統表空間 (含數據字典、undo log、雙寫緩衝) - ib_logfile0, ib_logfile1 # 重做日誌 (崩潰恢復必需) - mysql/ # 系統庫 (可選,遷移用戶權限時需拷貝) # 不需拷貝 - *.err, *.pid, *.log # 日誌/臨時文件 - auto.cnf # server_uuid 必須唯一 - performance_schema/ # 運行時動態生成

# 將上述文件覆蓋到目標數據目錄 # 關鍵:ibdata1 必須放到正確位置 (若目標配置 innodb_data_file_path 指向非默認路徑,拷貝到對應路徑) net start mysql
# 1. 停止服務 systemctl stop mysqld # 2. 拷貝 (rsync 推薦) rsync -av --exclude='*.err' --exclude='*.pid' --exclude='auto.cnf' \ /var/lib/mysql/ target_server:/var/lib/mysql/ # 3. 修正權限 (關鍵!) chown -R mysql:mysql /var/lib/mysql # 4. 啟動 systemctl start mysqld
-- 1. 檢查數據庫列表 SHOW DATABASES; -- 2. 核心表行數對比 SELECT TABLE_NAME, TABLE_ROWS FROM information_schema.TABLES WHERE TABLE_SCHEMA='platform'; -- 3. 業務關鍵查詢測試 SELECT * FROM platform.test LIMIT 10; -- 4. 檢查錯誤日誌無異常 tail -f /var/log/mysqld.log
mysql> USE platform; mysql> SHOW TABLES; +-----------------------+ | Tables_in_platform | +-----------------------+ | mobile_scanner | | sharer | +-----------------------+ mysql> DESC test; ERROR 1146 (42S02): Table 'platform.test' doesn't exist -- 表能查到 (frm 存在),但 DESC 失敗 (ibdata1 中數據字典缺失)
鐵律:ibdata1 必須完整拷貝到正確路徑。它是 InnoDB 核心,包含所有表的元數據、undo 日誌、雙寫緩衝區。缺失即意味著數據字典為空,表結構讀取失敗。
文件級遷移「快、準、狠」但前提嚴苛:版本一致、配置一致、ibdata1/ib_logfile* 完整拷貝、權限修正。異構遷移 (版本升級/參數調整) 必須走 mysqldump/xtrabackup 邏輯/物理備份還原路線。