导入使用source 命令是单线程导入,top -H观察单核cpu已经接近100%。
1、寻找多线程导出导入工具
方案一
http://seanlook.com/2016/11/17/python-mysqldump-out-in-concurrency-magic/
https://github.com/seanlook/mypumpkin
表级多并发,对我单一表4亿数据不好用
方案二 mydumper
https://blog.imdst.com/mysqlduo-xian-cheng-bei-fen-gong-ju-mydumper-2/
应该可以加速,但这个需要用这个工具重新导出,我已经用mysqldump导出了,不用了
2、优化mysql的参数提升导入速度
参考https://yq.aliyun.com/ziliao/22681
注释掉binlog 和replaylog 参数关闭binlog和replaylog
将innodb_flush_log_at_trx_commit这个参数改为0
测试导入速度提升5倍
还可以通过mysqldump分别调出库结构和数据,先创建库结构,然后删除大表的索引,然后再导入数据,后补充索引的方式进一步优化。
3、可以考虑写一个脚本解析mysqldump导出的sql文件,遇到insert时就开启多线程导入,如果不是,则走单线程。有时间在弄
参考http://liyangliang.me/posts/2017/02/load-data-into-mysql-using-python-multiprocessing/
© 2018, 新之助meow. 原创文章转载请注明: 转载自http://www.xinmeow.com