2012-01-02 92 views
2

我在EBS捲上使用MySQL設置了一個EC2實例,並設置了另一個用作複製從服務器的實例。複製設置很好。我的問題是關於拍攝這些卷的快照。我注意到這些表需要鎖定快照過程,這可能會給用戶帶來不便。所以,我的想法是保持獨立的主實例,並將實例作爲從服務器的快照。這是一個好主意嗎?有沒有人有類似的設置,並能以正確的方式引導我?用於複製的EBS卷的快照

此外,拍攝從實例的快照將需要鎖定表。這是否意味着複製會打破?

在此先感謝。

回答

5

儘管在啓動快照時鎖定數據庫並凍結文件系統是個好主意,但啓動快照的實際API調用只需幾分之一秒,因此您的數據庫和文件系統不會被鎖定/長期凍結。

儘管如此,也有一些其他的因素,你沒有提到:

  1. 當您嘗試創建數據庫上的鎖,它可能需要等待其他的語句完成之前,鎖定理所當然的。在此期間,待處理的鎖可能會進一步等待,直到您獲取並釋放鎖。這可能會導致生產數據庫中的語句流中斷。

  2. 在您開始創建快照後,您的應用程序/數據庫可以自由使用捲上的文件系統,但是如果您有很多寫入操作,則可能會遇到高Iowait,有時足以創建明顯的你的應用程序放緩。原因是後臺快照進程需要將塊複製到S3,然後才允許寫入活動捲上的該塊。

我解決了第一個問題,通過請求鎖定和超時如果它沒有被快速授予。然後我稍等一會繼續重試,直到我獲得鎖定。適當的超時和重試延遲可能因不同的數據庫負載而異。

我解決了第二個問題,通過在從屬設備上執行頻繁,一致的快照而不是主設備,就像您提出的那樣。我仍然建議偶爾對主服務器執行簡單的快照以改善其內在的持久性(一種深度的EBS屬性),但這些快照不需要執行鎖定或凍結,因爲您不打算將它們用於備份。

我也推薦使用支持沖洗和冷凍(XFS)的文件系統。否則,您正在對MySQL中的鎖定表進行快照,可能還沒有EBS捲上的所有塊,或者文件系統的其他部分可能會被修改並且在快照中不一致。

如果您有興趣,我已經發布了開源軟件,它執行我收集的有關使用MySQL和XFS創建一致的EBS快照的相關最佳實踐(可選)。

http://alestic.com/2009/09/ec2-consistent-snapshot

要回答你的最後一個問題,鎖定表中的主不會打破複製。在我的快照軟件中,我還使用讀鎖來刷新表,以確保所有內容都在正在快照的磁盤上,並添加關鍵字「LOCAL」,以便刷新不會複製到任何潛在的從屬設備。

+0

感謝詳細的解答。事實上,我正在關注AWS和alestic.com上的文章,以設置MySQL並快照數據庫。非常有用和翔實的文章!謝謝。 我沒有考慮你提到的第一個問題。我試圖鎖定時必須查找超時。感謝第二個問題的答案。 我使用XFS.So快照應該可以正常工作。另外,我嘗試使用ec2-consistent-snapshot,但遇到了一些問題。與腳本沒有任何關係,但是與在Fedora 15上使用它有關的一些問題存在爭議。希望我會很快解決這些問題。再次感謝 – 2012-01-03 16:17:27

+0

我沒有使用Fedora,但是如果你找到方法來改進它在其他發行版上的工作方式,我很樂意爲ec2-consistent-snapshot添加補丁。 – 2012-01-03 18:38:03

0

你絕對可以拍攝奴隸的快照。

從您的描述來看,它似乎並不像奴隸在操作中使用。

如果是這種情況,那麼獲得可靠的卷快照的最安全的方法將是:

  1. 停止MySQL服務器上的從
  2. 啓動快照(通過AWS控制檯,或通過命令行)
  3. 當快照完成後,重啓mysqld從服務器上