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

MySQL 資料庫匯入匯出完整指南:SQL 腳本法 vs 物理檔案法、跨版本遷移避坑

     編輯:MySQL 資料庫相關知識

資料庫遷移兩大主流路徑:邏輯備份 (SQL 腳本) 通用性強、跨版本安全;物理複製 速度快但受版本/OS/架構限制。本文詳細對比兩法操作步驟、適用場景與避坑指南。

方法一:SQL 腳本法 (推薦通用)

1. 匯出


# mysqldump 單庫
mysqldump -uroot -p db_name > db_name.sql

# mysqldump 多庫
mysqldump -uroot -p --databases db1 db2 > multi.sql

# 包含例程/觸發器/事件/鎖定/Binlog 位置 (生產標準)
mysqldump -uroot -p --databases db_name \
  --routines --triggers --events \
  --single-transaction --flush-logs --master-data=2 > full.sql

2. 建立目標空庫

mysql -uroot -p -e "CREATE DATABASE db_name CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;"

3. 匯入


# 方式 A:mysql 指令導入 (大檔推薦)
mysql -uroot -p db_name < db_name.sql

# 方式 B:進入 mysql shell 後 source
mysql -uroot -p db_name
SOURCE /path/to/db_name.sql;

# 壓縮檔直接導入
gunzip < db_name.sql.gz | mysql -uroot -p db_name

方法二:物理檔案複製 (僅限同版本/同 OS/同架構)

  1. 停止源端 MySQL:systemctl stop mysqld
  2. 打包資料目錄:tar czf /backup/mysql_data.tar.gz /var/lib/mysql
  3. 傳輸至目標機器,解壓至對應目錄。
  4. 修正擁有者權限:chown -R mysql:mysql /var/lib/mysql; chmod -R 700 /var/lib/mysql
  5. 啟動目標 MySQL。

風險:MySQL 大版本升級 (5.6→5.7、5.7→8.0) 嚴禁 物理複製,必須用 mysql_upgrade 或邏輯遷移。

phpMyAdmin Web 介面操作

  • 匯出:勾選「結構+資料」,勾選「另存為檔案」,大檔啟用 gzip。
  • 匯入:選擇 SQL 檔,點「執行」。受限於 PHP upload_max_filesize、post_max_size、max_execution_time,大檔請改命令列。

跨版本遷移檢查清單

  • 字符集統一為 utf8mb4。
  • SQL_MODE 相容性檢查 (NO_AUTO_CREATE_USER 等在 8.0 移除)。
  • 保留字衝突 (8.0 新增 GROUPS, RANK 等)。
  • 認證插件遷移 (mysql_native_password → caching_sha2_password)。
  • 執行 mysql_upgrade (原地升級) 或邏輯重建。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved