在我们的应用程序中,我们使用带有Mysql数据库的EBS分区。最终,我们空间不足,不得不为数据库分配更大的分区。
我们使用AWS面板功能使用前一个快照创建了一个新卷。
Mysql已停止,现在我们正在使用更大的新EBS分区。
但是,我们的数据库性能明显下降。我们不确定这种情况如何发生,因为理论上我们使用的是相同的Mysql配置和相同的数据库。
是否有可能我们必须重建索引或重新优化表?我不确定这是否值得,所以我们还没有尝试过,因为我们担心它会进一步减慢数据库运行速度,并且我们的应用程序无法轻松停止,因为它以24/7的速度运行。
有人可以帮忙吗?
最佳答案
当您开始使用新的EBS卷(无论是从快照创建还是为空创建)时,每个块始终都会受到首次使用性能的损失。这将表现为使用新卷的MySQL数据库的性能降低。
您可以将EBS卷“ dd”“ dd”到/ dev / null以确保已击中所有块。这是我写的有关如何执行此操作的文章:http://alestic.com/2010/03/ebs-volume-initialization-from-snapshot
通过查询将数据库带入内存时,性能也会受到影响。这是在任何平台上重新启动数据库时都会发生的标准IO问题,与EC2或EBS无关。
如果在一切预热之后性能仍然缓慢并且应该嗡嗡作响,那么您可以尝试以下操作:
创建一个新的EBS卷,并对其进行测试,以防万一慢的卷在EC2上使用有缺陷的硬件。
万一您当前硬件上的邻居网络繁忙并干扰您的EBS IO,请将您的EC2实例移至新硬件。这可以通过简单的停止/启动来完成(我在这里写过:http://alestic.com/2011/02/ec2-move-hardware)
将数据库移至RAID-0中配置的4-8 EBS卷。这是尝试消除EBS IO波动的常用方法。
考虑试用Amazon RDS。有人发现,使用Amazon来处理基础架构的这一部分,可以提高性能。
另请注意,从大量写入的EBS卷创建EBS快照时,您可能会遇到IO缓慢的情况。缓解此问题的一种方法是将MySQL主数据库复制到其他服务器,并在第二台服务器的EBS卷上创建快照。
关于mysql - MySQL和EBS-将分区移动到更大的分区,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/10840225/