2009-03-05 61 views
9

使用亞馬遜EBS快照功能進行MySql熱備份有什麼經驗?使用亞馬遜的EBS進行MySQL熱備份

我有一個數據庫在ec2中運行批處理作業。我使用EBS快照進行備份。到目前爲止,備份看起來一致。但是,我擔心他們「一旦停止檢查就會停止一致」(不確定性原則)。

你對使用ebs快照備份關係數據庫(尤其是mysql)有什麼經驗?

回答

11

我一直在使用EBS快照來備份我的MySQL數據目錄超過一年。它一直在完美運作。我從來沒有遇到過使用這些快照作爲替換(或克隆)MySQL安裝的基礎的問題。

最佳做法是使用允許凍結的文件系統(例如XFS)格式化EBS卷。這使您可以獲得一致的快照:將MySQL的內存刷新到磁盤,凍結文件系統,快照,然後解凍。整個過程不到10秒鐘(但在數據庫大量使用時可能需要更長的時間)。

請參閱由Eric Hammond編寫的this article,該腳本爲您執行所有操作。

1

我主要關心的是依賴EBS快照進行數據庫備份的操作級別。無論寫入應用程序的應用程序的狀態如何,快照在磁盤上都處於非常低的級別,並拍攝圖像。從理論上講,您的備份映像可能處於事務處理或其他事務的中間,如果有一段時間來恢復,這會使恢復有些尷尬。

3

由於磁盤狀態不一致,MySQL的恢復能力很差,XFS基本上在發生快照時將IO暫停到文件系統。通常情況下,一旦完整的事務日誌條目已經被創建,數據庫就會執行flush(),這個條目基本上指示了文件系統的檢查點。在日誌文件系統的情況下,這很重要,並且在大多數情況下,文件系統在安裝後會恢復到最後一個有效的日誌條目,但這不是100%,但總比沒有好。如果數據庫文件位於事務日誌之後,則大多數數據庫系統都會使用事務日誌文件對恢復進行「前滾」,並且數據庫引擎只會儘可能多地前滾事務日誌的內容。它不會嘗試通過部分書面交易進行推廣。這裏的問題是MySQL並不是最好的解決方案,所以它絕對是一個問題。我還沒有找到一個可靠的解決方案,我會想象運行一個鏡像,暫停MySQL,而你做快照,然後恢復同步可能會起作用,但我不知道是否MySQL鏡像可以應付鏡像部分不可用一段時間,然後能夠趕上沒有完整的重新鏡像,在這種情況下,你可能只是做所有數據庫的mysqldump,因爲它會對數據庫產生與運行完整鏡像相同的效果。這是我可以想到的另一個運行選項 - 將所有數據庫的mysqldump運行到備份分區和快照。不會給你運行備份,所以你不能經常這樣做,如果你全天候使用它,mysqldump會在數據庫運行時給數據庫帶來沉重的負擔,遠遠不能達到最佳狀態。

其他數據庫引擎在這方面要好得多。 PostgreSQL非常擅長從盤問磁盤狀態恢復到不建議在日誌文件系統上運行它。您還可以選擇歸檔事務日誌,以便您可以從最後一次完整備份向前滾動到存檔日誌存在的任何時間點。使用此功能可以更輕鬆地進行一致的備份。 Oracle將允許您擁有多組事務日誌,這些事務日誌在物理磁盤/ EBS分區之間進行切換,使您可以頻繁切換窗口以獲得一致的快照,並且可以向數據庫引擎指明您希望這樣做,而不是翻轉直到你這樣說。

隨着思路的深入,LVM有能力在通常不到一秒的時間內對整個文件系統進行快照。我不知道EBS快照功能是否會利用這一點,儘管您可以手動完成。 LVM比XFS稍微複雜一點,但是我過去在XFS上遇到了一些問題,它們在ext3很好的單個目錄中大量地使用了大量文件。 LVM還有其他一些好處,絕對值得研究。

-1

你可能會考慮使用Amazon RDS來管理你的數據庫 - 它就像一個標準的MySQL服務器一樣工作,然後你可以責怪亞馬遜,如果它崩潰(它不會)。另外,他們會定期備份併爲您修補服務器。我把我的Wordpress和vBulletin安裝過了,花了一個小時。

只是我的2¢!

+0

-1 。不回答這個問題。 – talonx 2013-10-28 13:43:15

1

我建議使用LVM作爲數據庫文件系統的抽象層。 as這將獲得本地快照的好處,就像熱備份一樣。 LVM快照具有與EBS類似的結果,並且可以在任何機器上使用它(不僅僅是基於亞馬遜的)。

另一個好處,是LVM可以使用熱調整大小,特別是漂亮的,當你需要最少的停機時間,並需要擴大對飛你的磁盤空間(不推薦,但有可能在特定情況下)