一、需求背景
存在超大备份mysql文件需要进行还原,直接使用soure还原,速度非常慢,故考虑采取优化措施。
mysql版本:5.7.34
数据库文件大小:14G左右
二、优化方案
1、调整最大接收数据包大小
查询当前数据包大小
SELECT @@max_allowed_packet (1024 * 1024) AS 'max_allowed_packet(MB)';
mysql> SELECT-> @@max_allowed_packet (1024 * 1024) AS 'max_allowed_packet(MB)';+------------------------+| max_allowed_packet(MB) |+------------------------+| 500.0000 |+------------------------+1 row in set (0.00 sec)
修改my.cnf配置文件,调整为1G
vim my.confmax_allowed_packet=1G
重启服务。
2、开启事务
1)关闭日志和自动提交
set sql_log_bin=OFF;//关闭日志set autocommit=0;//关闭autocommit自动提交模式set global max_allowed_packet = 20 *1024* 1024 * 1024;
2)开启事务;
START TRANSACTION;
3、执行source导入
4、提交事务
COMMIT;
3、临时修改参数
连接数据库,先修改参数为:
set global innodb_flush_log_at_trx_commit = 2;set global sync_binlog = 2000;
执行source导入;
导入成功后,还原参数:
set global innodb_flush_log_at_trx_commit = 1;set global sync_binlog = 1;
4、超大文件切割
使用SQLDumpSplitter预处理.sql文件,可以根据 实际情况切割成1024 Megabytes(即每个文件1Gb)。
SQLDumpSplitter可以自动将结构语句(建表建库等)和数据语句(insert语句等)分开,无需担心分割出错,该程序无需安装,直接运行即可。

三、效果实测
优化前耗时:6个小时左右(13:42-19:52)
优化后耗时:(8分48秒)

文章转载自巴韭特锁螺丝,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。




