2012-05-31 69 views
0

在我們的應用程序中,我們使用帶有Mysql數據庫的EBS分區。最終,我們耗盡了空間,不得不爲DB分配更大的分區。 我們使用AWS面板功能使用前一個快照創建新卷。 Mysql已停止,現在我們正在使用新的更大的EBS分區。 但是,我們發現數據庫性能明顯下降。我們不確定這是怎麼發生的,因爲理論上我們使用的是相同的Mysql配置和相同的數據庫。 有可能我們需要重建索引或重新優化表格嗎?我不確定這是否值得一提,所以我們還沒有嘗試過,因爲我們擔心它會讓數據庫變得更慢,並且我們的應用程序不能輕易停止,因爲它全天候運行。 任何人都可以幫忙嗎?Mysql和EBS - 將分區移動到更大的分區

回答

1

當您開始使用新的EBS卷(無論是從快照創建還是創建爲空)時,每個塊始終存在首次使用的性能損失。這將表現爲使用新卷從MySQL數據庫中緩慢地執行。

您可以將EBS卷「dd」到/ dev/null以確保所有塊都已被命中。這裏有一篇文章是關於如何做到的:http://alestic.com/2010/03/ebs-volume-initialization-from-snapshot

當數據庫通過查詢進入內存時,性能可能會受到影響。這是在任何平臺上重新啓動數據庫時發生的標準IO問題,並且與EC2或EBS無關。

如果性能保持緩慢的一切都已經回暖,應該哼唱後,那麼你可以嘗試的東西,如:

  • 創建一個新的EBS卷以防萬一測試它慢一個是使用有缺陷EC2的硬件。

  • 將您的EC2實例移至新硬件,以防萬一您當前硬件上的鄰居網絡繁重並干擾您的EBS IO。這可以通過一個簡單的停止/啓動(我在這裏寫到:http://alestic.com/2011/02/ec2-move-hardware

  • 將您的數據庫移動到在RAID-0中配置的4-8個EBS卷。這是嘗試消除EBS IO波動的常用方法。

  • 請考慮嘗試Amazon RDS。有些人發現,他們在亞馬遜關注這部分基礎設施方面取得了更好的業績。

還要注意的是,你可能會遇到IO緩慢。而當從正在被寫入大量EBS卷創建一個快照EBS。緩解這種情況的一種方法是將主MySQL數據庫複製到不同的服務器,並在第二臺服務器的EBS捲上創建快照。