簡介
備份資料庫是管理資料最重要的例行程序之一。資料通常是組織管理的最重要資產之一,因此能夠從意外刪除、損毀、硬體故障和其他災難中復原是一項高度優先事項。
雖然不難理解可靠備份的價值,但要弄清楚細節並非總是那麼簡單。決定備份機制、媒介、排程、保真度等級和安全性都是您需要考量的因素,而正確的組合通常會因專案而異。
在本指南中,我們將探討在決定資料庫備份策略時,您必須做出的關鍵決策。我們將涵蓋不同的備份方法、在資料生命週期的不同階段儲存資料的位置,並討論安全性如何以各種方式與備份設計交織。
Prisma Data Platform 可以協助簡化生產環境中資料庫的存取。如果您使用 Prisma Client 來管理資料庫連線,Prisma Data Platform 可以協助您更輕鬆地管理生產工作負載。
為什麼資料庫備份很重要?
在繼續之前,可能需要強調適當的備份可以為您的團隊帶來哪些價值。一些主要優點包括
- 硬體故障後重建:硬體故障可能會影響任何系統,而且通常無法預測。擁有全面的備份可讓您在更換故障組件後還原資料。
- 在損毀後還原檔案:資料損毀是另一種可能因軟體錯誤、硬體問題或環境因素而發生的情況。多層備份可讓您將備份集中的良好版本取代損毀的資料。
- 從意外刪除中復原:使用者錯誤也可能從您的資料庫中移除有價值的資料。透過備份,您可以復原該資料以避免永久遺失。
- 稽核與合規性:許多產業針對合規性原因制定了某些備份和稽核追蹤標準。您可能必須實施健全的備份例行程序,作為您處理各種容量的使用者資料協議的一部分。
- 在進行變更時提供保證:擁有可靠的備份可降低變更軟體、環境或營運的風險。您可以放心地進行變更,因為您知道如果發生問題,您不會讓組織的資料面臨風險。
備份類型
您可能需要考慮許多不同的類型備份。在本節中,我們將介紹您可以執行的一些不同備份,以及它們如何組合到更全面的系統中。
完整備份
完整備份是複製原始位置整個資料集的備份。它們具有任何備份中最大的範圍,因為根據定義,它們會讀取和寫入從來源到目標的所有資料。
完整備份非常重要,因為它們為您提供資料集的完整副本,可用於部分或完全還原遺失的資料。每個策略都應包含完整備份,作為其例行程序的核心組件。
雖然完整備份是必要的,並且提供了大多數備份策略的基礎,但它們也有一些主要的缺點。由於它們必須讀取和寫入整個資料集,因此可能需要很長時間才能完成,並且可能會在整個時間內對系統造成負擔。此外,隨著時間的推移維護許多資料庫的完整副本可能會消耗大量的儲存空間。
差異備份
差異備份會複製自上次完整備份以來已變更的所有資料。這可讓您在每個備份週期執行一次昂貴的完整備份,然後在較小的備份中記錄進一步的變更,這些備份使用完整備份作為起點。
差異備份解決了頻繁完整備份帶來的一些核心問題。它們比完整備份小,因此佔用的儲存空間更少,並且執行速度更快。
雖然差異備份比完整備份有所改進,但它們仍然存在一些缺點。自上次完整備份以來經過的時間越長,差異備份就越大。此外,擁有多個差異備份可讓您建構不同的時間點,但代價是基本上多次備份相同的變更。
增量備份
增量備份是差異備份所用策略的修改版。雖然差異備份始終記錄自上次完整備份以來的差異,但增量備份記錄自上次完整備份或增量備份以來的差異。這表示增量備份可以透過從完整備份開始,然後還原多個增量備份來還原資料,而不是始終在完整備份上分層。
此系統可讓您頻繁備份,同時僅記錄系統中的每個變更一次。每個備份都只會包含自上次執行任何備份以來發生的變更。這有助於保持每個增量備份的大小可管理,並讓您能夠透過將最新的完整備份與各種數量的增量備份組合來建構不同的時間點。
增量備份的一個缺點是還原資料可能有點複雜。自完整備份以來經過的時間越長,您必須套用才能取得最新變更的增量備份就越多。這可能比還原單一完整備份和(最多)單一差異備份花費更長的時間。
預寫或交易記錄備份
資料庫經常實作安全機制,以協助從系統崩潰和不安全關機中復原。根據系統的不同,這些機制可能稱為預寫記錄 (WAL) 或交易記錄。雖然這些機制主要用於當機復原目的,但它們可以用作備份策略的組件,以實現更彈性的封存。
基於 WAL 的備份背後的基本概念是定期備份資料庫的檔案系統,然後使用 WAL 將一致的狀態還原到資料庫,並重播備份後發生的任何變更。這聽起來與增量備份類似,但存在一些關鍵差異。
第一個重要的差異是這兩個組件使用不同的媒介。此例中的完整備份是對資料庫檔案的備份,而不考慮是否以一致的狀態鎖定記錄。然後,WAL 負責修復資料的狀態並將其趕上您想要還原的點。
此系統也比傳統增量備份更具彈性,因為單一 WAL 可以重播到不同的時間點。這讓您可以選擇要還原多少資料。此備份樣式的一個缺點是它會影響整個資料庫系統。您無法僅還原部分資料庫,同時保持其他部分完整無缺。因此,它不適用於還原個別表格或其他資料庫物件。
線上與離線備份
在決定備份策略時,需要記住的一件事是,某些備份機制無法在運作中的系統上執行。
需要系統離線的備份方法通常有此限制,以確保工具可以在特定時間點擷取資料庫的一致視圖。如果系統正在更新,並且在執行備份時記錄正在變更,則從一開始的資料到流程完成時可能無效。
但是,離線備份確實有一些優點。關閉資料庫表示它不必與活躍使用者共用資源,這可以使其更快完成。備份程序本身也可能不那麼複雜,因為不會有任何程序主動變更資料。
話雖如此,在許多情況下,每次備份都關閉主要資料庫是不可接受的。幸運的是,有一些備份方法旨在用於運作中的系統。一般來說,這涉及使用公用程式直接查詢資料庫系統,以便將資料庫結構和資料複製到檔案系統。除了所需的權限外,這與常規用戶端要求表格結構資訊和其中包含的資料沒有太大區別。
這些「邏輯」備份工具(相對於使用原始檔案的實體工具)的主要優點之一是,它們可以依賴資料庫自身的能力,在特定時間點呈現資料的統一一致快照。此內容中的備份程序作為資料庫使用者運作,因此此功能的代價是它將與其他用戶端爭奪有限的資料庫資源。
複寫是備份嗎?
對於某些使用者來說,一個困惑點是,如果已設定複寫,為什麼仍然需要資料庫備份。
資料庫複寫是一種將變更記錄從一部伺服器串流到另一部伺服器,以鏡像不同系統上的變更的方法。與備份一樣,這也會建立系統資料的副本。但是,由於一些重要的原因,不應將複寫視為安全的備份策略。
在大量故障情況下,複寫無法像備份一樣保護您的資料。確保所有變更都複製到輔助伺服器的相同機制也會複製主要資料庫的任何問題。例如,如果在主要資料庫上意外刪除記錄,則該變更也會在任何下游複本上執行。相同的程序表示損毀的資料也會傳播。
複寫不是備份的另一個原因是,它沒有任何明顯的資料還原能力。雖然您可以在伺服器之間來回複寫變更,但複寫與保留資料的先前版本無關,並且當記錄輪換時,您的資料的任何歷史視圖都可能會遺失。這種「缺陷」提醒我們,複寫的主要目的是協助組織提高可用性和效能,而不是作為資料保存工具。
話雖如此,複寫可以是備份和災難復原計畫的重要組件。例如,複寫在主要資料庫發生硬體故障時非常有用。在這種情況下,管理員可以快速將複寫追隨者升級為領導者角色,並繼續為用戶端請求提供服務,以避免冗長的還原程序。有些組織也設定了「延遲」複本,僅在經過一段時間後才套用變更,讓他們能夠在必要時透過切換到複本來快速「回滾」資料庫狀態。
複寫通常參與備份程序的另一個案例是作為備份作業的目標。許多時候,備份複本比備份主要伺服器更容易。例如,為了取得一致的檔案層級備份,您可以將輔助資料庫設定為生產資料庫的複本。資料庫同步後,您可以暫時關閉複寫,並執行複本的備份,而不會影響您的生產流量。備份完成後,您可以重新開啟複寫,以將伺服器與備份期間發生的變更重新同步。
備份如何影響安全性?
備份策略以幾種不同的方式與安全性考量交織。
在勒索軟體攻擊等情況下,備份可以透過提供資料的輔助來源來協助防範某些安全事件。例如,如果入侵者能夠存取並加密主要資料庫的內容,則存取歷史快照可能會為您提供更多解決情況的選項。為了使這成為一種選擇,您的備份目的地必須與來源資料處於不同的安全環境中,以防止攻擊者也影響您的備份。
務必了解您的安全性原則需要反映在您的備份策略中,否則您可能會在備份資料時無意中洩露敏感資訊。例如,如果您的生產系統實作了個人身分識別資訊 (PII) 的安全性,則您的備份應以維持該安全等級的方式建構。這可能表示針對不同類型的資料使用不同的加密,或針對不同類型的資料使用不同的備份位置。您的具體情況將決定您需要在備份策略中納入哪些類型的保護。
在某些情況下,對於收集後不久就不再有價值的敏感資料,值得考慮不備份該資料。系統收集或產生的某些類型的資料在當下可能很有用,但如果長期儲存,可能會帶來更高的風險。如果您從資料中獲得的價值與其時效性密切相關,那麼您最好將其從備份集中排除。
備份的儲存位置
在設計備份策略時,您必須做出的一個決定是您希望將實際備份資料儲存在哪裡。許多不同的因素可能會影響哪種類型的備份目的地最適合您。
在許多情況下,選擇備份目的地是在易於存取、成本、安全性和便利性之間取得平衡。擁有現場備份可以快速備份,但管理實體磁碟可能超出您願意管理的範圍。此外,現場備份無法防止特定地點的災難,例如火災、洪水或盜竊。另一方面,雲端備份可能很方便,但可能會將您綁定到特定供應商、成本更高,並且可能需要更長的時間才能復原。
大多數時候,最好使用多個儲存位置和媒介,以協助平衡風險和優點,並獲得額外的資料遺失保護。例如,您可以使用物件儲存供應商(如 Amazon S3)作為主要備份輪換的目標。大約每個月,您可能會將其中一些備份移動到 Amazon S3 Glacier 等封存儲存以進行更長期的儲存。您可能還希望將資料備份到與生產基礎架構不同的供應商。
備份提示
現在我們已經介紹了健全備份策略的許多組件,我們可以看看您可能需要考慮的一些一般建議。
建立備份輪換策略
您需要弄清楚的第一件事之一是您想要多久執行一次備份,以及哪種備份類型組合最有幫助。為此,您需要建立備份輪換,以便您可以根據需要頻繁備份,而不會使用不必要的儲存空間。
備份輪換基本上是一個排程,用於決定在什麼間隔採取哪種類型的備份。一般來說,組織實作輪換,以便他們可以擁有許多最近的備份,同時仍然保留有用的歷史備份量作為封存。排程通常根據備份機制的效能影響、您需要採取的備份類型、備份儲存容量和成本來建立。
作為相當傳統的備份策略範例,您可以從每週對資料庫進行一次完整備份開始。在一週的其他日子,您可以排程增量備份,以便您可以還原到任何特定日期。您可能希望隨時保留兩個完整備份以及所有中間的增量備份。您可能還希望持續封存每日 WAL 資料,以便您可以還原到當天任何特定時間點。
當新的備份發生時,最舊的備份可能會被刪除,或者偶爾轉移到長期儲存。這讓您可以存取歷史資料(如果您需要),但封存不會保留在您的正常備份輪換中。像這樣的系統可以協助您在最大程度地減少隨著時間推移總儲存空間增加的情況下,為您提供復原選項。
排程和自動化備份程序
一旦您決定了備份輪換,盡可能排程和自動化大部分程序就非常重要。確保您的備份在沒有監督的情況下發生是保護資料的重要組成部分。
大多數備份機制都包含排程組件,因此在大多數情況下,它不應需要特殊的工作。但是,重要的是要確保您有機制在排定的備份未發生時提醒您。這可能是備份失敗時的電子郵件警報,或對您的組織監控的聊天頻道的 Ping。
自動化備份程序也可能需要您思考如何最佳地實作您的安全性需求和存取需求。提取式備份系統(其中備份目標從您的生產系統提取資料)是否有意義?備份程序需要對您的系統進行哪種類型的存取?您可以移除哪些權限來限制備份帳戶的範圍和影響?這些是您在實作備份系統時,尤其是在自動化程序時需要問自己的問題類型。
經常測試您的備份
健全備份系統中最重要且經常被忽略的活動之一是測試。您需要定期測試您的備份檔案是否可用於成功還原資料。如果您無法保證備份的有效性,那麼整個備份流程的價值將會非常有限,甚至毫無價值。
測試備份包括將備份資料應用於乾淨的系統,或應用於具有部分或不同資料的系統。重要的是要了解您可以在這些情況下還原,以及您需要執行的確切恢復流程。這不僅驗證了備份檔案的完整性,也確保您的組織知道在高度壓力的情況下必須執行哪些步驟來還原您的系統。它還為您提供了關於不同類型的資料還原可能需要多長時間的寶貴資料。
備份可以不時進行手動測試,但理想情況下,恢復流程應該是您為其餘備份實施的自動化的一部分。備份可以還原到測試環境中,並且可以運行測試套件,以確保資料具有您期望的值和結構。如果您確實自動化了備份測試,請不要忘記在還原失敗時設定警報。
結論
在本指南中,我們涵蓋了資料庫備份如此重要的原因,並介紹了實施備份時需要考慮的一些事項。我們討論了備份的優點、不同類型和範圍的備份、線上和離線備份之間的差異、以及為什麼異地備援不是備份策略等等。
熟悉您的組織有哪些選擇,以及不同的決策如何影響您的效能、安全性及可用性至關重要。雖然每個專案的備份需求都不同,但對於持久、可信任的長期儲存以幫助從資料問題中恢復的需求是共通的。花時間整理您的需求並制定全面的計畫,將使您能夠更安全、更自信地向前邁進,並減少風險。
Prisma Data Platform 可以協助簡化生產環境中資料庫的存取。如果您使用 Prisma Client 來管理資料庫連線,Prisma Data Platform 可以協助您更輕鬆地管理生產工作負載。