如果您經營網站或在線業務,則需要有備份策略以在緊急情況下恢復數據。在沒有備份的情況下運行關鍵網站可能意味著全部數據丟失,從而導致您的公司倒閉。2021年3月,歐洲的一個 OVH 數據中心被燒毀,導致數百萬個站點和數千家企業倒閉。
抱最好的希望,做最壞的打算
當我們開發新產品、應用程序或服務時,我們會抱最好的希望,但也會考慮最壞的情況。為防止出現最壞情況,您需要備份、恢復和驗證策略。我的第一位導師總是對我說:“如果你不測試你的備份,你就沒有備份。”擁有完整備份意味著您可以免受多種風險,包括硬件故障、人為錯誤、網絡攻擊、數據損壞或自然災害。
3-2-1 備份規則
3-2-1 備份規則是一個易于記憶的首字母縮寫詞,是在幾乎任何故障情況下保護數據安全的常用方法。規則是:至少保留三 (3) 個數據副本并將兩 (2) 個備份副本存儲在不同的存儲介質上,其中一 (1) 個位于異地。
在本質上:
- 至少擁有三個數據副本。
- 將副本存儲在兩個不同的介質上。
- 使用異地備份副本確保 IT 安全。
三份數據
除了您的主要數據外,建議至少保留兩個額外的備份。您擁有的備份副本越多,一次丟失所有副本的可能性就越小。因此,3-2-1 備份規則規定您至少需要三個數據副本,即主要數據和該數據的兩個備份。
兩種不同的媒體類型
不用說,在同一個服務器/實例中存儲多個數據備份是不合邏輯的。墨菲定律或磨損,或者驅動器是一起購買的并且具有相同的平均故障間隔時間 (MTBF) 率。在一個驅動器出現故障后,同一存儲中的另一個驅動器大約在同一時間出現故障是很常見的。強烈建議在不同的存儲介質類型上保留兩份數據副本,例如內部硬盤驅動器和可移動存儲介質(磁帶、外部硬盤驅動器、USB 驅動器等)。
在異地至少保留一份備份副本
很明顯,一場本地災難可能會損壞存儲在一個地方的所有數據副本,3-2-1 備份規則說:在遠程位置至少保留一份數據副本,例如異地存儲或云。在異地存儲一個備份副本可增強數據安全性,而在現場存儲另一個備份副本可在發生故障時提供更快、更簡單的恢復。
我們的備份策略
我們在MGT-COMMERCE管理小型和企業自動縮放客戶。普通客戶使用150 GB磁盤空間,而MySQL 數據庫在5-10 GB之間。在公司早期,我們使用開源備份軟件如rsnapshot進行增量數據備份,并使用bash 腳本通過mysqldump每4 小時備份一次MySQL 數據庫。
這種方法在數據量小、數據庫小的情況下效果很好,但在數據變化多、數據庫大的項目中效果不佳,因為增量變化的計算需要時間,會降低磁盤性能。每隔幾個小時運行一次mysqldump會鎖定和阻止性能,并可能導致停機。多年來,我們一直在使用Amazon Machine Images (AMI) 為所有客戶進行每小時備份。
什么是亞馬遜機器映像?
Amazon 系統映像(AMI)基本上是整個實例的完整備份,包括所有相關磁盤。
優點:
- 通過 AWS SDK 輕松創建和管理
- 幾分鐘內恢復
- 性能無惡化
- 存儲在不同的數據中心
- 您為數據更改付費,而不是為創建的 AMI 付費
- 易于復制到其他 AWS 區域
- 可以利用 Amazon EBS 加密
- 市場領導者 - 被數百萬家公司使用
缺點:
- 成本估算困難
- 需要啟動實例(源)以恢復文件、目錄或數據庫
- 今天,我們每天執行超過 25.000 次備份,保留期為7 天。可以在每個客戶的實例級別單獨配置保留期。
測試你的備份
您可以進行每小時備份或異地備份,但如果它們在您需要它們時不工作,它們就毫無價值。CloudPanel在每晚凌晨4:15創建每個數據庫的轉儲并將它們存儲在目錄中。/home/cloudpanel/backups/$databaseName
此轉儲對于更新不需要更新數據庫的開發、測試或暫存環境很有用。對于許多客戶,我們都有 bash 腳本(cron 作業)每晚更新測試/階段環境。我們rsync測試/階段之間的差異,并從晚上導入數據庫。一個非常好的方法是將便宜的測試/階段服務器與您的生產環境分開,例如,通過使用另一個云提供商。每天,您都會 rsync 所有文件并從晚上導入最新的數據庫轉儲。在緊急情況下,您可以在不同的數據中心進行多個備份,并可以使用一個異地備份。
結論
如您所知,如果您不想冒數據或業務損失的風險,則必須具備良好的備份和恢復策略。假設您是開發人員、代理機構或托管服務提供商。在那種情況下,它應該是您最優先考慮的事情之一,因為即使是擁有超過 20 年經驗的專家也是人,也會犯錯誤。如果您使用托管服務來管理您的應用程序,您應該詢問他們如何執行備份以及執行備份的頻率。通常,備份不包括在內,需要您自己完成。盡管如此,強烈建議您進行異地備份,因為您只有在公司已經發生時才知道它有多好,并且您總是希望為最壞的情況做好準備。