Chinaunix首页 | 论坛 | 博客
  • 博客访问: 547355
  • 博文数量: 36
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 1749
  • 用 户 组: 普通用户
  • 注册时间: 2013-08-20 16:13
个人简介

中国科学院大学计算机硕士,曾在新浪爱彩数据库组带DBA团队,现居新加坡。wx: lihui_dba

文章分类

全部博文(36)

文章存档

2020年(2)

2019年(3)

2017年(7)

2016年(1)

2015年(7)

2014年(11)

2013年(5)

分类: Mysql/postgreSQL

2014-08-22 18:11:32

前言:

       Mydumper是一个针对MySQL和Drizzle的高性能多线程备份和恢复工具。开发人员分别来自MySQL,Facebook,SkySQL公司。

       这个工具采用多线程并发,大大加快了备份(前提是磁盘io够用)和恢复的速度。是mysqldump的良好替代品。

Mydumper主要特性:

      轻量级C语言写的代码
      比mysqldump接近快10倍的速度
      事务性和非事务性表一致的快照(适用于0.22+)
      快速的文件压缩(File compression on-the-fly)
      支持导出binlog
      多线程恢复( 0.2.1+)
      可以用守护进程的工作方式,定时的扫描和输出连续的二进制日志
      开源 (GNU GPLv3)

安装:

      1.从官网下载安装包 

      2.#yum install glib2-devel mysql-devel zlib-devel pcre-devel

         #tar xvzf mydumper-0.6.1.tar.gz

         # cd  mydumper-0.6.1 

         #cmake .

         #make && make install

备份恢复测试:

1.导入待测试的数据库,顺便测试mysqldump的恢复速度。

[root@localhost ~]# time mysql -uroot -pxxx mydumper < leaguelib_201408110530.sql

real 12m1.984s
user 0m17.049s
sys 0m5.808s

2.测试mydumper的导出速度。
[root@localhost ~]# time mydumper -u root -p xxx --database=mydumper --outputdir=mydumper_dir

real 0m45.906s
user 0m13.358s
sys 0m15.551s

另:导出时使用show processlist观察发现默认线程数为4

3.测试mysqldump的导出速度。

[root@localhost ~]# time mysqldump --default-character-set=utf8 --hex-blob mydumper -uroot -pxxx > leaguelib_mysqldump.sql

real 0m47.734s
user 0m15.338s
sys 0m7.275s

4.测试mydumper的导入速度。

[root@localhost mydumper_dir]# time myloader -u root -p xxx --database=mydumper -d mydumper_dir/

real 2m35.567s
user 0m2.285s
sys 0m6.118s

[root@localhost mydumper_dir]# time myloader -u root -p xxx --database=mydumper -d mydumper_dir/ -t 8

real 1m8.022s
user 0m1.424s
sys 0m2.402s

另:测试时发现默认线程数为4。

总结:

       从mysqldump和mydumper备份和恢复的速度来看,备份时间相差不大,并行备份并没有带来速度的飞跃,备份时观察磁盘io都基本达到瓶颈,但mydumper的磁盘IO使用率更高、更均匀。

       恢复时mydumper的多线程表现比mysqldump好很多,在使用mysql导入数据库时,单线程导入没有给磁盘IO带来压力。mydumper的8线程并发导入则几乎耗尽磁盘IO。恢复速度也达到了mysqldump的12倍。

       从备份和恢复情况来看,mydumper不失为一个更好的取代mysqldump的工具,其提供的诸如备份binlog等功能也比mysqldump更丰富。

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 ’^(?!(mysql|test))’
–ignore-engines, -i 忽略的存储引擎
–no-schemas, -m 不导出表结构 
–long-query-guard 长查询,默认60s,超过则通过mydumper
–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一样
–directory, -d 要还原的数据目录
–overwrite-tables, -o Drop any existing tables when restoring schemas

mydumper --help  查看帮助信息。

参考资料:



阅读(1688) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~