MySQL多线程备份工具mydumper

摘要:
Mydumper是一个用于MySQL和Drizzle的高性能多线程备份和恢复工具。该工具的开发人员来自MySQL、Facebook和SkySQL。目前,一些大型产品已经测试并使用了该工具。Mydumper的主要特性包括:1.代码是用轻量级C语言编写的--regex,-x:支持正则表达式,例如Mydumper regex‘^(?!--logfile,-L:mysqldumper日志输出,通常在守护程序模式下使用。

mydumper是一个针对MySQL和Drizzle的高性能多线程的备份和恢复工具。此工具的开发人员分别来自MySQL、Fackbook、SkySQL公司,目前已经有一些大型产品业务测试并使用了该工具。我们在恢复数据库时也可以使用myloader工具。

Mydumper的主要特性包括:

一、采用了轻量级C语言写的代码。

二、相比于mysqldump,其速度快了近10倍(有待测试)

三、具有事务性和非事务性表一致的快照(应用于0.2.2+)

四、可以快速进行文件压缩(File compression on-the-fly)

五、支持导出binlog

六、可以多线程恢复(适用于0.2.1+)

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

测试环境:6核、6G内存,备份数据里为1.5G左右。

安装mydumper,到官网下载mydumper包:https://launchpad.net/mydumper/

[root@localhost ~]# yum install glib2-devel mysql-devel zlib-devel pcre-devel cmake -y
[root@localhost ~]# tar zxvf mydumper-0.6.2.tar.gz 
[root@localhost ~]# cd mydumper-0.6.2[root@localhost mydumper-0.6.2]# cmake .       
[root@localhost mydumper-0.6.2]# make && make install

mydumper中主要参数说明:(mydumper --help)

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

myloader的大多数参数和mydumper一样,如下:

-d, --directory                   备份文件的文件夹
-q, --queries-per-transaction     每次事物执行的查询数量,默认是1000
-o, --overwrite-tables            如果要恢复的表存在,则先drop掉该表,使用该参数,需要备份时候要备份表结构
-B, --database                    需要还原的数据库
-e, --enable-binlog               启用还原数据的二进制日志
-h, --host                        主机
-u, --user                        还原的用户
-p, --pass<a href="http://www.it165.net/edu/ebg/" target="_blank" class="keylink">word</a>密码
-P, --port                        端口
-S, --socket                      socket文件
-t, --threads                     还原所使用的线程数,默认是4
-C, --compress-protocol           压缩协议
-V, --version                     显示版本
-v, --verbose                     输出模式, 0 = silent, 1 = errors, 2 = warnings, 3 = info, 默认为2

下面分别使用mydumper和mysqldump备份,看备份时间,如下:

[root@localhost tpcc-mysql]# time mydumper -u root -p 123456 -S /data/mysql-5.5.40/mysql.sock -B tpcctest -o /root/tpcctest

real    0m16.463s
user    0m16.436s
sys     0m2.205s
[root@localhost tpcc-mysql]# time /usr/local/mysql-5.5.40/bin/mysqldump -uroot -p123456 -S /data/mysql-5.5.40/mysql.sock tpcctest > /root/tpcctest2.sql 

real    0m37.875s
user    0m28.847s
sys     0m3.701s
[root@localhost tpcc-mysql]# 

mydumper备份出来的是一个文件夹,mysqldump备份出来的是一个.sql文件,大小如下:

[root@localhost tpcctest]# cd ..
[root@localhost ~]# du -shtpcctest
1.5G    tpcctest
[root@localhost ~]# du -shtpcctest2.sql 
1.5G    tpcctest2.sql

mydumper是多线程的,默认4个线程,可以用-t选项可以指定线程数,下面分别对不同线程进行了测试的结果:

[root@localhost tpcc-mysql]# time mydumper -u root -p 123456 -S /data/mysql-5.5.40/mysql.sock -B tpcctest -o -t 6 /root/tpcctest                       

real    0m16.014s
user    0m16.671s
sys     0m2.083s
[root@localhost tpcc-mysql]# time mydumper -u root -p 123456 -S /data/mysql-5.5.40/mysql.sock -B tpcctest -o -t 10 /root/tpcctest

real    0m17.494s
user    0m16.283s
sys     0m2.771s
[root@localhost tpcc-mysql]# time mydumper -u root -p 123456 -S /data/mysql-5.5.40/mysql.sock -B tpcctest -o -t 3 /root/tpcctest 

real    0m14.774s
user    0m16.662s
sys     0m2.814s
[root@localhost tpcc-mysql]# time mydumper -u root -p 123456 -S /data/mysql-5.5.40/mysql.sock -B tpcctest -o -t 2 /root/tpcctest

real    0m16.382s
user    0m16.603s
sys     0m2.692s

可以看到,并不是线程数多,备份的速度就会快。

还原速度对比:

下面分别是myloader和mysql直接还原的速度对比:

[root@localhost ~]# time myloader -u root -p 123456 -h localhost -S /data/mysql-5.5.40/mysql.sock -B tpcctest -d /root/tpcctest   

real    4m55.778s
user    0m3.733s
sys     0m1.075s
[root@localhost ~]# time mysql -uroot -p123456 -S /data/mysql-5.5.40/mysql.sock tpcctest < /root/tpcctest2.sql     

real   7m35.524s
user    0m34.156s
sys     0m2.032s

用mydumper备份单个表的例子:

[root@localhost ~]# mydumper -u root -p 123456 -h localhost -S /data/mysql-5.5.40/mysql.sock -B tpcctest -T customer -o /root/customer
[root@localhost ~]# cd customer/[root@localhost customer]# lsmetadata  tpcctest.customer-schema.sql  tpcctest.customer.sql

mydumper还有很多功能,有兴趣的朋友,可以自己研究下^.^

有一个朋友说他线上用mydumper备份176G的数据,大概用了21分钟,但他是用最大系统资源来备份的(服务器配置:raid 10 raid卡没有缓存 Intel(R) Xeon(R) CPU E5-2670 0 @ 2.60GHz 32核 32G内存)

总结:

一、mydumper的备份速度比mysqldump快上不少,因为mydumper支持多线程备份和恢复

二、虽然可以支持多线程备份,但并不是线程越多,速度就越快

三、mydumper的功能也比较强大,参数比较多,可以根据需求,灵活配置

四、mydumper备份和恢复的快慢,和服务器硬件配置有很大的关系,本实验测试只是举例子。

参考书籍:《MySQL管理之道:性能调优、高可用与监控》

作者:陆炫志

出处:xuanzhi的博客 http://www.cnblogs.com/xuanzhi201111

您的支持是对博主最大的鼓励,感谢您的认真阅读。本文版权归作者所有,欢迎转载,但请保留该声明。

免责声明:文章转载自《MySQL多线程备份工具mydumper》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇华为EC321CDMA PCMICA 无线网卡Ubuntu下使用SQL server约束下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

Hive的安装与部署(MySQL作为元数据库)

Hive的安装与部署(MySQL作为元数据) (开始之前确保Hadoop环境已经启动,确保Linux下的MySQL已经安装好) 1.     安装Hive (1)下载安装包 可从apache上下载hive安装包:http://mirror.bit.edu.cn/apache/hive/ (2)压缩包解压:   (2)移动至指定目录:(这里是移动至/us...

Linux下KVM的图形界面管理工具(virt-manager)(桌面版)

背景: virt-manager是用于管理KVM虚拟环境的主要工具,virt-manager默认设置下需要使用root用户才能够使用该工具。当你想在KVM hypervisor服务器上托管虚拟机,由最终用户而非root用户访问这些虚拟机时并不总是很便利。 在某些情况下,通过一些virt-manager设置就能够很容易避免该问题。如果最终用户需要virt-m...

mysql 行转列

1.表数据 2.结果数据 CREATE TABLE `TEST_TB_GRADE` ( `ID` int(10) NOT NULL AUTO_INCREMENT, `USER_NAME` varchar(20) DEFAULT NULL, `COURSE` varchar(20) DEFAULT NULL, `SCORE` float...

MySQL SQL优化

前言 有人反馈之前几篇文章过于理论缺少实际操作细节,这篇文章就多一些可操作性的内容吧。 注:这篇文章是以 MySQL 为背景,很多内容同时适用于其他关系型数据库,需要有一些索引知识为基础。 优化目标 1.减少 IO 次数 IO永远是数据库最容易瓶颈的地方,这是由数据库的职责所决定的,大部分数据库操作中超过90%的时间都是 IO 操作所占用的,减少 IO...

mysql-8.0 安装教程(自定义配置文件,密码方式已修改)

下载zip安装包:   MySQL8.0 For Windows zip包下载地址:https://dev.mysql.com/downloads/file/?id=476233,进入页面后可以不登录。后点击底部“No thanks, just start my download.”即可开始下载。   或直接下载:https://dev.mysql.com...

CentOS7.5的网卡配置(CentOS 6.5的虚拟主机在vmware中迁移的网卡设置)

一、CentOS7.5的网卡配置环境:CentOS 7.5,vmware14.1,安装过程选择是minimal最小化安装; 1、进到网卡配置文件目录 [root@localhost ~]# cd /etc/sysconfig/network-scripts/ 查看文件名 [root@localhost network-scripts]# ll total...