將 SQL 備份文件從 EC2 備份到 Glacier
我有一台執行 Sendy(批量郵件)的 EC2 伺服器,我想備份 SQL 數據庫。目前,我可以通過 Virtualmin 手動下載 backup.sql 文件,但我想自動執行此操作。
我一直在看 Glacier,因為它成本低而且我不需要定期檢索備份;它僅用於緊急情況。我在網上看了很多,我對如何做到這一點有不同的想法。有人說只能從 S3 備份到 Glacier。在我的情況下,這意味著 EC2 -> S3 -> Glacier,但我真的不需要 S3 並且發現它不需要支付。
是否可以在沒有 S3 的情況下自動將 backup.sql 文件從 EC2 發送到 Glacier?
或者,如果您認為有更好的方法來處理這個問題,那麼我對想法持開放態度。
這裡有兩個相關的 AWS 服務: - Amazon Glacier,最近稱為 Amazon S3 Glacier,專為長期企業歸檔而設計。除非您完全了解服務、保險庫、檔案等,否則不應使用它。Amazon S3 是一種更加靈活的服務,基於文件/對象。它有許多儲存類,包括標準、不頻繁訪問 (IA)、Glacier 和深度存檔。這是您應該使用的服務。
使用 AWS S3,您可以簡單地上傳您的備份文件。您可以根據日期使用不同的文件名,也可以覆蓋舊文件並打開版本控制。
您可以使用諸如Restic 之類的增量備份工具,這將減少您的儲存需求,並且可以使備份過期(例如,祖父、父親、兒子計劃)。如果你使用 Restic,你必須確保不要因為召回時間而將諸如索引之類的文件放入 glacier 類 - 最好將它們保持在 IA 類或類似的類中。您可以在技術上將數據文件移動到冰川類型類,但最短儲存時間可能會抵消節省。簡單地將文件儲存到 S3 深度歸檔類中可能更簡單、更便宜。
無論哪種方式,這很容易實現。您有一個執行數據庫導出的 cron 作業,然後使用 S3 API 將文件上傳到 S3。這是我如何使用 restic 為 mysql 做的
mysqldump --skip-dump-date -h localhost db_name > /var/backups/database/database-name.sql restic -q --repo s3:s3.amazonaws.com/bucketname/foldername backup /var/backups/database --exclude="*.tmp" --exclude="thumbnails" --cleanup-cache
或者,如果您想進行基本的 S3 上傳,我在 Windows 上使用的命令行是這樣的 - Linux 類似
aws s3 sync c:\backupfolder s3://bucket-name/ --profile AWS-cli-profile-name --storage-class DEEP_ARCHIVE --exclude *.txt
在這兩種情況下,我都會打開儲存桶版本控制,但如果您只上傳文件而沒有像 Restic 這樣的增量備份,這一點尤其重要。在這種情況下,您可能需要刪除舊版本,否則成本會隨著時間的推移而顯著增加。