对于较大的库,原生的mysqldump导出,mysql命令导入,这个过程太长,mydumper是一个多线程导入导出工具。
导出:
mydumper --user=user \ # 数据库用户
--password=user_password \ # 登录密码
--port=3306 \ # 端口
--host=127.0.0.1 \ # 主机地质
--threads=32 \ # 导出线程数
--compress-protocol \ # 启用压缩协议
--trx-consistency-only \ # 事务一致性
--complete-insert \ # 使用完整的包含列名的插入语句
--use-savepoints \ # 使用savepoints以降低metadata锁的影响
--chunk-filesize=256 \ # 文件块大小,单位M字节
# 或者可以使用--rows
--kill-long-queries \ # 终止长查询,默认60秒
--regex '^(?!(mysql|test|percona))' \ # 忽略的库
--events \ #
--triggers \ #
--routines \ #
--daemon \ # 后台运行
--outputdir=/data/backup/export-20180210 \ # 输出
--logfile=/data/backup/md.log # 日志
导入:
myloader --user=user \ # 数据库用户
--password=user_password \ # 登录密码
--port=3306 \ # 端口
--host=127.0.0.1 \ # 主机地址
--threads=64 \ # 导入线程数
--compress-protocol \ # 启用压缩协议
--overwrite-tables \ # 覆盖原有表
--directory=/data/backup/export-20180210/0/ # 数据文件
另外,发现一个go语言的版本,https://github.com/XeLabs/go-mydumper,看上去刚开发不是很久,功能、性能、稳定性还有待进一步测试。使用方式基本相同,有时间试用后再写具体用法。