mysql 导入提速
导出
增加参数–compress和–single-transaction
1 | # 导出整个实例 |
导入
在 MySQL 中,有一对大名鼎鼎的 “双一” 参数,即 innodb_flush_log_at_trx_commit 与 sync_binlog 。为了安全性这两个参数默认值为 1,为了快速导入脚本,我们可以临时修改下这两个参数,下面简单介绍下这两个参数:
innodb_flush_log_at_trx_commit:
innodb_flush_log_at_trx_commit 默认值为 1,可设置为 0、1、2
如果 innodb_flush_log_at_trx_commit 设置为 0,log buffer 将每秒一次地写入 log file 中,并且 log file 的 flush(刷到磁盘) 操作同时进行。该模式下,在事务提交的时候,不会主动触发写入磁盘的操作。
如果 innodb_flush_log_at_trx_commit 设置为 1,每次事务提交时 MySQL 都会把 log buffer 的数据写入 log file,并且 flush(刷到磁盘) 中去.
如果 innodb_flush_log_at_trx_commit 设置为 2,每次事务提交时 MySQL 都会把 log buffer 的数据写入 log file. 但是 flush(刷到磁盘) 操作并不会同时进行。该模式下, MySQL 会每秒执行一次 flush(刷到磁盘) 操作。
sync_binlog:
sync_binlog 默认值为 1,可设置为 [0,N)
当 sync_binlog =0,像操作系统刷其他文件的机制一样,MySQL 不会同步到磁盘中去而是依赖操作系统来刷新 binary log。
当 sync_binlog =N (N>0) ,MySQL 在每写 N 次 二进制日志 binary log 时,会使用 fdatasync() 函数将它的写二进制日志 binary log 同步到磁盘中去。
这两个参数可以在线修改,若想快速导入,可以按照下面步骤来操作:
1 | # 1.进入MySQL命令行 临时修改这两个参数 |


