在MySQL中,如何模仿磁盘 IO 慢的情况

0    76    1

Tags:

👉 本文共约1099个字,系统预计阅读时间或需5分钟。

实验

1. 创建延迟的磁盘

用 dd 创造一片 100M 的文件

在MySQL中,如何模仿磁盘 IO 慢的情况

本人提供Oracle(OCP、OCM)、MySQL(OCP)、PostgreSQL(PGCA、PGCE、PGCM)等数据库的培训和考证业务,私聊QQ646634621或微信db_bao,谢谢!

将创建的文件用 losetup 虚拟成块设备 /dev/loop3

在MySQL中,如何模仿磁盘 IO 慢的情况

将块设备 /dev/loop3 映射成带延迟的设备(对于读操作和写操作都延迟 100ms)

在MySQL中,如何模仿磁盘 IO 慢的情况

2. 用 MySQL 进行实验

将磁盘格式化,并载入

在MySQL中,如何模仿磁盘 IO 慢的情况

用 dbdeployer 安装 MySQL,将 binlog 的位置设置到 /mnt/slow,开启双 1 刷盘参数

在MySQL中,如何模仿磁盘 IO 慢的情况

用 mysqlslap 进行压力测试

在MySQL中,如何模仿磁盘 IO 慢的情况

通过 iostat 可以观察到 binlog 所在的块设备 IO 发生饱和:

  1. dm-0 (/dev/mapper/dm-slow) 设备的 IO 出现了排队(aqu-sz),使用率饱和。

  2. loop3 是 dm-0 背后的块设备,其 IO 还有充足的能力,可证明 dm-0 带有 IO 延迟。

在MySQL中,如何模仿磁盘 IO 慢的情况

通过 pt-ioprofile 观察 MySQL 的 IO 消耗时间,可以看到花费在 binlog IO 上的时间远大于其他消耗。

在MySQL中,如何模仿磁盘 IO 慢的情况

结果

我们制造了一个慢 IO 的设备,将 MySQL binlog 放在其中,制造了 binlog IO 慢的场景。

有了这个手段,之后我们可以分析 MySQL 在局部文件 IO 慢时,哪些状态量会发生变化,以及 MySQL 会发生什么行为。

参考

https://mp.weixin.qq.com/mp/homepage?__biz=MzU2NzgwMTg0MA==&hid=9&sn=616ddd6a2417f34f6d836a2c2d567f12&scene=1&devicetype=android-29&version=28001c57&lang=zh_CN&nettype=cmnet&ascene=7&session_us=gh_0dc4cf247b24&wx_header=3

标签:

头像

小麦苗

学习或考证,均可联系麦老师,请加微信db_bao或QQ646634621

您可能还喜欢...

发表回复

嘿,我是小麦,需要帮助随时找我哦
  • 18509239930
  • 个人微信

  • 麦老师QQ聊天
  • 个人邮箱
  • 点击加入QQ群
  • 个人微店

  • 回到顶部
返回顶部