Mysql数据库磁盘IO达到100%的解决⽅法
笔者最近遇到⼀个问题,在设备供应⼚家做完动⼒监控的服务器部署时,发现监控告警的太慢,不够及时。于是向⼚家反馈这个问题,估计⼚家也是图⽅便省⼼直接将读取Mysql数据库(innodb引擎)的周期从15秒减⼩到6秒,这下可好,监控服务器更加卡得要死!
平时⾃⼰兴趣爱好来玩mysql的衍⽣版本mariadb,遇到问题了,那么笔者就发挥“没事事,有事不怕”的精神,结合以前看的书籍《Mysql王者晋级之路》来分析⼀下。
经过沟通发现以下⼏个问题:
问题1:瞬时写⼊数据量过⼤。
软件设计不合理,在监控服务器上⾯得程序将读取到所有的数据每隔⼀定周期⼀起写⼊数据库,瞬间数据量过于庞⼤。下图是数据写⼊数据库时,磁盘IO脉冲式增加,特别是减少数据读取周期为6秒时,磁盘IO⼀直保持在100%,造成监控服务器⼗分卡顿。
解决办法:
软件上提出建议将程序功能分模块(采集器分类、设备分类或者等级分类)写⼊数据库,数据库中tables较多,分别写⼊可降低磁盘IO。
终端读取数据库的间隔适当加长,不和写操作争抢资源。
硬件上可考虑更换固态硬盘来提交读写速率。
运⾏时磁盘IO状态
只读锁(flush tables with read lock)后磁盘IO正常,开启写(unlock tables)后,磁盘IO脉冲式增加。说明磁盘IO增加的原因是数据库写造成的,那么就需要在写操作上优化。
读锁后磁盘IO正常,开启写后磁盘IO脉冲式增加
问题2:⼆进制⽇志⽂件mysqlbinlo g过⼤mysql存储文档
每天数据产⽣17G的⼆进制⽇志⽂件mysqlbinlog,磁盘快满了。
解决办法:对于监控数据来说,其实没有必要保存改变数据库信息的语句。 expire-logs-days,设置清除log⽂件的天数。或者直接不需要,在my.ini⽂件中直接关闭,也可降低磁盘IO。
; binary logging - not required for slaves, but recommended
;log-bin=mysql-bin
问题3:数据库没有经过调优
Mysql数据库没有经过调优。笔者虽不是DBA,但是针对具体问题,结合以前得知识(请参考数据库DB⽂集)和⽹络资料,分享⼀下⾃⼰的分析解决思路。
影响数据库最⼤的性能问题就是磁盘IO,为了提升数据库的IOPS,可以使⽤SSD或者PCIE-SSD⾼速磁盘。内存⽅⾯也很重要,内存可以缓存热点数据和存储引擎⽂件,避免产⽣过多的物理IO,可以增加物理内存来提⾼数据库的并发和读写性能。
接下⾥就是主要针对磁盘IO过⾼时,Mysql数据库参数应该怎么调优?
1、Innodb_buffer_pool_size。作⽤是缓存innodb表的数据信息,可以设置为物理内存的50-80%。
2、innodb_flush_log_trx_commit和。参数是redo log刷新的参数,默认是1,即在每个事务提交时,InnoDB⽴即将缓存中的redo⽇志回写到⽇志⽂件,并调⽤操作系统fsync刷新IO缓存。可以设置为2,即是每个事务提交时,InnoDB⽴即将缓存中的redo⽇志回写到⽇志⽂件,但并不马上调⽤fsync来刷新IO缓存,⽽是每秒只做⼀次磁盘IO缓存刷新操作。参数为0时,在提交事务时,InnoDB不会⽴即触发将缓存⽇志写到磁盘⽂件的操作,⽽是每秒触发⼀次缓存⽇志回写磁盘操作,并调⽤操作系统fsync刷新IO缓存。修改为2或者0时,可以节省IO资源,但是在崩溃或断电的时候会丢失最后⼀秒的数据,但对于监控数据来说没啥影响。
设为是最安全的,但性能也是最差的(相对其他两个参数⽽⾔,但不是不能接受)。如果对数据⼀致性和完整性要求不⾼,完全可以设为2,如果只要求性能,例如⾼并发写的⽇志服务器,设置为0来获得更⾼性能。
3、sync_binlog。binlog刷新的参数,默认是1。和参数innodb_flush_log_trx_commit组成数据库的双⼀,可以保证主从架构中数据的⼀致
性。在监控系统中,binlog关闭了。
4、innodb_max_dirty_pages_pct。脏页占Innodb_buffer_pool的⽐例,,超过时触发刷脏页到磁盘,建议25%-50%。
5、innodb_io_capacity。innodb后台进程中最⼤的IO性能指标,影响刷脏页和插⼊缓冲的数量,默认200。⾼转速磁盘下可以适当提⾼该参数。SSD磁盘配置可以调整为5000-20000,PCIE-SSD⾼速磁盘可以调整得更⾼(50000)。
6、innodb_data_file_path = ibdata1:1G:autoextend。innodb表空间不要使⽤默认得10MB,可以调整为1G,防⽌⾼并发下数据库受影响。
7、gerenal log。全量⽇志建议关闭,默认是关闭的,否则⽇志⽂件会越来越⼤,影响性能。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论