MySQL 之mydumper安裝詳解


方法一:
安裝依賴包:

1

yum install glib2-devel mysql-devel zlib-devel pcre-devel openssl-devel cmake make

下載二進制包:

1

wget https://launchpadlibrarian.net/225370879/mydumper-0.9.1.tar.gz

解壓安裝:

1

2

3

4

tar zxvf mydumper-0.9.1.tar.gz

cd mydumper-0.9.1/

cmake .

make && make install

安裝完成后生成兩個二進制文件mydumper和myloader位於/usr/local/bin目錄下
查看是否正常:

1

mydumper --help

 

方法二:

安裝

1 安裝依賴包

yum -y install glib2-devel mysql-devel zlib-devel pcre-devel cmake gcc-c++ git
1
2 下載安裝文件

cd /usr/MyWorkSpace/
git clone https://github.com/maxbube/mydumper.git
cd mydumper
//注意下面包含'.'
cmake .
make && make install

[root@mysql82 mydumper]# mydumper -V
mydumper 0.9.5, built against MySQL 5.5.60-MariaDB

 

mydumper是針對mysql數據庫備份的一個輕量級第三方的開源工具,備份方式為邏輯備份。它支持多線程,備份速度遠高於原生態的mysqldump以及眾多優異特性。因此該工具是DBA們的不二選擇。本文主要描述該工具的使用方法並給出示例。

    有關mydumper安裝參考:mydumper安裝及安裝故障匯總

 

1、mydumper的特點
a、多線程邏輯備份,生產的多個備份文件
b、與mysqldump相同,備份時對 MyISAM 表施加FTWRL (FLUSH TABLES WITH READ LOCK), 會阻塞DML 語句
c、保證備份數據的一致性
d、支持文件壓縮,支持導出binlog,支持多線程恢復,支持將備份文件切塊
e、支持以守護進程模式工作,定時快照和連續二進制日志

 

2、mydumper語法
mydumper -u [USER] -p [PASSWORD] -h [HOST] -P [PORT] -t [THREADS] -b -c -B [DB] -o [directory]
參數說明
  -B, --database              需要備份的庫
  -T, --tables-list           需要備份的表,用逗號分隔
  -o, --outputdir             輸出文件的目錄
  -s, --statement-size        生成插入語句的字節數, 默認 1000000
  -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      設置長查詢時間,默認60秒
  --kill-long-queries         kill掉長時間執行的查詢
  -b, --binlogs               導出binlog
  -D, --daemon                啟用守護進程模式
  -I, --snapshot-interval     dump快照間隔時間,默認60s,需要在daemon模式下
  -L, --logfile               日志文件
  -h, --host                  The host to connect to
  -u, --user                  Username with privileges to run the dump
  -p, --password              User password
  -P, --port                  TCP/IP port to connect to
  -S, --socket                UNIX domain socket file to use for connection
  -t, --threads               使用的線程數,默認4
  -C, --compress-protocol     在mysql連接上使用壓縮協議
  -V, --version               Show the program version and exit
  -v, --verbose               更多輸出, 0 = silent, 1 = errors, 2 = warnings, 3 = info, default 2

 

3、mydumper的工作過程
a、連接目標數據庫;
b、通過show processlist來判斷是否有長查詢,根據參數long-query-guard和kill-long-queries決定退出或殺掉長查詢;
c、鎖定myisam表,flush tables with read lock;針對innodb table開啟事務,start transaction;
d、創建worker子線程,缺省為4個;
e、確定候選表,根據類別分別插入innodb_table,non_innodb_table以及table_schemas鏈表(表結構);
f、將候選表通過g_async_queue_push加入任務隊列(隊列最后元素是thread shutdown),由worker子線程從隊列中讀取表信息並執行數據導出
g、執行unlock tables,處理完myisam表后立即解鎖,以減少鎖定時間;
h、等待worker退出;

 

4、備份文件相關信息
a、所有的備份文件在一個目錄中,未指定時為當前目錄, 且自動生成備份日期時間文件夾,如export-20150703-145806
b、目錄中包含一個 metadata 文件,該文件記錄了備份時間點的二進制日志文件名,日志的寫入位置
c、如果是在從庫進行備份,還會記錄備份時同步至主庫的二進制日志文件及寫入位置
d、每個表有兩個備份文件:database.table-schema.sql 表結構文件,database.table.sql 表數據文件
e、如果對表文件分片,將生成多個備份數據文件,可以指定行數或指定大小分片

 
5、常用備份示例:
###備份單個庫 
# mydumper -u leshami -p pwd -B sakila -o /tmp/bak

###備份所有數據庫,全庫備份期間除了information_schema與performance_schema之外的庫都會被備份
# mydumper -u leshami -p pwd -o /tmp/bak

###備份單表
# mydumper -u leshami -p pwd -B sakila -T actor -o /tmp/bak

###備份多表
# mydumper -u leshami -p pwd -B sakila -T actor,city -o /tmp/bak

###當前目錄自動生成備份日期時間文件夾,不指定-o參數及值時,如文件夾為:export-20150703-145806
mydumper -u leshami -p pwd -B sakila -T actor

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

###壓縮備份及連接使用壓縮協議(非本地備份時)
# mydumper -u leshami -p pwd -B sakila -o /tmp/bak -c -C

###備份特定表
# mydumper -u leshami -p pwd -B sakila --regex=actor* -o /tmp/bak

###過濾特定庫,如本來不備份mysql及test庫
# mydumper -u leshami -p pwd -B sakila --regex '^(?!(mysql|test))' -o /tmp/bak

###基於空表產生表結構文件
# mydumper -u leshami -p pwd -B sakila -T actor -e -o /tmp/bak

##設置長查詢的上限,如果存在比這個還長的查詢則退出mydumper,也可以設置殺掉這個長查詢
#mydumper -u leshami -p pwd -B sakila --long-query-guard 200 --kill-long-queries

###備份時輸出詳細日志
# mydumper -u leshami -p pwd -B sakila -T actor -v 3 -o /tmp/bak

###導出binlog,使用-b參數,會自動在導出目錄生成binlog_snapshot文件夾及binlog
# mydumper -u leshami -p pwd -P 3306 -b -o /tmp/bak


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM