MySQL多線程備份工具mydumper

Mydumper介紹(摘自網上):   http://www.mydumper.org/python

Mydumper是一個針對MySQL和Drizzle的高性能多線程備份和恢復工具。開發人員主要來自MySQL,Facebook,SkySQL公司。目前已經在一些線上使用了Mydumper。mysql

Mydumper主要特性:c++

1.輕量級C語言寫的正則表達式

2.執行速度比mysqldump快10倍sql

3.事務性和非事務性表一致的快照(適用於0.2.2以上版本)多線程

4.快速的文件壓縮socket

5.支持導出binlogide

6.多線程恢復(適用於0.2.1以上版本)工具

7.以守護進程的工做方式,定時快照和連續二進制日誌(適用於0.5.0以上版本)性能

8.開源 (GNU GPLv3)

 

Mydumper安裝使用

wget http://launchpad.net/mydumper/0.5/0.5.1/+download/mydumper-0.5.1.tar.gz

yum install glib2-devel.x86_64 zlib-devel.x86_64 pcre-devel.x86_64 cmake gcc gcc-c++
#tar zxvf mydumper-0.5.1.tar.gz 
#cd mydumper-0.5.1
# /usr/bin/cmake .
#make && make install
安裝完成:
Install the project...
-- Install configuration: ""
-- Installing: /usr/local/bin/mydumper
-- Removed runtime path from "/usr/local/bin/mydumper"
-- Installing: /usr/local/bin/myloader
-- Removed runtime path from "/usr/local/bin/myloader"

安裝過程若是提示出錯:
-- The CXX compiler identification is unknown
CMake Error: your CXX compiler: "CMAKE_CXX_COMPILER-NOTFOUND" was not found.   Please set CMAKE_CXX_COMPILER to a valid compiler path or name.
WARNINGUnable to find Sphinx documentation generator
WARNINGMissing python-sphinx documentation tools, docs will not be built
沒有安裝gcc gcc-c++
yum install gcc gcc-c++


mydumper -h 192.168.1.11 -uuser1 -p123456 -B testdb -o /data/mysqltest 
提示option parsing failed: Error parsing option -s, try --help
不持用戶名/密碼選項與值連起來寫格式

 

參數說明:
mydumper參數介紹:
-B, –database 須要備份的庫
-T, –tables-list 須要備份的表,用,分隔
-o, –outputdir 輸出目錄
-s, –statement-size Attempted size of INSERT statement in bytes, default 1000000
-r, –rows 試圖分裂成不少行塊表
-c, –compress 壓縮輸出文件
-e, –build-empty-files 即便表沒有數據,仍是產生一個空文件
-x, –regex 支持正則表達式
-i, –ignore-engines 忽略的存儲引擎,用,分隔
-m, –no-schemas 不導出表結構
-k, –no-locks 不執行臨時共享讀鎖 警告:這將致使不一致的備份
-l, –long-query-guard 長查詢,默認60s
–kill-long-queries kill掉長時間執行的查詢(instead of aborting)
-b, –binlogs 導出binlog
-D, –daemon 啓用守護進程模式
-I, –snapshot-interval dump快照間隔時間,默認60s,須要在daemon模式下
-L, –logfile 日誌文件
-h, –host
-u, –user
-p, –password
-P, –port
-S, –socket
-t, –threads 使用的線程數,默認4
-C, –compress-protocol 在mysql鏈接上使用壓縮
-V, –version
-v, –verbose 更多輸出, 0 = silent, 1 = errors, 2 = warnings, 3 = info, default 2

myloader參數介紹:
-d, –directory 導入備份目錄
-q, –queries-per-transaction 每次執行的查詢數量, 默認1000
-o, –overwrite-tables 若是表存在刪除表
-B, –database 須要還原的庫
-e, –enable-binlog 啓用二進制恢復數據
-h, –host
-u, –user
-p, –password
-P, –port
-S, –socket
-t, –threads 使用的線程數量,默認4
-C, –compress-protocol 鏈接上使用壓縮
-V, –version
-v, –verbose 更多輸出, 0 = silent, 1 = errors, 2 = warnings, 3 = info, default 2


mydumper輸出文件:

metadata:元數據 記錄備份開始和結束時間,以及binlog日誌文件位置。
table data:每一個表一個文件
table schemas:表結構文件
binary logs: 啓用–binlogs選項後,二進制文件存放在binlog_snapshot目錄下
daemon mode:
在這個模式下,有五個目錄0,1,binlogs,binlog_snapshot,last_dump。備份目錄是0和1,間隔備份,若是mydumper因某種緣由失敗而仍然有一個好的快照,當快照完成後,last_dump指向該備份。


實例:
# mydumper -h 192.168.1.11 -u user1 -p 123456 -B testdb -o /tmp/test0620

# myloader -h 192.168.1.11 -u user1 -p 123456 -d /tmp/test0620 -o -B testdb

默認開啓4個線程,若是提示:
** (myloader:22583): CRITICAL **: the specified directory is not a mydumper backup
導出的目錄必須惟一指定不可移動複製到其它地方,不然不認

 

已經線上使用,用mydumper來替代mysqldumper備份方式,通過校驗測試(目錄級恢復與mysqldumper恢復)的結果徹底一致。

mydumper開啓多線程導入導出速度相比mysqldumper提高近十倍,但若是系統資源有限,線程數不可開啓太多,不然不但帶來不了速度提高,反而會更慢.

相關文章
相關標籤/搜索