华为云鲲鹏服务器上MySQL 8.0的IO性能调优:从EXT4到XFS的抉择

举报
yd_291746328 发表于 2026/11/01 17:38:03 2026/11/01
【摘要】 上个月帮一个客户做数据库迁移,把一套MySQL 8.0从X86物理机迁到了华为云鲲鹏通用计算增强型 kc1 实例上。迁移完成后,OLTP压测(sysbench)的TPS只有原机器的60%,iostat显示磁盘%util长期打满,但IOPS数值并不高。排查了一圈,最后发现问题出在文件系统和鲲鹏架构的IO调度器上。一、 现象:IO瓶颈但带宽未满环境:鲲鹏920(8核32G),系统盘用华为云超高I...

上个月帮一个客户做数据库迁移,把一套MySQL 8.0从X86物理机迁到了华为云鲲鹏通用计算增强型 kc1 实例上。迁移完成后,OLTP压测(sysbench)的TPS只有原机器的60%,iostat显示磁盘%util长期打满,但IOPS数值并不高。排查了一圈,最后发现问题出在文件系统和鲲鹏架构的IO调度器上。

一、 现象:IO瓶颈但带宽未满

环境:鲲鹏920(8核32G),系统盘用华为云超高IO(SSD),挂载了一块1TB的数据盘(也是超高IO)。MySQL数据目录放在数据盘上。压测时iostat -x 1显示await(平均等待时间)高达20ms以上,%util接近100%,但rkB/s和wkB/s远未达到磁盘标称带宽。

二、 根因分析:EXT4在ARM+SSD下的“水土不服”

原X86机器用的是EXT4,迁移时为了省事,数据盘也格式化成了EXT4。但鲲鹏架构下,EXT4的日志(journal)提交策略和高IOPS SSD的配合存在瓶颈:每次fsync(MySQL的innodb_flush_log_at_trx_commit=1)都会触发EXT4的日志同步,在ARM的多核并发下,EXT4的全局锁竞争比X86更明显。

三、 调优实践:XFS + IO调度器 + 内核参数

1. 文件系统切换:EXT4 → XFS
XFS在处理大文件和高并发IO时,锁的粒度更细,尤其适合数据库场景。我们将数据盘重新格式化为XFS,并调整了挂载参数:

bash
mkfs.xfs -f -l size=128m -n size=8192 /dev/vdb
mount -o noatime,nodiratime,nobarrier,logbufs=8,logbsize=256k /dev/vdb /data
关键参数说明:nobarrier(SSD有掉电保护时可开,云盘一般有)、logbsize=256k(增大日志缓冲区,减少日志写次数)。

2. IO调度器调整
鲲鹏云服务器的SSD盘默认调度器是mq-deadline,对于MySQL这种随机IO密集的场景,none(即noop)往往表现更好,因为SSD本身有复杂的FTL层做调度。

bash
echo none > /sys/block/vdb/queue/scheduler
# 同时增大队列深度
echo 1024 > /sys/block/vdb/queue/nr_requests
3. MySQL参数配合
既然文件系统换了,MySQL的innodb_io_capacity也要相应调整。超高IO盘标称IOPS约33000,我们把参数从默认的200调到了8000,让InnoDB更积极地刷脏页,避免checkpoint抖动。

ini
innodb_io_capacity = 8000
innodb_io_capacity_max = 16000
innodb_flush_neighbors = 0   # SSD上关闭邻居页刷新
innodb_log_buffer_size = 64M
四、 压测结果对比

同样sysbench(128并发、10张表、每表100万行):

调优前(EXT4):TPS ≈ 2400,await ≈ 22ms

调优后(XFS+none):TPS ≈ 4100,await ≈ 4ms

TPS提升了70%,基本追平甚至略超原X86物理机的表现。

五、 总结

云服务器迁移不是“数据拷过去就完事”。ARM架构 + SSD云盘的组合,在文件系统(XFS优于EXT4)、IO调度器(none优于mq-deadline)和数据库参数上都需要重新适配。建议做鲲鹏迁移的兄弟,先用fio和sysbench跑一遍基线,再逐项调优,数据会告诉你答案。

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0)

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。