MySQL导入大数据量sql文件

MySQL导入数据的方式有多种
  1. 使用工具导入sql文件 : 导入文件不大的时候使用方便
  2. 终端使用命令导入 :导入文件很大的时候使用
  3. 数据库内使用source导入 : 导入文件很大的时候使用

ps: 第二和第三种方法没有进行比较,这里主要介绍第二种方法


临时修改参数

innodb_flush_log_at_trx_commit 这个参数默认是 1 ,可设置为0、1、2

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

sync_binlog sync_binlog默认值为1,可设置为[0,N)

  1. 当 sync_binlog =0,像操作系统刷其他文件的机制一样,MySQL不会同步到磁盘中去而是依赖操作系统来刷新binary log。
  2. 当 sync_binlog =N (N>0) ,MySQL 在每写 N次 二进制日志binary log时,会使用fdatasync()函数将它的写二进制日志binary log同步到磁盘中去。
# 1.进入MySQL命令行,临时修改这两个参数
mysql -uroot -p

# 2.修改参数
set global innodb_flush_log_at_trx_commit = 2;
set global sync_binlog = 2000;

# 3.退出命令行
exit

# 4.导入数据库文件
mysql -uroot -ppassword testdb < testdb.sql

# 5.导入成功之后,再把参数修改回去
set global innodb_flush_log_at_trx_commit = 1;
set global sync_binlog = 1;
posted @ 2022-05-31 14:56  海中明月  阅读(1154)  评论(0编辑  收藏  举报