Mydumper介绍(摘自网上):   http://www.mydumper.org/

Mydumper是一个针对MySQL和Drizzle的高性能多线程备份和恢复工具。开发人员主要来自MySQL,Facebook,SkySQL公司。目前已经在一些线上使用了Mydumper。

Mydumper主要特性:

1.轻量级C语言写的

2.执行速度比mysqldump快10倍

3.事务性和非事务性表一致的快照(适用于0.2.2以上版本)

4.快速的文件压缩

5.支持导出binlog

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提升近十倍,但如果系统资源有限,线程数不可开启太多,否则不但带来不了速度提升,反而会更慢.