最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

MySQL邏輯備份和恢復工具集( MyDumper & MyLoader)詳解

 更新時間:2026年02月14日 15:43:52   作者:FixPng  
MyDumper是一套高性能 MySQL 邏輯備份與恢復工具集,包含mydumper(備份工具)和 myloader(恢復工具),采用 C 語言開發(fā),支持多線程并行處理,備份/恢復速度遠超傳統(tǒng) mysqldump,本文介紹MySQL邏輯備份和恢復工具集( MyDumper & MyLoader)詳解,感興趣的朋友一起看看吧

一、工具介紹

核心定位

MyDumper 是一套高性能 MySQL 邏輯備份與恢復工具集,包含 mydumper(備份工具)和 myloader(恢復工具),采用 C 語言開發(fā),支持多線程并行處理,備份/恢復速度遠超傳統(tǒng) mysqldump,適用于 MySQL、Percona、MariaDB、TiDB 等兼容數(shù)據(jù)庫,由社區(qū)維護的開源工具(非 Percona/MariaDB/MySQL 官方產(chǎn)品)。

核心特性

  • mydumper
    • 多線程并行備份,支持文件壓縮、binlog 導出、表數(shù)據(jù)分片備份;
    • 保證事務性和非事務性表的一致性快照(遵循 MySQL 最佳實踐);
    • 支持守護進程模式,可定時快照和連續(xù)備份二進制日志;
    • 支持 PCRE 正則表達式篩選數(shù)據(jù)庫/表,輸出文件結(jié)構(gòu)清晰(分表存儲)。
  • myloader
    • 多線程并行恢復,支持壓縮文件直接導入;
    • 可指定恢復到不同數(shù)據(jù)庫,支持索引優(yōu)化策略(如延遲創(chuàng)建索引);
    • 支持校驗和驗證,確?;謴蛿?shù)據(jù)一致性;
    • 兼容 mydumper 生成的備份格式,支持自定義導入行為(如忽略表、替換表名)。

協(xié)議與兼容性

  • 開源免費,遵循 GNU GPLv3 協(xié)議;
  • 支持 MySQL 5.5+、MariaDB 10.x+、TiDB 等,兼容主流 Linux 發(fā)行版。

優(yōu)缺點

  • 優(yōu)點
    • 并行處理大幅提升速度,備份/恢復效率高;
    • 數(shù)據(jù)一致性有保障,支持細粒度篩選;
    • 輸出/輸入文件易管理,支持壓縮和外部命令擴展;
    • 恢復時可靈活調(diào)整策略(如索引優(yōu)化)。
  • 缺點
    • mydumper 多線程備份基于表維度,單張大表場景需通過 -r 參數(shù)分片優(yōu)化;
    • 對非事務性引擎(如 MyISAM)的一致性支持有限(需依賴 FTWRL)。

相關工具對比

特點mysqldumpmysqlpumpmydumperxtrabackup
并發(fā)性單線程單線程多線程多線程
性能較低中等較高較高
備份速度較慢中等較快較快
恢復速度較慢中等較快(使用myloader進行恢復)較快
兼容性MySQL 和 MariaDBMySQL 5.7.8 及更高版本MySQL 和 MariaDBMySQL 和部分 MariaDB版本
靈活性
壓縮備份不支持支持支持支持
官方支持是(由Oracle官方提供)是(由Oracle官方提供)否(由社區(qū)維護)是(由Percona官方提供)
跨平臺支持
備份類型邏輯備份邏輯備份邏輯備份物理備份
是否鎖表是(備份過程中鎖表)是(部分情況下鎖表)否(可在不鎖表的情況下備份)
增量備份不支持不支持不支持支持

二、核心原理

1. mydumper 備份原理

通過主線程+子線程協(xié)同實現(xiàn)一致性備份,流程如下:

  • 主線程
    • 執(zhí)行 FLUSH TABLES WITH READ LOCK 獲取全局讀鎖,防止備份期間數(shù)據(jù)寫入;
    • 讀取 SHOW MASTER/SLAVE STATUS 記錄 binlog 位置等元數(shù)據(jù);
    • 創(chuàng)建子線程并分配備份任務(按表拆分),等待子線程建立快照;
    • 子線程快照建立完成后釋放全局鎖,避免長時間阻塞業(yè)務。
  • 子線程
    • 連接數(shù)據(jù)庫并設置 REPEATABLE READ 隔離級別;
    • 執(zhí)行 START TRANSACTION WITH CONSISTENT SNAPSHOT 獲取一致性快照;
    • 并行導出表結(jié)構(gòu)和數(shù)據(jù),生成獨立文件;
    • 所有子線程完成后,主線程匯總生成 metadata 文件(記錄備份時間、binlog 信息等)。

2. myloader 恢復原理

  • 解析 mydumper 備份目錄中的 metadata 和表文件;
  • 主線程分配恢復任務(表結(jié)構(gòu)→表數(shù)據(jù)→觸發(fā)器/存儲過程),子線程并行執(zhí)行;
  • 支持延遲創(chuàng)建索引(--optimize-keys),先導入數(shù)據(jù)再建索引提升效率;
  • 可選校驗和驗證,確保恢復數(shù)據(jù)與備份一致。

三、安裝方式

1. RPM 包安裝

# 下載地址:https://github.com/mydumper/mydumper/releases
rpm -ivh mydumper-<version>-<dist>.x86_64.rpm
# 驗證安裝
which mydumper
which myloader

2. Docker 構(gòu)建

# 從源碼構(gòu)建(支持 ZSTD 壓縮)
docker build --build-arg CMAKE_ARGS='-DWITH_ZSTD=ON' -t mydumper \
    https://github.com/mydumper/mydumper.git#master:docker

四、用法命令

1. mydumper 常用參數(shù)與場景

核心參數(shù)

mydumper --help
-B, --database                         逗號分隔的備份數(shù)據(jù)庫列表(非單庫指定)
-T, --tables-list                      逗號分隔的備份表列表(需包含庫名,如 test.t1,test.t2)
-o, --outputdir                        備份輸出目錄(必填)
-e, --build-empty-files                表無數(shù)據(jù)時生成空文件
-x, --regex                            正則匹配 db.table
-t, --threads                          線程數(shù)(0=CPU核心數(shù),默認4,最小2)
-r, --rows                             按行數(shù)分片(格式 MIN:START_AT:MAX,MAX=0無限制)
-v, --verbose                          日志級別(0=靜默,1=錯誤,2=警告,3=信息,默認2)
--less-locking                         已廢棄,默認行為由 --trx-tables 替代
--trx-tables                           僅備份事務表(優(yōu)化鎖策略)
--no-trx-tables                        包含非事務表(鎖釋放更慢)
-G, --triggers                         導出觸發(fā)器(默認不導出)
-E, --events                           導出事件(默認不導出)
-R, --routines                         導出存儲過程/函數(shù)(默認不導出)
--exec                                 外部命令處理文件(如 --exec "/usr/bin/zstd FILENAME")
--defaults-file                        指定配置文件路徑(默認 /etc/mydumper.cnf)
--no-views                             不導出視圖
--no-data                              僅導出表結(jié)構(gòu)
--daemon                               守護進程模式(定時備份)
--snapshot-interval                    守護進程快照間隔(分鐘,默認60)
--clear                                備份前清空輸出目錄
--format                               輸出格式(INSERT/LOAD_DATA/CSV/CLICKHOUSE,默認INSERT)

實戰(zhàn)場景

# (1)單庫備份(詳細日志)
mydumper -h 192.168.31.110 -P 3306 -u root -p AAA12345 -B testdb -o /data/backup/testdb --verbose=3 --logfile /data/backup/testdb.log
# (2)多庫備份(逗號分隔)
mydumper -h 192.168.31.110 -P 3306 -u root -p AAA12345 -B testdb,my_test -o /data/backup/multi_db -t 8
# (3)單表分片備份(最小1萬行,起始2萬行,無上限)
mydumper -h 192.168.31.110 -P 3306 -u root -p AAA12345 -B testdb  -T testdb.orders -r 10000:20000:0 -o /data/backup/orders
# (4)僅備份事務表(優(yōu)化鎖策略)
mydumper -h 192.168.31.110 -P 3306 -u root -p AAA12345 -B testdb  --trx-tables -o /data/backup/testdb_trx
# (5)守護進程模式定時備份(每30分鐘快照,保留2份)
mydumper -h 192.168.31.110 -P 3306 -u root -p AAA12345 -B testdb  -o /data/backup/daemon_backup --daemon --snapshot-interval 30
# (6)備份前清空目錄
mydumper -h 192.168.31.110 -P 3306 -u root -p AAA12345 -B testdb  -o /data/backup/testdb --clear
# (7)導出為CSV格式
mydumper -h 192.168.31.110 -P 3306 -u root -p AAA12345 -B testdb  -T testdb.orders --format CSV -o /data/backup/csv_data
# (8)開數(shù)據(jù)壓縮 -c
mydumper -h 192.168.31.110 -P 3306 -u root -p AAA12345 -B testdb -c -o /data/backup/testdb_c

2. myloader 常用參數(shù)與場景

核心參數(shù)

myloader --help
-d, --directory                        備份文件目錄(必填)
-B, --database                        恢復到的目標數(shù)據(jù)庫
-t, --threads                          恢復線程數(shù)(0=CPU核心數(shù),默認4,最小2)
--drop-table                           處理已存在表(FAIL/NONE/DROP/TRUNCATE/DELETE,默認FAIL)
--optimize-keys                        索引優(yōu)化策略(AFTER_IMPORT_PER_TABLE/AFTER_IMPORT_ALL_TABLES/SKIP,默認前者)
--enable-binlog                        恢復過程記錄binlog(建議用配置文件替代)
-v, --verbose                          日志級別(0=靜默,1=錯誤,2=警告,3=信息,默認2)
--defaults-file                        指定配置文件路徑
--skip-definer                         跳過存儲過程/函數(shù)的DEFINER語句
--replace                              用REPLACE替代INSERT(避免主鍵沖突)
--ignore-errors                        忽略指定錯誤碼(如 --ignore-errors 1050)
--source-data                          從metadata恢復復制配置
--checksum                             校驗和處理策略(skip/fail/warn,默認fail)
--resume                               斷點續(xù)傳恢復

實戰(zhàn)場景

# (1)恢復單庫到新庫名(刪除目標表)
myloader -h 192.168.31.110 -P 3306 -u root -p AAA12345 -d /data/backup/testdb -B testdb_new1 --drop-table DROP
# (2)延遲創(chuàng)建索引(所有表導入后建索引)
myloader -h 192.168.31.110 -P 3306 -u root -p AAA12345 -d /data/backup/testdb -B testdb_new2 --optimize-keys AFTER_IMPORT_ALL_TABLES
# (3)斷點續(xù)傳恢復
myloader -h 192.168.31.110 -P 3306 -u root -p AAA12345 -d /data/backup/testdb -B testdb_new3 --resume
# (4)忽略表已存在錯誤
myloader -h 192.168.31.110 -P 3306 -u root -p AAA12345 -d /data/backup/testdb -B testdb_new4 --ignore-errors 1050

五、配置文件使用

1. 配置文件示例(/etc/mydumper.cnf)

[mydumper]
host = 192.168.31.110
user = root
password = AAA12345
port = 3306
# 默認備份的數(shù)據(jù)庫名
database = testdb
# 備份線程數(shù)(0=CPU核心數(shù),默認4)
threads = 8
# 僅備份事務表(優(yōu)化鎖策略,1=啟用)
trx-tables = 1
# 日志級別(0=靜默,1=錯誤,2=警告,3=信息)
verbose = 3
# 日志輸出文件路徑
logfile = /var/log/mydumper.log
# 正則匹配表(備份testdb庫下非tmp_開頭的表)
regex = ^(testdb\.)(?!tmp_)
[myloader]
host = 192.168.31.110
user = root
password = AAA12345
port = 3306
# 默認恢復的目標數(shù)據(jù)庫名
database = testdb_restore
# 恢復線程數(shù)(0=CPU核心數(shù),默認4)
threads = 8
# 處理已存在表的策略(DROP=刪除原表后重建)
drop-table = DROP
# 索引優(yōu)化策略(所有表導入完成后統(tǒng)一建索引)
optimize-keys = AFTER_IMPORT_ALL_TABLES
# 日志級別(0=靜默,1=錯誤,2=警告,3=信息)
verbose = 3

2. 指定配置文件的使用方式

# mydumper 使用配置文件備份
mydumper --defaults-file=/etc/mydumper.cnf -o /data/backup/testdb_from_config
# myloader 使用配置文件恢復
myloader --defaults-file=/etc/mydumper.cnf -d /data/backup/testdb_from_config -B testdb_restore_from_config

注意

  1. 配置文件中無需參數(shù)的選項(如 trx-tables)設置為 1/true 即啟用;
  2. --overwrite-tables 已廢棄,需用 --drop-table DROP 替代;
  3. --less-locking 已廢棄,事務表場景用 --trx-tables,非事務表用 --no-trx-tables;
  4. mydumper 的 -B 參數(shù)支持逗號分隔多庫,非單庫專屬;
  5. myloader 的 --optimize-keys 默認值為 AFTER_IMPORT_PER_TABLE(每張表導入后建索引);

到此這篇關于MySQL邏輯備份和恢復工具集( MyDumper &amp; MyLoader)詳解的文章就介紹到這了,更多相關mysql邏輯備份恢復 內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • MySQL中如何給一個字段遞增賦值

    MySQL中如何給一個字段遞增賦值

    這篇文章主要介紹了MySQL中如何給一個字段遞增賦值問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-07-07
  • Mysql的增刪改查語句簡單實現(xiàn)

    Mysql的增刪改查語句簡單實現(xiàn)

    這篇文章主要介紹了Mysql的增刪改查語句簡單實現(xiàn)的相關資料,需要的朋友可以參考下
    2017-04-04
  • mysql日志系統(tǒng)redo log和bin log介紹

    mysql日志系統(tǒng)redo log和bin log介紹

    這篇文章主要介紹了mysql日志系統(tǒng)redo log和bin log介紹,文章圍繞主題展開詳細的內(nèi)容介紹,具有一定的參考價值,需要的小伙伴可以參考一下
    2022-08-08
  • MySQL中的?Binlog?深度解析及使用詳情

    MySQL中的?Binlog?深度解析及使用詳情

    這篇文章主要介紹了MySQL中的?Binlog?深度解析及使用詳情,文章圍繞主題展開詳細的內(nèi)容介紹,具有一定的參考價值,需要的小伙伴可以參考一下
    2022-06-06
  • mysql實現(xiàn)connect by start with方式

    mysql實現(xiàn)connect by start with方式

    本文介紹了MySQL中實現(xiàn)層級查詢的幾種方法,并分享了一種使用變量循環(huán)賦值的方式,通過實驗驗證了該方法的有效性
    2024-12-12
  • MySQL慢查詢?nèi)罩緩呐渲玫絻?yōu)化實踐全解析

    MySQL慢查詢?nèi)罩緩呐渲玫絻?yōu)化實踐全解析

    慢查詢?nèi)罩臼荕ySQL性能優(yōu)化的關鍵工具,記錄執(zhí)行時間超過閾值的SQL語句,幫助定位性能瓶頸和優(yōu)化SQL,本文介紹MySQL慢查詢?nèi)罩緩呐渲玫絻?yōu)化實踐全解析,感興趣的朋友跟隨小編一起看看吧
    2026-01-01
  • mysql 常用命令集錦[絕對精華]

    mysql 常用命令集錦[絕對精華]

    測試環(huán)境:mysql 5.0.45 【注:可以在mysql中通過mysql> SELECT VERSION();來查看數(shù)據(jù)庫版本】
    2009-06-06
  • Mysql5.5升級到5.6的真實操作步驟示例

    Mysql5.5升級到5.6的真實操作步驟示例

    MySQL5.5升級到5.6涉及下載升級包、數(shù)據(jù)權限備份、配置文件備份、解壓安裝、數(shù)據(jù)導入、重啟服務、配置恢復等步驟
    2024-11-11
  • mysql字符集相關總結(jié)

    mysql字符集相關總結(jié)

    這篇文章主要介紹了Python 中刪除文件的幾種方法匯總,幫助大家更好的理解和學習使用python,感興趣的朋友可以了解下
    2021-03-03
  • 基于sqlalchemy對mysql實現(xiàn)增刪改查操作

    基于sqlalchemy對mysql實現(xiàn)增刪改查操作

    這篇文章主要介紹了基于sqlalchemy對mysql實現(xiàn)增刪改查操作,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2020-06-06

最新評論

新龙县| 赫章县| 白水县| 新绛县| 酉阳| 东光县| 自贡市| 大理市| 八宿县| 永州市| 张家港市| 新建县| 墨竹工卡县| 津市市| 吉安县| 共和县| 南宁市| 上栗县| 镇江市| 墨竹工卡县| 博爱县| 金川县| 和田县| 昌宁县| 同心县| 曲阳县| 曲阜市| 星座| 怀仁县| 齐齐哈尔市| 贡山| 灵石县| 繁峙县| 阜平县| 镇巴县| 方城县| 娄烦县| 玛沁县| 聊城市| 石台县| 陵川县|