文章正文

Mysql导致磁盘100%

【文档】2020-04-23

简介Mysql导致磁盘100%

原因:

可能是MySQL每次事务提交时,都会将其写入并刷新到磁盘,造成磁盘IO的高占用。


查看配置:

通过在MySQL命令行运行以下命令:

show variables like 'sync_binlog';

可以看到:sync_binlog 的值为1。

该值意味着:启用在提交事务之前将二进制日志同步到磁盘。这是最安全的设置,但是会造成磁盘的较高占用。


show variables like 'innodb_flush_log_at_trx_commit';

可以看到:innodb_flush_log_at_trx_commit 的值为1。

该值意味着:日志会在每次事务提交时写入并刷新到磁盘。


解决方法

mysql内执行如下指令:

set global sync_binlog=500;

当每进行500次事务提交之后,MySQL将进行一次fsync之类的磁盘同步指令来将binlog_cache中的数据强制写入磁盘。

set global innodb_flush_log_at_trx_commit=2;

设置值1,代表每一次事务提交或事务外的指令都需要把日志写入(flush)硬盘,这是很费时的。特别是使用电池供电缓存(Battery backed up cache)时。设置值2,代表不写入硬盘而是写入系统缓存。日志仍然会每秒flush到硬盘,所以你一般不会丢失超过1-2秒的更新。

设置值0,会更快一点,但安全方面比较差,就算MySQL挂了也可能会丢失事务的数据。而值设置为2只会在整个操作系统宕机时才可能丢数据。

打赏支持

感谢您的支持,我会继续努力的!

打开微信扫码打赏,你说多少就多少

找书费时,联系客服快速查找!

扫码支持

在线客服8:30-23:00,若离线请留言!

获取教程,请联系在线客服!

扫码支持

在线客服8:30-23:00,若离线请留言!

找PDF电子书,太费时间?

  • 微信扫描二维码,让客服快速查找。
  • 在线客服8:30-23:00,若离线请留言!