--检查初始值。
show variables like 'innodb_flush_log_at_trx_commit';
show variables like 'sync_binlog';
# 1.进入MySQL命令行 临时修改这两个参数
set global innodb_flush_log_at_trx_commit = 2;
set global sync_binlog = 500;
# 2.执行SQL脚本导入
mysql -uroot -pxxxxxx testdb < testdb.sql
# 3.导入完成 再把参数改回来
set global innodb_flush_log_at_trx_commit = 1;
set global sync_binlog = 1;
参数说明:
MySQL 在每写 N次 二进制日志binary log时,会使用fdatasync()函数将它的写二进制日志binary log同步到磁盘中去。
(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 :批量刷新的事务数,设置的越大,每次批量刷入磁盘的数据越多,刷新次数越少。但是也不是越大越好,设置一个合适的值即可。一般设置:500~1000,可以提升性能。
文章介绍了如何在MySQL中临时修改innodb_flush_log_at_trx_commit和sync_binlog参数以优化事务处理和日志同步。参数innodb_flush_log_at_trx_commit控制事务提交时的日志写入与磁盘同步策略,而sync_binlog设置了批量事务刷入磁盘的频率。调整这些参数可以在性能和数据安全性间找到平衡点。
1740

被折叠的 条评论
为什么被折叠?



