mysql快速导入数据方式

参考链接:
https://mp.weixin.qq.com/s?src=11&timestamp=1599273969&ver=2565&signature=ZZRrPPkUgP7pS2PR7BiSx3yJKMMs81JiXE3DwjKTEEQ9XhTv54c83AKitS8kZuKfkHcmlncbSoq-M1yPs9RqUmIW-KdvrCv56LQsB6lW5M3CBbsLvS*0dcHfiMSJly32&new=1

1、描述:导入大量数据时,如何快速导入数据,可通过修改下列参数的方式成倍提高速度

1.1 innodb_flush_log_at_trx_commit

innodb_flush_log_at_trx_commit 设置为 0,log buffer将每秒一次地写入log file中,并且log file的flush(刷到磁盘)操作同时进行.该模式下,在事务提交的时候,不会主动触发写入磁盘的操作。

1.2 innodb_flush_log_at_trx_commit

innodb_flush_log_at_trx_commit设置为 1,每次事务提交时MySQL都会把log buffer的数据写入log file,并且flush(刷到磁盘)中去。

1.3 innodb_flush_log_at_trx_commit

innodb_flush_log_at_trx_commit设置为 2,每次事务提交时MySQL都会把log buffer的数据写入log file.但是flush(刷到磁盘)操作并不会同时进行。该模式下,MySQL会每秒执行一次 flush(刷到磁盘)操作。
当 sync_binlog =0,像操作系统刷其他文件的机制一样,MySQL不会同步到磁盘中去而是依赖操作系统来刷新binary log。
当 sync_binlog =N (N>0) ,MySQL 在每写 N次 二进制日志binary log时,会使用fdatasync()函数将它的写二进制日志binary log同步到磁盘中去。

2.具体操作步骤

2.1 查看当前mysql的配置参数

show global variables where variable_name = ‘innodb_flush_log_at_trx_commit’;
show global variables where variable_name = ‘sync_binlog’;

2.2 进入MySQL命令行 临时修改这两个参数

set global innodb_flush_log_at_trx_commit = 2;
set global sync_binlog = 2000;

2.3 执行SQL脚本导入

mysql -uroot -pxxxxxx testdb < testdb.sql

2.4 导入完成 再把参数改回来

set global innodb_flush_log_at_trx_commit = 1;
set global sync_binlog = 1;

  • [备注]:导入时若提示GTID错误,需重置GTID,建议导入时,关闭bin-log;
    mysql -uroot -p -e ‘reset master’;

  • 【扩展】据说source比直接导入快;
    mysql -uroot -p < /sdyunlei/backups/mysql/databases_20200903.sql
    source /sdyunlei/backups/mysql/databases_20200905.sql;

####################################################################

  • 查看数据导入时的进度方式:
    导入sql时,查看当前执行到的语句;结合less(-m)查询sql脚本,可得到导入进度;
    show processlist;

下面命令可直接显示进度条;
pv -t -p databases_20200903.sql | mysql -uroot -p

  • 查询
    –show global status where Variable_name in(‘com_select’,‘com_insert’,‘com_delete’,‘com_update’);
    查询出当前四种操作的总次数
    x1
    y1
    z1
    w1
    –select sleep(60)
    延时60秒
    –show global status where Variable_name in(‘com_select’,‘com_insert’,‘com_delete’,‘com_update’);
    一分钟后四种操作的总次数
    x2
    y2
    z2
    w2

计算每秒 各种操作的次数
每秒查询: (x1-x2)/60
每秒插入: (y1-y2)/60
每秒删除: (z1-z2)/60
每秒更新: (w1-w2)/60

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值