美文网首页
【MySQL】mydumper调研

【MySQL】mydumper调研

作者: 拾荒者charley | 来源:发表于2018-04-04 09:36 被阅读0次

    前言:最近打算对公司内部某核心系统数据库进行升级改造,替换原先的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调研

          本文链接:https://www.haomeiwen.com/subject/brnhhftx.html