Mydumper 的使用(MySQL 逻辑备份,用于替代mysqldump)

一、概述

mydumper 是一个针对MySQL和drizzle的高性能多线程的备份和恢复工具。

此工具的开发人员分别来自MySQL、facebook、skysql公司、目前已经有一些大型产品业务测试并使用了该工具。我们在恢复数据库时也可使用myloader工具。 Mydumper的主要特性包括:

· 采用轻量级C语言写的代码。

· 相比于mysqldump,其速度快了近10倍。

· 具有事务性和非事务性表一致的快照(适用于0.2.2+)。

· 可快速进行文件压缩(File compression on-the-fly)。

· 支持导出binlog。

· 可多线程恢复(适用于0.2.1+)。

· 可以用守护进程的工作方式,定时扫描和输出连续的二进制日志。

 

二、编译安装

安装命令如下所示:

[root@localhost wwwroot]# yum install glib2-devel zlib-devel pcre-devel cmake
[root@localhost wwwroot]# git clone https://github.com/maxbube/mydumper.git
[root@localhost wwwroot]# cd mydumper
[root@localhost wwwroot]# cmake .
[root@localhost wwwroot]# make
[root@localhost wwwroot]# make install
[root@localhost wwwroot]# mydumper -V
mydumper 0.9.1, built against MySQL 5.7.27

Mydumper中的主要参数如下:

· -host,-h:连接的MySQL服务器。
· -user,-u:用户备份的连接用户。
· -password,-p:用户的密码。
· -port,-P:连接端口。
· -socket,-S:连接socket文件。
· -database,-B:需要备份的数据库。
· -table-list,-T:需要备份的表,用逗号(,)分隔。
· -outputdir,-o:输出的目录。
· -build-empty-files,-e:默认无数据则只有表结构文件。
· -regex,-x:支持正则表达式,如mydumper-regex'(2l(mysqltest)'。
· -ignore-engines,-i:忽略的存储引擎。
· -no-schemas,-m:不导出表结构。
· -long-query-guard:长查询,默认60s。
· -kill-long-queries,-k:可以设置kill长查询。
· -verbose,-v:0=silent,1=errors,2=warmings,3=info,默认是2。
· -binlogs,-b:导出binlog。
· -daemon,-D:启用守护进程模式。
· -snapshot-interval,-I:dump快照间隔时间,默认60s。
· -logfile,-L:mysaqldumper的目志输出,一般在Daemon模式下使用。

 

三、mydumper 与 mysqldump 备份数据对比

[root@localhost home]# time mydumper -u root -p root -B laravel-shop -o /home/laravel-shop2.sql

real    0m0.039s
user    0m0.004s
sys    0m0.035s
[root@localhost home]# time mysqldump -u root -p laravel-shop > /home/laravel-shop3.sql
Enter password:

real    0m2.093s
user    0m0.016s
sys      0m0.047s

 

四、对比mysql与myloader数据还原

[root@localhost home]# time mysql -f -u root -p laravel-shop < /home/laravel-shop3.sql
Enter password:

real    0m2.511s
user    0m0.017s
sys    0m0.033s
[root@localhost home]# time myloader -u root -p root -B laravel-shop -d /home/laravel-shop3.sql

real    0m0.006s
user    0m0.003s
sys    0m0.003s