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

MySQL 常見數據遷移與拆庫方案對比:mysqldump、xtrabackup、Transportable Tablespace

     編輯:MySQL 資料庫相關知識

三大主流遷移手段

  1. mysqldump 邏輯導出:導出 SQL,目標端 source 執行
  2. xtrabackup 物理備份:備份表/庫文件,恢復出新實例
  3. Transportable Tablespace (TTS):MySQL 5.6.6+ 支持,直接移動 .ibd 文件

方案一:Transportable Tablespace (TTS) 表空間傳輸

適用場景:同版本、同架構、InnoDB 獨立表空間(innodb_file_per_table=1),需遷移部分表。

操作步驟(將 db_A.tab_test1 移至 db_B)

  1. 源庫獲取結構:USE db_A; SHOW CREATE TABLE tab_test1;
  2. 目標庫建表並丟棄表空間:USE db_B; CREATE TABLE tab_test1 ...; ALTER TABLE tab_test1 DISCARD TABLESPACE;(刪除 .ibd,保留 .frm)
  3. 源庫鎖定並刷新:FLUSH TABLES tab_test1 FOR EXPORT;(生成 .cfg 元數據文件,確保數據一致)
  4. 文件拷貝:scp tab_test1.ibd tab_test1.cfg 目標主機:db_B/
  5. 源庫解鎖:UNLOCK TABLES;
  6. 目標庫導入:ALTER TABLE tab_test1 IMPORT TABLESPACE;

方案二:xtrabackup 部分表備份恢復

步驟

  1. 備份指定表:
    innobackupex --tables-file=/mnt/back_tables.txt /mnt/backup_1
  2. 應用日志導出:
    innobackupex --export --apply-log --defaults-file=... /backup_path
  3. 啟動新實例配置復制過濾:
    replicate_wild_do_table=db_name.table_name

方案三:mysqldump 邏輯遷移

最通用但最慢。關鍵參數:

  • --single-transaction:InnoDB 熱備份必須,保證一致性視圖
  • --master-data=2:記錄 binlog 位置,便於後續搭建從庫
  • --set-gtid-purged=OFF:避免 GTID 污染

選型建議

維度mysqldumpxtrabackupTTS
速度慢(邏輯導入)快(物理拷貝)極快(僅移動文件)
跨版本支持良好需相容版本嚴格要求版本一致
表鎖影響無(單事務)備份期無鎖源庫需短暫鎖表 (FLUSH ... FOR EXPORT)
適用規模小表/結構調整大庫/整庫遷移單表/少量表遷移

實際工作中結合服務器資源、停機窗口、版本差異綜合選擇。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved