在一次生产环境排查问题中,发现mysql的从库延时很大。后来通过如下操作解决。

先看下服务器的innodb_flush_log_at_trx_commit参数值,如果值为非2,将参数innodb_flush_log_at_trx_commit值设置为2

mysql> show variables like \'%innodb_flush_log_at_trx_commit%\';
+--------------------------------+-------+
| Variable_name                  | Value |
+--------------------------------+-------+
| innodb_flush_log_at_trx_commit | 1     |
+--------------------------------+-------+
1 row in set

mysql> set global  innodb_flush_log_at_trx_commit=2;


innodb_flush_log_at_trx_commit 参数解释:
0(延迟写): log_buff  --每隔1秒--> log_file  —实时—> disk                
1(实时写,实时刷): log_buff  —实时—>  log_file  —实时—> disk    
2(实时写,延迟刷): log_buff  —实时—> log_file --每隔1秒--> disk
 
0:最快减少mysql写的等待 
1:最大安全性,不会丢失数据 
2:折中,减少操作系统文件写入等待时间

 

收藏 打印