MySQL多线程备份工具mydumper

业务系统中, 随着业务量持续增加, 日益增大的数据库表在做备份和迁移的时候用传统的导入导出性能会越来越差

本文介绍了数据库备份工具mydumper的使用, 利用mydumper多线程备份的特性, 让数据库的备份和迁移变更更加简便和快捷

Mydumper主要特性

轻量级 支持多线程导出数据,速度更快。
支持一致性备份。
支持将导出文件压缩,节约空间。
支持多线程恢复。
支持以守护进程模式工作,定时快照和连续二进制日志。
支持按照指定大小将备份文件切割。
数据与建表语句分离。
开源 (GNU GPLv3)
  1. 安装mydumper

apt-get install mydumper
  1. 安装zip

apt-get install zip
  1. 导出库

mydumper -u user -p pwd -G -R -E -B database-name -o /home/sql/database-name/ -F 100 -t 12


database-name: 指定导出的数据库
/home/sql/database-name : 导出的sql文件存储目录
-F 100: 单个sql文件上限100M
-t 12 : 启用12个线程同时读写
  1. 压缩指定目录成zip包方便传输

zip -r sqlData.zip  /home/sql/database-name/*



  1. 解压zip包

zip -r sqlData.zip  /home/sql/database-name/*



  1. 导入库

myloader -u user -p pwd  -B database-name -o -d /home/sqlData -t 12
database-name: 导入的数据库名
/home/database-name : 导入的sql文件读取目录
-t 12 : 启用12个线程同时读写

mydumper参数

Application Options:
  -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                  不导出表数据
  -G, --triggers                 导出触发器
  -E, --events                   导出事件
  -R, --routines                 导出存储过程
  -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                  使用日志文件,默认标准输出到终端
  --tz-utc                       备份的时候允许备份Timestamp,这样会导致不同时区的备份还原会出问题,默认关闭,参数:--skip-tz-utc to disable.
  --skip-tz-utc               
  --use-savepoints               使用savepoints来减少采集metadata所造成的锁时间,需要SUPER权限
  --success-on-1146              Not increment error count and Warning instead of Critical in case of table doesn't exist
  --lock-all-tables              锁全表,代替FLUSH TABLE WITH READ LOCK
  -U, --updated-since            使用Update_time仅转储在过去U天内更新的表
  --trx-consistency-only         仅事务一致性 快照备份 必加参数!!!
  -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连接上使用压缩协议
  -V, --version                  Show the program version and exit
  -v, --verbose                  更多输出, 0 = silent, 1 = errors, 2 = warnings, 3 = info, default 2  





myloader参数

Application Options:
  -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               连接上使用压缩协议
  -V, --version                         Show the program version and exit
  -v, --verbose                         更多输出, 0 = silent, 1 = errors, 2 = warnings, 3 = info, default 2



添加新评论