mariadb 10 上的 mysqldump 非常慢

mariadb 10 上的 mysqldump 非常慢

我正在 AWS RDS 上运行 MariaDB 10.1.34 实例。实例规格如下:

  • 实例类:db.t2.large
  • 存储:100GiB gp2
  • 数据库大小:1.2 GiB

我正在尝试从与数据库位于同一可用区的 EC2 实例创建 mysqdump。虽然这有效,但性能非常糟糕。使用 mysqldump 转储数据库(大小仅为 1.2 GiB)大约需要 15 分钟。

我一直在监控 ec2 实例上的磁盘和网络使用情况。在 mysqldump 的前 5 秒内,网络使用量峰值约为 600 Mbit/s,然后降至仅 200 kbit/s 左右。与磁盘使用情况相同。

奇怪的是,重新启动数据库实例似乎可以暂时修复该行为。 mysqldump 一次用了 30 秒完成,之后又变慢了。

数据库实例的写IOPS徘徊在10-15左右,读IOPS在重启实例后才超过20。

如果您提供有关如何进一步调试此问题的任何建议,我将不胜感激。

编辑:

我还应该添加我的 mysqldump 命令:

ubuntu@server:~$ mysqldump --version
mysqldump  Ver 10.13 Distrib 5.7.23, for Linux (x86_64)
ubuntu@server:~$ mysqldump -h <db_host> -p -P 3306 -u <read_only_user> --quick --single-transaction --skip-lock-tables <database> > dump.sql 

答案1

这是一个你被击中的经典案例T2/T3突发性能

您可能知道,当 T2/T3 实例空闲时,它们会积累“CPU 积分”,然后在需要时用于快速运行。然而,当实例全速运行时,这些积分就会耗尽,而当实例没有剩余时,实例就会变慢。请参阅此处了解更多详细信息:突发性能实例的 CPU 积分和基准性能

虽然上面只讲了CPU积分根据经验,我知道它直接影响网络性能同样,尽管我无法从亚马逊找到任何这方面的文件。这也是你所观察到的。

要解决这个问题,你有两个选择:

  1. 切换到M4/M5实例类型- 这些具有恒定的性能并且不受 CPU 积分的影响。但它们比 T2 / T3 稍贵一些。

  2. 使能够T2 无限环境 (看这里),每当实例积分降至 0 时,就会为您的实例积分充值,但需要支付一些额外费用。它可能是适合您的用例的最佳选择。但请注意,始终全速无限制地运行 T2 比运行相同大小的 M4 实例更昂贵。

相关内容