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

Linux 系統下 MySQL 數據庫遷移實戰:mysqldump 導出導入與跨平台兼容性指南

     編輯:MySQL 資料庫相關知識

服務器遷移、環境克隆、災難恢復核心技能:MySQL 數據導出導入。本文記錄 Linux 服務器到 Mac 本地的完整遷移流程,涵蓋 mysqldump 參數優化、大文件傳輸、字符集兼容、版本差異處理、驗證清單。

一、遠程服務器導出

1. 基礎導出 (單庫)

mysqldump -u root -p \
  --single-transaction \
  --routines --triggers --events \
  --master-data=2 \
  --hex-blob \
  --default-character-set=utf8mb4 \
  mywordpress > /var/backup/mywordpress_$(date +%F).sql

2. 參數解析

參數作用
--single-transactionInnoDB 熱備份,不鎖表,保證一致性視圖
--routines --triggers --events導出存儲過程、觸發器、定時事件
--master-data=2輸出 CHANGE MASTER TO 註釋,記錄 Binlog 位點
--hex-blob二進制字段十六進制導出,避免字符集問題
--default-character-set=utf8mb4強制連接字符集,防止亂碼
--compress網絡傳輸壓縮 (慢速網絡建議)
--quick大表流式讀取,不緩存全表到內存

3. 大庫分表導出 (並行加速)

# 獲取大表列表
mysql -uroot -p -e "SELECT TABLE_NAME FROM information_schema.TABLES WHERE TABLE_SCHEMA='bigdb' AND TABLE_ROWS > 1000000;"

# 並行導出 (需 GNU parallel)
parallel -j 4 "mysqldump -uroot -p bigdb {} > /backup/bigdb_{}.sql" ::: table1 table2 table3

二、文件傳輸

# 壓縮傳輸 (推薦)
gzip -c /var/backup/mywordpress_2024-01-15.sql | ssh user@mac "cat > ~/mywordpress.sql.gz"

# 或使用 rsync 斷點續傳
rsync -avzP /var/backup/ user@mac:~/mysql_backup/

三、本地導入

1. 創建目標庫

CREATE DATABASE mywordpress CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;

2. 導入數據

# 解壓並導入
gunzip -c ~/mywordpress.sql.gz | mysql -u root -p mywordpress

# 或分步
gunzip ~/mywordpress.sql.gz
mysql -u root -p mywordpress < ~/mywordpress.sql

3. 導入優化參數

# 臨時調大參數加速導入
mysql -uroot -p -e "
SET GLOBAL innodb_flush_log_at_trx_commit=2;
SET GLOBAL sync_binlog=0;
SET GLOBAL foreign_key_checks=0;
SET GLOBAL unique_checks=0;
SET GLOBAL sql_log_bin=0;
"

# 導入完成後恢復
mysql -uroot -p -e "
SET GLOBAL innodb_flush_log_at_trx_commit=1;
SET GLOBAL sync_binlog=1;
SET GLOBAL foreign_key_checks=1;
SET GLOBAL unique_checks=1;
SET GLOBAL sql_log_bin=1;
"

四、跨版本/跨平台兼容性處理

場景問題解決
5.7 → 8.0保留字變更、認證插件、系統表結構導出前 mysqlcheck --fix-db-names --fix-table-names;導入後 mysql_upgrade
Linux → Mac大小寫敏感度 (lower_case_table_names)統一設置 lower_case_table_names=1 (Mac/Win) 或 0 (Linux)
字符集遷移latin1 → utf8mb4 亂碼導出指定 --default-character-set=latin1,導入庫表指定 utf8mb4
GTID 啟用差異GTID 集合衝突導出加 --set-gtid-purged=OFF 或導入前 RESET MASTER

五、驗證清單

  1. 對象計數:SELECT COUNT(*) FROM information_schema.TABLES WHERE TABLE_SCHEMA='db' 源目標一致
  2. 行數抽樣:核心大表 SELECT COUNT(*) 對比
  3. Checksum 對比:CHECKSUM TABLE core_table 值一致
  4. 應用煙測:關鍵業務流程端到端驗證
  5. 權限同步:pt-show-grants 導出授權並在目標執行

六、進階工具推薦

  • mydumper/myloader:多線程並行導出導入,速度提升 5-10x
  • xtrabackup:物理熱備份,大庫 (TB 級) 秒級備份、分鐘級恢復
  • DTS/云廠商遷移服務:全增量同步、校驗、切換一站式
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved