MySQL多线程备份工具mydumper

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/

[[email protected] ~]# yum install glib2-devel mysql-devel zlib-devel pcre-devel cmake -y
[[email protected] ~]# tar zxvf mydumper-0.6.2.tar.gz
[[email protected] ~]# cd mydumper-0.6.2
[[email protected] mydumper-0.6.2]# cmake .
[[email protected] 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, -v:0=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备份,看备份时间,如下:

[[email protected] 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
[[email protected] 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
[[email protected] tpcc-mysql]# 

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

[[email protected] tpcctest]# cd ..
[[email protected] ~]# du -sh tpcctest
1.5G    tpcctest
[[email protected] ~]# du -sh tpcctest2.sql
1.5G    tpcctest2.sql

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

[[email protected] 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
[[email protected] 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
[[email protected] 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
[[email protected] 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直接还原的速度对比:

[[email protected] ~]# 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
[[email protected] ~]# 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备份单个表的例子:

[[email protected] ~]# mydumper -u root -p 123456 -h localhost -S /data/mysql-5.5.40/mysql.sock -B tpcctest -T customer -o /root/customer
[[email protected] ~]# cd customer/
[[email protected] customer]# ls
metadata  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管理之道:性能调优、高可用与监控》

时间: 2024-08-14 16:10:53

MySQL多线程备份工具mydumper的相关文章

MySQL多线程备份工具:mydumper

MySQL多线程备份工具:mydumper http://www.orczhou.com/index.php/2011/12/how-to-split-mysqldump-file/ Mydumper是一个针对MySQL和Drizzle的高性能多线程备份和恢复工具.开发人员分别来自MySQL,Facebook,SkySQL公司.目前已经在有一些大型产品业务上测试并使用了Mydumper.分稳定版和开发版两种,目前最新稳定版是0.2.3和最新开发版是0.5.1.恢复时可使用myloader工具.

MySQL多线程备份恢复工具mydumper,myloder

mydumper是多线程备份工具,默认开启4个线程,比mysqldump的速度更快 mydumper备份时,数据和表结构是分开的,比如备份test表时,会生成test.sql文件和test.schema.sql文件. myloader导数据的时候默认不会记录二进制日志,即使你的sql_log_bin=on. 准备安装介质: 下载mydumper-0.6.2.tar.gz 下载地址:https://launchpad.net/mydumper 安装依赖包: # yum install glib2-

MySQL Study之--Mysql数据库备份工具(mysqldump)

MySQL Study之--Mysql数据库备份工具(mysqldump) 对于Mysql Database的备份方式有很多种,此次文档主要介绍mysqldump工具: mysqldump:      mysqldump工具很多方面类似相反作用的工具mysqlimport.它们有一些同样的选项.但mysqldump能够做更多的事情.它可以把整个数据库装载到一个单独的文本文件中.这个文件包含有所有重建您的数据库所需要的SQL命令.这个命令取得所有的模式(Schema,后面有解释)并且将其转换成DD

二十、mysql mysqldump备份工具

1.备份所有数据库 mysqldump -uroot -p --all-database > c:\all.sql 备份所有数据库到c盘下的all,sql文件 2.备份某个数据库 mysqldump -uroot -p foo > c:\foo.sql 只备份foo数据库 3.备份某个表 mysqldump -uroot -p foo emp > c:\foo.emp.sql 备份foo数据库下面的emp表 4.基于备份文件的完全恢复 1.mysql -uroot -p foo <

mysql物理备份工具Xtrabackup安装配置

mysql物理备份工具Xtrabackup安装配置 1????Xtrabackup工具介绍 Xtrabackup是一个对InnoDB做物理数据备份的工具,支持在线热备份(备份时不影响数据读写),是商业备份工具InnoDB Hotbackup的一个很好的替代品. Xtrabackup有两个主要的工具:xtrabackup.innobackupex (1)xtrabackup只能备份InnoDB和XtraDB两种数据表,而不能备份MyISAM数据表. (2)innobackupex是用来备份非Inn

MySQL逻辑备份利器-mydumper

关于mydumper的简介和下载请访问:https://launchpad.net/mydumper 简言之,mydumper是多线程逻辑备份,对于表和数据量很大的情况下,建议使用mydumper提高备份效率,比mysqldumper要快很多. 我为什么要用mydumper?是基于某个需求,比如我需要把某个库下的所有按日期分表的表备份并导入到新实例?如何实现? table_20170101 table_20170102 ...... table_20171231 一共三百多张表 开始我去尝试my

Mysql多线程性能测试工具sysbench 安装、使用和测试

From:http://www.cnblogs.com/zhoujinyi/archive/2013/04/19/3029134.html 摘要:      sysbench是一个开源的.模块化的.跨平台的多线程性能测试工具,可以用来进行CPU.内存.磁盘I/O.线程.数据库的性能测试.目前支持的数据库有MySQL.Oracle和PostgreSQL.当前功能允许测试的系统参数有: file I/O performance (文件I / O性能) scheduler performance (调

生产环境mysql快速备份工具XtraBackup使用案例

Mysql的备份有很多种方式,最常用的应该是mysqldump了,将数据库导出一个 sql文件,还原的时候source db.sql 就欢快的执行了.小伙伴愉快的布上一个shell脚本,配上cron,幸福的看着每天备份文件的生成,倍感安全.假如一个mysql超过了10G呢? 请相信我,导出的时间需要好几个小时,那还原呢,时间会更长.我曾经用sql还原一个6G的数据库,用了3个多小时. mysqldump这种逻辑备份的缺点就不多说了,说说xtrabackup,又是PERCONA,就冲这个名号,值得

mysql自动备份工具|MySQL自动备份专家下载 V2018 官方版

MySQL自动备份专家是专为mysql的用户制作的数据库自动备份软件,软件可以设置指定的时间对指定的数据库进行备份,支持多个任务批量备份,然后上传到指定的服务器,不需要你进行任何操作,非常的智能. 1.点击[立即备份]可以立即备份数据库: 2.点击[定时任务]可以设置指定时间自动备份. 1.智能自动 自动备份.自动邮件通知.自动FTP上传.自动根据设定完成备份及汇报. 2.小巧 安装包仅1.93MB,安装后6MB也不到.轻巧,无任何第三方插件和广告的免费软件 3.批量备份 可以同时对一个和多个数