mysql磁盘写io高_转:mysql占用磁盘IO过高的解决办法

一、现象

最近发现Mysql服务器磁盘IO一直很高

48304ba5e6f9fe08f3fa1abda7d326ab.png

[root@push-5-221 ~]# iostat -k -d -x 1 10

Linux 3.10.0-957.el7.x86_64 (push-5-221) 2019年07月05日 _x86_64_ (8 CPU)

Device: rrqm/s wrqm/s r/s w/s rkB/s wkB/s avgrq-sz avgqu-sz await r_await w_await svctm %util

sda 0.00 0.08 0.00 14.89 0.09 177.79 23.88 0.34 23.05 5.42 23.05 11.01 16.40

dm-0 0.00 0.00 0.00 0.18 0.09 3.62 39.49 0.07 380.21 5.59 387.46 12.69 0.24

dm-1 0.00 0.00 0.00 0.00 0.00 0.01 8.98 0.00 91.25 12.04 92.94 6.55 0.00

dm-2 0.00 0.00 0.00 14.79 0.00 174.15 23.56 0.33 22.27 8.84 22.27 10.96 16.20

Device: rrqm/s wrqm/s r/s w/s rkB/s wkB/s avgrq-sz avgqu-sz await r_await w_await svctm %util

sda 0.00 0.00 0.00 83.00 0.00 650.50 15.67 2.55 30.66 0.00 30.66 12.02 99.80

dm-0 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00

dm-1 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00

dm-2 0.00 0.00 0.00 83.00 0.00 636.50 15.34 2.55 30.66 0.00 30.66 12.02 99.80

Device: rrqm/s wrqm/s r/s w/s rkB/s wkB/s avgrq-sz avgqu-sz await r_await w_await svctm %util

sda 0.00 0.00 0.00 88.00 0.00 684.50 15.56 2.60 29.42 0.00 29.42 11.35 99.90

dm-0 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00

dm-1 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00

dm-2 0.00 0.00 0.00 87.00 0.00 677.00 15.56 2.60 29.76 0.00 29.76 11.49 100.00

Device: rrqm/s wrqm/s r/s w/s rkB/s wkB/s avgrq-sz avgqu-sz await r_await w_await svctm %util

sda 0.00 0.00 0.00 87.00 0.00 687.50 15.80 2.48 28.77 0.00 28.77 11.51 100.10

dm-0 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00

dm-1 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00

dm-2 0.00 0.00 0.00 88.00 0.00 699.00 15.89 2.48 28.48 0.00 28.48 11.36 100.00

Device: rrqm/s wrqm/s r/s w/s rkB/s wkB/s avgrq-sz avgqu-sz await r_await w_await svctm %util

sda 0.00 0.00 0.00 88.00 0.00 756.50 17.19 2.48 28.22 0.00 28.22 11.35 99.90

dm-0 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00

dm-1 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00

dm-2 0.00 0.00 0.00 86.00 0.00 740.00 17.21 2.48 28.87 0.00 28.87 11.62 99.90

48304ba5e6f9fe08f3fa1abda7d326ab.png

%util已经接近100%了,IO性能严重瓶颈,这台服务器有两个Mysql实例,3306是主库,3307是另一台Mysql的从库,进入从库查看从库状态

48304ba5e6f9fe08f3fa1abda7d326ab.png

mysql> show slave status\G;

*************************** 1. row ***************************

Slave_IO_State: Waiting for master to send event

Master_Host: 172.28.5.223

Master_User: repl

Master_Port: 3306

Connect_Retry: 60

Master_Log_File: master-223.000012

Read_Master_Log_Pos: 511363808

Relay_Log_File: push-5-221-relay-bin.000034

Relay_Log_Pos: 382425277

Relay_Master_Log_File: master-223.000012

Slave_IO_Running: Yes

Slave_SQL_Running: Yes

Replicate_Do_DB:

Replicate_Ignore_DB:

Replicate_Do_Table:

Replicate_Ignore_Table:

Replicate_Wild_Do_Table:

Replicate_Wild_Ignore_Table:

Last_Errno: 0

Last_Error:

Skip_Counter: 0

Exec_Master_Log_Pos: 382425062

Relay_Log_Space: 511364283

Until_Condition: None

Until_Log_File:

Until_Log_Pos: 0

Master_SSL_Allowed: No

Master_SSL_CA_File:

Master_SSL_CA_Path:

Master_SSL_Cert:

Master_SSL_Cipher:

Master_SSL_Key:

Seconds_Behind_Master: 2345

Master_SSL_Verify_Server_Cert: No

Last_IO_Errno: 0

Last_IO_Error:

Last_SQL_Errno: 0

Last_SQL_Error:

Replicate_Ignore_Server_Ids:

Master_Server_Id: 2233306

Master_UUID: 165a203c-8021-11e9-bc40-6c2b5992e592

Master_Info_File: /home/mysql-5.7.26/data/3307/master.info

SQL_Delay: 0

SQL_Remaining_Delay: NULL

Slave_SQL_Running_State: Reading event from the relay log

Master_Retry_Count: 86400

Master_Bind:

Last_IO_Error_Timestamp:

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 对于MySQL磁盘IO的问题,可以尝试以下几种方法来解决:1.优化SQL语句,减少查询时间;2.增加MySQL缓存,提升系统性能;3.更换更快的硬盘,提磁盘IO速度;4.调整MySQL参数,显著提升系统性能;5.使用读分离,把读操作分离出来;6.使用可靠的集群系统,提系统的扩展性和可用性;7.使用SSD来加速磁盘的读取和入速度。 ### 回答2: MySQL磁盘IO的问题主要是由于大量的磁盘操作导致的。以下是解决MySQL磁盘IO的几种方法: 1. 优化查询语句:检查和优化查询语句,尽量减少不必要的磁盘读取。可以使用索引,避免全表扫描,以提查询效率。 2. 调整MySQL缓存:增大MySQL的缓冲区以减少对磁盘的读操作。可以适当调整参数innodb_buffer_pool_size和key_buffer_size。 3. 分散磁盘IO请求:将数据、日志和临时表等分别存储在不同的物理磁盘上,以减少磁盘IO的竞争。 4. 增加内存:提升系统的物理内存,增加系统缓存,减少对磁盘的读操作。 5. 使用SSD硬盘:使用SSD(固态硬盘)替换传统的机械硬盘,SSD硬盘具有更的读速度,能够显著提升磁盘IO性能。 6. 合理分区:对大表进行分区,将数据分散存储在多个分区上,减轻单个分区的IO负载。 7. 减少不必要的索引:评估并删除不再使用的索引,避免更新索引时的额外IO开销。 8. 使用缓存技术:可以考虑使用缓存技术,如Redis,将频繁读取的数据缓存到内存中,减少磁盘IO操作。 以上是解决MySQL磁盘IO的一些方法,具体措施可以根据实际情况进行调整,以达到减少磁盘IO的目的。同时,也可以通过监控工具不断优化,以保持系统的性能和稳定性。 ### 回答3: MySQL磁盘I/O的情况可能是由于以下几个原因导致的:缓存不足、查询语句不优化、磁盘性能低等。 首先,可以尝试优化数据库的缓存设置。MySQL有一个用于缓存数据和索引的缓冲池(InnoDB缓冲池)。可以通过增加缓冲池的大小来减少对磁盘的访问次数,提系统性能。 其次,需要优化查询语句,避免不必要的全表扫描和重复查询。可以使用索引来加快查询速度,同时避免在查询语句中使用大量的JOIN和子查询等操作,优化查询逻辑。 此外,可以考虑使用更速的磁盘设备。当磁盘性能较低时,可以通过升级为更速的磁盘设备或使用RAID等技术来提升磁盘性能,减少I/O等待时间。 另外,还可以使用MySQL的分区表功能来将大表拆分成较小的分区,减少单个分区上的磁盘访问压力,提磁盘IO性能。 最后,可以通过调整MySQL的参数来优化磁盘I/O性能。例如,可以调整innodb_flush_method参数来控制MySQL数据的入方式,选择适合的方式来提磁盘I/O性能。 需要根据具体情况分析和综合考虑以上解决方案,并逐步尝试和优化,以降低MySQL磁盘I/O的负载,提系统性能。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值