【MySQL】mydumper调研

前言:最近打算对公司内部某核心系统数据库进行升级改造,替换原先的Mariadb10.1.12为官方版本MySQL5.7.21,初步测试了一下,貌似不能通过平滑升级的方案进行直接升级,这里打算采用逻辑导出再导入的方法,因为可维护的窗口时间较短,所以要尽可能减少导出再恢复的时间。

一、mydumper安装

去mydumper官网下载最新版本,我这里下载的是0.9.1版本,安装方法很简单。
1.上传服务器,解压缩
2.进入解压缩目录以后

cmake .
make
make install

3.在解压缩的目录后会生成两个文件mydumper和myloader,分别用于备份和恢复。

二、mydumper使用

具体使用方法直接加--help即可

binlog.h  CMakeCache.txt  cmake_install.cmake  common.h        config.h.in  g_unix_signal.c  install_manifest.txt  mydumper  mydumper.h  myloader.c  README      server_detect.h
[root@mysql-qb-02 mydumper]# ./mydumper --help
Usage:
  mydumper [OPTION...] multi-threaded MySQL dumping

Help Options:
  -?, --help                  Show help options

Application Options:
  -B, --database              需要备份的数据库
  -T, --tables-list           需要备份的表,用,隔开
  -o, --outputdir             导出目录
  -s, --statement-size        Attempted size of INSERT statement in bytes, default 1000000
  -r, --rows                  试图分裂成很多行块
  -F, --chunk-filesize        将表进行切割
  -c, --compress              压缩文件
  -e, --build-empty-files     空表也生成一个文件
  -x, --regex                 支持正则表达式
  -i, --ignore-engines        忽略存储引擎用,隔开
  -m, --no-schemas           不导出表结构
  -d, --no-data               不导出数据
  -G, --triggers              导出触发器
  -E, --events                导出job
  -R, --routines              导出存储过程和函数
  -k, --no-locks              不执行临时共享读锁,警告:将导致不一致的备份
  --less-locking             innodb引擎表最小锁定时间
  -l, --long-query-guard      长查询,默认60s
  -K, --kill-long-queries     kill掉长时间执行的查询
  -D, --daemon                启用守护进程
  -I, --snapshot-interval     dump快照间隔时间,默认60S,需要在守护模式下
  -L, --logfile               日志文件
  --tz-utc                    SET TIME_ZONE='+00:00' at top of dump to allow dumping of TIMESTAMP data when a server has data in different time zones or data is being moved between servers with different time zones, defaults to on use --skip-tz-utc to disable.
  --skip-tz-utc               
  --use-savepoints            启用快照减少medatalock时间,需要super权限
  --success-on-1146           Not increment error count and Warning instead of Critical in case of table doesn't exist
  --lock-all-tables           锁定所有表
  -U, --updated-since         Use Update_time to dump only tables updated in the last U days
  --trx-consistency-only      事务一致性
  -h, --host                  主机
  -u, --user                  用户名
  -p, --password              密码
  -P, --port                  端口
  -S, --socket                socket
  -t, --threads               多线程,默认4
  -C, --compress-protocol     在mysql连接上使用压缩
  -V, --version               输出版本
  -v, --verbose               更多输出

三、myloader使用

[root@mysql-qb-02 mydumper]# ./myloader --help
Usage:
  myloader [OPTION...] multi-threaded MySQL loader

Help Options:
  -?, --help                        Show help options

Application Options:
  -d, --directory                   导入的目录
  -q, --queries-per-transaction     每次执行的查询数量,默认1000
  -o, --overwrite-tables            如果表存在删除
  -B, --database                    需要还原的库
  -s, --source-db                   Database to restore
  -e, --enable-binlog               启用二进制恢复
  -h, --host                        主机
  -u, --user                        用户名
  -p, --password                    密码
  -P, --port                        端口
  -S, --socket                      socket
  -t, --threads                     恢复使用的线程数,默认4
  -C, --compress-protocol           使用mysql连接进行压缩
  -V, --version                     查看版本
  -v, --verbose                     更多输出

四、mysqldump、mydumper对比测试

为了测试两个导出工具的效率,写了个简单的脚本如下:

[root@mysql-qb-02 tmp]# cat mysqldump.sh 
#!/bin/sh
echo `date`
/usr/local/mysql/bin/mysqldump -uroot -pQB24Hour#7801!  QJWB24NEWS --single-transaction >/tmp/1.sql
echo `date`
[root@mysql-qb-02 tmp]# cat mydumper_4.sh 
#!/bin/sh
echo `date`
/usr/local/mydumper/mydumper -u root -p QB24Hour#7801! -t 4 -B QJWB24NEWS -o /tmp/2.sql
echo `date`
[root@mysql-qb-02 tmp]# cat mydumper_8.sh 
#!/bin/sh
echo `date`
/usr/local/mydumper/mydumper -u root -p QB24Hour#7801! -t 8 -B QJWB24NEWS -o /tmp/2.sql
echo `date`

五、测试结果

工具 时间
mysqldump 63min
mydumper_4 39min
mydumper_8 33min

你可能感兴趣的:(【MySQL】mydumper调研)