我應該以及如何備份 Amazon EC2 伺服器上託管的 Web 應用程式的資料庫?

我應該以及如何備份 Amazon EC2 伺服器上託管的 Web 應用程式的資料庫?

我設定了亞馬遜EC2使用Ubuntu伺服器版本的實例,我安裝了疊在上面。我製作了一個在 MySQL 上運行的 PHP Web 應用程式。我已經在 Amazon EC2 上測試了該 Web 應用程序,它可以工作。

我還沒有正式推出,但在推出之前我需要了解這一點。我應該備份資料庫資料嗎?如果是這樣,我應該如何盡可能節省成本?

之前,對於另一個 Web 應用程序,我編寫了一個 Perl 或 Bash 腳本(不記得了),該腳本將由計劃任務以一天為週期。

然後,該腳本會將資料庫備份到單一.sql檔案中,並作為電子郵件附件傳送到我的 Gmail 帳戶。

該網頁應用程式位於共享託管上,因此我非常確定我需要備份我的資料庫。我的檔案位於 Git 儲存庫中,所以我並不擔心這一點。

對於這個新的 Web 應用程式亞馬遜網路服務(AWS),我尚未決定,因為:

  1. 我認為這不是一個好的解決方案,因為透過電子郵件發送的資料不安全。據我所知,沒有 SSL,儘管它是一個廉價的解決方案。自由的。按日期輕鬆檢索。

  2. 亞馬遜可能讓我不需要做備份,因為他們已經這麼做了。我需要知道的是在災難發生時如何恢復它(觸碰木頭

    • (我懷疑)我有一種優越且具有成本效益的方法來使用亞馬遜S3
  3. 我允許用戶上傳文件,因此我也需要以某種方式備份這些文件。我不知道如何做,也從未以任何形式做過。

我想要的是:盡可能經濟高效地每日備份我的資料庫和圖像文件,以及一個清晰的分步遊戲指南來實現這一點並在災難發生時恢復它們。

背景:

  • 我對AWS完全不熟悉。只知道設定一個帳戶。就這些。

  • << 作為 Ubuntu 新手一年的經驗。我一生的大部分時間都在 Windows 中。

  • 主要熟悉 PHP 程式設計。由於缺乏使用,對其他程式語言的掌握並不那麼好。

答案1

亞馬遜將您的資料庫文件保存在冗餘存儲上,但僅提供有關其配置方式的有限信息,因此您必須就這是否足以滿足您的需求形成自己的看法。但是,他們不會保留舊版本,因此這只能保護您免受硬體故障的影響,而不能防止某種類型的用戶錯誤(這比硬體故障更有可能發生)。

另請注意,如果您的 EC2 伺服器位於執行個體儲存上,則如果伺服器停止,資料將被擦除。對於持久存儲,您的資料必須位於彈性塊存儲 (EBS) 磁碟區上。一旦它位於 EBS 磁碟區上,您就可以定期拍攝快照(手動或使用 Amazon API 自動拍攝),然後您就可以回滾到舊版本。適用於 PHP 的 AWS 開發工具包非常好,您可以在此處找到它:http://aws.amazon.com/sdkforphp/

答案2

亞馬遜有很多服務,有時它可能會混淆所有不同的技術。請記住,亞馬遜正在創建所有這些服務來解決特定問題。

在 S3 中備份 MySQL 非常常見,並且在許多部落格中都有詳細記錄。我建議遵循此處的指南http://agiliq.com/blog/2009/02/automatically-backup-mysql-database-to-amazon-s3-u/

永遠不要假設任何事情,S3 被設計為容錯儲存設備,但這不會阻止我在我的電腦上或其他提供者本地備份所有內容。 EBS 磁碟區不夠可靠,無法作為備份的唯一儲存設備,如果您的資料庫也儲存在同一磁碟上,則更不用說。

無論您選擇哪種方法,我都會按照以下步驟進行備份

  1. 每天建立備份
  2. 將備份傳送到 S3(確保使用 MD5 校驗和,這樣您就知道您的備份是好的)
  3. 從本地 S3 或非 S3 的其他提供者下載備份
  4. 使用滾動備份類型歷史記錄清理舊備份
    • 儲存最近 7 天的備份
    • 每週儲存週五的備份,持續 1 個月
    • 保存上個月的備份一年

相關內容