有一次在做 MySQL 数据库更新时,发现 DML 更新效率特别低,总能发现超过 1 秒的慢日志,一般很少会出现这种情况,初步判定为可能网络故障或者就是 DB 服务器自身的性能出现问题导致。
经过检查服务器状况,发现确实发生了硬件故障,主要是 raid 10 中的一块硬盘发生预警,信息如下:
- Physical Disk: 1 Enclosure Device ID: 32 Slot Number: 3 Device Id: 3 Sequence Number: 2Media Error Count: 650Other Error Count: 73Predictive Failure Count: 71Last Predictive Failure Event Seq Number: 6716 Raw Size: 140014MB [0x11177328 Sectors] Non Coerced Size: 139502MB [0x11077328 Sectors] Coerced Size: 139392MB [0x11040000 Sectors] Firmware state: Online SAS Address(0) : 0x500000e11079e682 SAS Address(1) : 0x0 Connected Port Number: 3(path0) Inquiry Data: FUJITSU MBA3147RC D306BLB5P9500H4M
大家注意下上面的信息,硬盘的状态还是 Online,并没有报错,但是另外 2 个 Error Count 值从凌晨开始一直在较快速度增长。
再观察服务器的 sar 日志,发现从 5 点发起例行 DB 备份时,服务器的 IO 性能急剧下降,因此认定:
停服时存盘速度慢确实和一块硬盘发生预警有关系
由于发起 DB 备份,需要瞬间读取大量数据,因此需要扫描全部 raid 阵列中的硬盘,但其中一块盘的状态并没有标记为 Failed 或 Offline,
因此 raid 阵列还是会去扫描它,导致 IO 性能特别差。这时候,如果我们把硬盘状态修改成 Offline 应该就可以避免这种问题,并且不会对 raid 10 产生丢数据的风险。
碰到类似现象需要谨慎,尽快安排更换备盘,防止问题扩大化。
-------------------------------------- 分割线 --------------------------------------
知数堂 ()培训是由资深 MySQL 专家叶金荣、吴炳锡联合推出的专业优质培训品牌,主要有 MySQL DBA 实战优化和 Python 运维开发课程,是业内最有良心、最有品质的培训课程。
来源: http://www.bubuko.com/infodetail-1861719.html