1.mydumper简介
mydumper是针对mysql的高性能多线程备份工具,备份的速度高于mysqldump,数据还原时使用myloader工具。
2.mysqldumper安装
下载地址:https://launchpad.net/mydumper/+download
首先准备安装环境,配置好yum源,安装一些依赖软件包。
yum install cmake*
yum install glib2-devel mysql-devel zlib-devel pcre-devel openssl-devel
tar -zxvf mydumper-0.9.1.tar.gz
cd mydumper-0.9.1/
cmake .
make
make install
3.mydumper参数说明
-B, --database #需要备份的数据库,一个数据库一条命令备份,要不就是备份所有数据库,包括mysql.
-T, --tables-list #需要备份的表,用逗号分隔.
-o, --outputdir #备份文件目录.
-s, --statement-size #生成插入语句的字节数,默认1000000,这个参数不能太小,不然会报Row bigger than statement_size for tools.t_serverinfo.
-r, --rows #试图用行块来分割表,该参数关闭--chunk-filesize.
-F, --chunk-filesize #行块分割表的文件大小,单位是MB.
-c, --compress #压缩输出文件.
-e, --build-empty-files #即使表没有数据,也产生一个空文件.
-x, --regex #正则表达式匹配,如'db.table'.
-i, --ignore-engines #忽略的存储引擎,用逗号分隔.
-m, --no-schemas #不导出表结构.
-d, --no-data #不导出表数据.
-k, --no-locks #不执行共享读锁,警告:这将导致不一致的备份.
--less-locking #减到最小的锁在innodb表上.
-l, --long-query-guard #设置长查询时间,默认60秒,超过该时间则会报错:There are queries in PROCESSLIST running longer than 60s, aborting dump.
-K, --kill-long-queries #kill掉长时间执行的查询,备份报错:Lock wait timeout exceeded; try restarting transaction.
-D, --daemon #启用守护进程模式.
-I, --snapshot-interval #dump快照间隔时间,默认60s,需要在daemon模式下.
-L, --logfile #使用日志文件,默认标准输出到终端.
-h, --host #The host to connect to.
-u, --user #Username with privileges to run the dump.
-p, --password #User password.
-P, --port #TCP/IP port to connect to.
-S, --socket #UNIX domain socket file to use for connection.
-t, --threads #备份执行的线程数,默认4个线程.
-C, --compress-protocol #在mysql连接上使用压缩协议.
4.myloader参数说明
-d, --directory #备份文件所在的目录.
-q, --queries-per-transaction #每个事务的query数量, 默认1000.
-o, --overwrite-tables #如果表存在则先删除,使用该参数,需要备份时候要备份表结构,不然还原会找不到表.
-B, --database #指定需要还原的数据库.
-s, --source-db #还原的数据库.
-e, --enable-binlog #启用二进制日志恢复数据.
-h, --host #The host to connect to.
-u, --user #Username with privileges to run the dump.
-p, --password #User password.
-P, --port #TCP/IP port to connect to.
-S, --socket #UNIX domain socket file to use for connection.
-t, --threads #使用的线程数量,默认4.
-C, --compress-protocol #连接上使用压缩协议.
5.使用案例
案例1:备份全库,命令如下:
mydumper -u root -p 12345678 -o /usr/local/backup_outfile/
案例2:备份mysql库,命令如下;
mydumper -u root -p 12345678 -B mysql -o /usr/local/backup_outfile/mysql/
案例3:还原mysql库,命令如下:
myloader -u root -p 12345678 -B mysql -d /usr/local/backup_outfile/mysql/
案例4:备份mysql库下的example表,命令如下:
mydumper -u root -p 12345678 -B mysql -T example -o /usr/local/backup_mydumper/example/
案例5:还原mysql库下example表的命令如下:
myloader -u root -p 12345678 -B mysql -o example -d /usr/local/backup_mydumper/example/
案例6:备份mysql库下面的表user,example
mydumper -u root -p 12345678 -B mysql -T example,user -o /usr/local/backup_mydumper/example/
案例7:备份mysql库下面的example表数据,不备份表结构
mydumper -u root -p 12345678 -B mysql -T example -m -o /usr/local/backup_mydumper/example/
案例8:备份mysql库下example表,并进行压缩
mydumper -u root -p 12345678 -B mysql -T example -c -o /usr/local/backup_mydumper/example/
6.mysqldump和mydumper速度对比
首先使用mysqldump进行全库的备份,看消耗时间。
time mysqldump --single-transaction -uroot -p -A > /usr/local/backup_test/all_database_20181204.sql
其次使用mydumper进行全库的备份,看消耗时间
time mydumper -u root -p 12345678 -o /usr/local/backup_test/
可以看到使用mysqldump备份全库的消耗时间是3.809s,而使用mydumper备份全库的时间是0.373秒,虽然数据量小,但仍然可以看出使用mydumper工具进行备份消耗的时间明显比使用mysqldump的时间少。同样可以使用myloader还原全库进行还原的测试,测试结果是myloader工具进行数据的还原比mysqldump要块。
7.mydumper总结
多线程的备份工具
支持文件压缩功能
保证数据的一致性
比mysqldump的备份速度和还原速度都要快