MySQL 数据库服务器上的高负载和 iowait 导致 MySQL INSERTS 速度缓慢

MySQL 数据库服务器上的高负载和 iowait 导致 MySQL INSERTS 速度缓慢

我有一台运行在 Ubuntu 12.10 上的 MySQL 数据库服务器,配有 64GB RAM、2x3 TB SATA 6 Gb/s HDD 7200 rpm 和软件 RAID 1 以及一台 Intel Core i7-3930K。
数据库服务器通过本地网络使用专用的 1 GBit 以太网卡进行访问。
该数据库大约有 50 GB,是复制设置中的主服务器。

我认为,有两个问题导致 MySQL 查询缓慢:

  1. 负载是总是即使数据库服务器处于空闲状态,它也相对较高 (>2)(这不是一个大问题,因为处理器有 12 个核心,但似乎不对)
  2. top显示系统约 95% 处于空闲状态,使用率不到 1%5%正在等待(见以下截图)

iotop --only显示大部分磁盘 IO 是由 jdb2/md2-8 而不是 mysqld 产生的 - 所以 mysqld 不应该是问题所在 - 但是为什么 jdb2/md2-8 会消耗这么多资源?

cat /proc/mdstat输出以下内容:

我的问题是:
是什么原因导致 MySQL 性能缓慢?
是 iowait 吗?是什么原因导致 iowait?
是 RAID 1 吗?还是使用的硬盘?

任何帮助是极大的赞赏!

答案1

您正在运行一个日志密集型数据库,而磁盘速度几乎是目前最慢的。您看到 jdb2 的 iowaits 如此之高,是因为它很难跟上将 ext4 日志写入磁盘的速度

要么将磁盘更换为可以跟上速度的磁盘(我想到的是 SSD,尽管带电池缓存的普通 SAS 磁盘也可以)和/或开始调整。充足当谈到 SQL 环境中的文件系统调整时,有很多文档可以参考。

一个很好的起点是这里:http://dev.mysql.com/doc/refman/5.0/en/disk-issues.html

答案2

升级到 MySQL 5.7 后我遇到了这个问题。

设置“sync_binlog=0”可以解决这个问题。MySQL 在 5.7 中将默认值从 0 更改为 1。

相关内容