一、概述
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