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, �Cdatabase 需要备份的库
-T, �Ctables-list 需要备份的表,用,分隔
-o, �Coutputdir 输出目录
-s, �Cstatement-size Attempted size of INSERT statement in bytes, default 1000000
-r, �Crows 试图分裂成很多行块表
-c, �Ccompress 压缩输出文件
-e, �Cbuild-empty-files 即使表没有数据,还是产生一个空文件
-x, �Cregex 支持正则表达式
-i, �Cignore-engines 忽略的存储引擎,用,分隔
-m, �Cno-schemas 不导出表结构
-k, �Cno-locks 不执行临时共享读锁 警告:这将导致不一致的备份
-l, �Clong-query-guard 长查询,默认60s
�Ckill-long-queries kill掉长时间执行的查询(instead of aborting)
-b, �Cbinlogs 导出binlog
-D, �Cdaemon 启用守护进程模式
-I, �Csnapshot-interval dump快照间隔时间,默认60s,需要在daemon模式下
-L, �Clogfile 日志文件
-h, �Chost
-u, �Cuser
-p, �Cpassword
-P, �Cport
-S, �Csocket
-t, �Cthreads 使用的线程数,默认4
-C, �Ccompress-protocol 在mysql连接上使用压缩
-V, �Cversion
-v, �Cverbose 更多输出, 0 = silent, 1 = errors, 2 = warnings, 3 = info, default 2
myloader参数介绍:
-d, �Cdirectory 导入备份目录
-q, �Cqueries-per-transaction 每次执行的查询数量, 默认1000
-o, �Coverwrite-tables 如果表存在删除表
-B, �Cdatabase 需要还原的库
-e, �Cenable-binlog 启用二进制恢复数据
-h, �Chost
-u, �Cuser
-p, �Cpassword
-P, �Cport
-S, �Csocket
-t, �Cthreads 使用的线程数量,默认4
-C, �Ccompress-protocol 连接上使用压缩
-V, �Cversion
-v, �Cverbose 更多输出, 0 = silent, 1 = errors, 2 = warnings, 3 = info, default 2
mydumper输出文件:
metadata:元数据 记录备份开始和结束时间,以及binlog日志文件位置。
table data:每个表一个文件
table schemas:表结构文件
binary logs: 启用�Cbinlogs选项后,二进制文件存放在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提升近十倍,但如果系统资源有限,线程数不可开启太多,否则不但带来不了速度提升,反而会更慢.