赞
踩
MySQL数据导入时,iotop发现jdb2/sdb1-8 io使用过高,总是在99%左右。
处理方法:
查看sync_binlog变量设置,默认是1 。
mysql> show variables like '%sync_binlog%';
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| sync_binlog | 1 |
+---------------+-------+
1 row in set (0.00 sec)
mysql>
sync_binlog=n,当每进行n次事务提交之后,MySQL将进行一次fsync之类的磁盘同步指令来将binlog_cache中的数据强制写入磁盘。
所以sync_binlog=1,导致事务写入太频繁,从而出现[jbd2/dm-0-8]这个进程占用IO高。因此将sync_log设置为500
mysql> set global sync_binlog=500; ERROR 2006 (HY000): MySQL server has gone away No connection. Trying to reconnect... Connection id: 1630 Current database: fwpt Query OK, 0 rows affected (0.01 sec) mysql> show variables like '%sync%'; +-----------------------------------------+-------+ | Variable_name | Value | +-----------------------------------------+-------+ | binlog_group_commit_sync_delay | 0 | | binlog_group_commit_sync_no_delay_count | 0 | | innodb_flush_sync | ON | | innodb_fsync_threshold | 0 | | innodb_sync_array_size | 1 | | innodb_sync_spin_loops | 30 | | sync_binlog | 500 | | sync_master_info | 10000 | | sync_relay_log | 10000 | | sync_relay_log_info | 10000 | +-----------------------------------------+-------+ 10 rows in set (0.01 sec)
查看innodb_flush_log_at_trx_commit参数,默认是1 。
mysql> show variables like '%innodb_flush_log_at_trx_commit%';
+--------------------------------+-------+
| Variable_name | Value |
+--------------------------------+-------+
| innodb_flush_log_at_trx_commit | 1 |
+--------------------------------+-------+
1 row in set (0.00 sec)
innodb_flush_log_at_trx_commit是配置MySql日志何时写入硬盘的参数:
0:log buffer将每秒一次地写入log file中,并且log file的flush(刷到磁盘)操作同时进行。该模式下在事务提交的时候,不会主动触发写入磁盘的操作。
1:每次事务提交时MySQL都会把log buffer的数据写入log file,并且flush(刷到磁盘)中去,该模式为系统默认。
2:每次事务提交时mysql都会把log buffer的数据写入log file,但是flush(刷到磁盘)操作并不会同时进行。该模式下,MySQL会每秒执行一次 flush(刷到磁盘)操作
设置为2 :
mysql> set global innodb_flush_log_at_trx_commit=2;
Query OK, 0 rows affected (0.00 sec)
mysql> show variables like '%innodb_flush_log_at_trx_commit%';
+--------------------------------+-------+
| Variable_name | Value |
+--------------------------------+-------+
| innodb_flush_log_at_trx_commit | 2 |
+--------------------------------+-------+
1 row in set (0.00 sec)
数据导入时,iotop的jdb2/sdb1-8 io使用率下降到60-70%左右。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。