Mysql和EBS - 将分区移动到更大的分区

时间:2012-05-31 19:42:39

标签: mysql performance amazon-web-services

在我们的应用程序中,我们使用带有Mysql数据库的EBS分区。最终,我们耗尽了空间,不得不为数据库分配更大的分区。 我们使用AWS面板功能使用前一个快照创建新卷。 Mysql停止了,现在我们正在使用新的更大的EBS分区。 但是,我们的数据库性能明显下降。我们不确定这是怎么发生的,因为理论上我们使用相同的Mysql配置和相同的数据库。 是否有可能我们必须重建索引或重新优化表?我不确定这是否值得,所以我们还没有尝试过,因为我们担心它可能会进一步减慢数据库的速度,而且我们的应用程序无法轻松停止,因为它全天候运行。 有人可以帮忙吗?

1 个答案:

答案 0 :(得分:1)

当您开始使用新的EBS卷(无论是从快照创建还是创建为空)时,每个块始终存在首次使用性能损失。这将表明使用新卷从MySQL数据库缓慢运行。

您可以将EBS卷“dd”为/ dev / null以确保所有块都已被命中。这是我写的关于如何执行此操作的文章:http://alestic.com/2010/03/ebs-volume-initialization-from-snapshot

当数据库通过查询进入内存时,可能会遇到性能损失。这是在任何平台上重新启动数据库时与EC2或EBS无关的标准IO问题。

如果在一切都已经预热并且应该哼唱之后表现保持缓慢,那么你可以尝试这样的事情:

  • 创建一个新的EBS卷并测试它,以防万一慢速在EC2上使用有缺陷的硬件。

  • 将EC2实例移至新硬件,以防当前硬件上的邻居网络繁重并干扰您的EBS IO。这可以通过一个简单的停止/开始来完成(我在这里写到:http://alestic.com/2011/02/ec2-move-hardware

  • 将数据库移动到RAID-0中配置的4-8个EBS卷。这是尝试消除EBS IO波动性的常用方法。

  • 考虑尝试使用Amazon RDS。有些人发现,亚马逊会利用这部分基础设施来获得更好的性能。

另请注意,从正在大量写入的EBS卷创建EBS快照时,可能会遇到IO速度缓慢。缓解此问题的一种方法是将主MySQL数据库复制到另一台服务器,并在第二台服务器的EBS卷上创建快照。