首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 數據庫知識 >  >> MySQL 資料庫 >> MySQL 綜合教學

mydumper 多線程備份 MySQL 實戰:核心特性、工作流程、參數詳解與常用場景

     編輯:MySQL 綜合教學

mydumper 多線程備份 MySQL 實戰:核心特性、工作流程、參數詳解與常用場景

1. 核心特性

  • 多線程邏輯備份,生成多文件,速度遠超 mysqldump
  • MyISAM 加 FLUSH TABLES WITH READ LOCK (FTWRL),阻塞 DML;InnoDB 開啟事務保證一致性
  • 支持壓縮、導出 Binlog、多線程恢復、文件切塊
  • 支持守護進程模式:定時快照 + 連續 Binlog

2. 核心參數速查表

參數說明
-B, --database指定備份庫
-T, --tables-list指定備份表,逗號分隔
-o, --outputdir輸出目錄(默認當前目錄下 export-時間戳)
-s, --statement-size單 INSERT 字節數
-r, --rows按行數切塊大表
-c, --compress壓縮輸出文件
-e, --build-empty-files空表也生成文件
-x, --regex正則匹配 'db.table'
-i, --ignore-engines忽略引擎
-m, --no-schemas不導出表結構
-k, --no-locks不加鎖(⚠️ 導致不一致)
-l, --long-query-guard長查詢閾值(秒)
--kill-long-queries殺掉長查詢
-b, --binlogs導出 Binlog
-D, --daemon守護進程模式
-I, --snapshot-interval快照間隔(秒),需配合 -D
-t, --threads線程數

3. 工作流程

  1. 連接目標庫
  2. SHOW PROCESSLIST 檢測長查詢,按參數決定退出/殺掉
  3. MyISAM 加 FTWRL 鎖;InnoDB 開啟事務 START TRANSACTION
  4. 創建 Worker 子線程(默認 4)
  5. 分類候選表:InnoDB 表、非 InnoDB 表、表結構
  6. 任務隊列分發,Worker 並行導出
  7. MyISAM 完成立即 UNLOCK TABLES 減少鎖時間
  8. 等待所有 Worker 退出

4. 備份文件結構

  • 目錄:export-YYYYMMDD-HHMMSS/
  • metadata:記錄備份位點 (Binlog 文件名、Position)、從庫則含主庫位點
  • 每表兩文件:db.tbl-schema.sql (結構)、db.tbl.sql (數據)
  • 切塊時生成多個數據文件

5. 常用備份示例

# 單庫
mydumper -u user -p pwd -B sakila -o /tmp/bak

# 全庫(自動排除 information_schema/performance_schema)
mydumper -u user -p pwd -o /tmp/bak

# 單表/多表
mydumper -u user -p pwd -B sakila -T actor -o /tmp/bak
mydumper -u user -p pwd -B sakila -T actor,city -o /tmp/bak

# 當前目錄自動生成時間戳目錄
mydumper -u user -p pwd -B sakila -T actor

# 不帶表結構
mydumper -u user -p pwd -B sakila -T actor -m

# 壓縮 + 連接壓縮協議
mydumper -u user -p pwd -B sakila -o /tmp/bak -c -C

# 正則匹配表
mydumper -u user -p pwd -B sakila --regex=actor* -o /tmp/bak

# 排除系統庫
mydumper -u user -p pwd --regex '^(?!(mysql|test))' -o /tmp/bak

# 空表也生成結構文件
mydumper -u user -p pwd -B sakila -T actor -e -o /tmp/bak

# 長查詢保護
mydumper -u user -p pwd -B sakila --long-query-guard 200 --kill-long-queries

# 詳細日志
mydumper -u user -p pwd -B sakila -T actor -v 3 -o /tmp/bak

# 導出 Binlog
mydumper -u user -p pwd -P 3306 -b -o /tmp/bak
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved