对于较大的库,原生的mysqldump导出,mysql命令导入,这个过程太长,mydumper是一个多线程导入导出工具。mysql
导出:git
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 # 日志
导入:github
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,看上去刚开发不是好久,功能、性能、稳定性还有待进一步测试。使用方式基本相同,有时间试用后再写具体用法。sql