

# REL09-BP04 定期執行資料復原以驗證備份的完整性和程序
<a name="rel_backing_up_data_periodic_recovery_testing_data"></a>

 透過執行復原測試，驗證您的備份程序實作是否符合復原時間目標 (RTO) 和復原點目標 (RPO)。 

 使用 AWS 時，您可以建立一個測試環境，還原備份來評估 RTO 和 RPO 功能，並針對資料內容和完整性執行測試。 

 此外，Amazon RDS 和 Amazon DynamoDB 允許時間點復原 (PITR)。使用持續備份時，您可以將資料集還原到指定日期和時間當時的狀態。 

 **預期成果：** 使用妥善定義的機制定期復原來自備份的資料，以確保可在工作負載的既定復原時間點目標 (RTO) 內復原。驗證從備份中還原是否會導致資源包含原始資料 (而其中沒有任何損壞或無法存取)，但在復原點目標 (RPO) 內發生資料遺失。 

 **常用的反模式：** 
+  還原備份，但不查詢或擷取任何資料，以確保還原可用。 
+  假設備份存在。 
+  假設系統的備份可以完全運作，而且可以從中復原資料。 
+  假設從備份中還原或復原資料的時間落在工作負載的 RTO 內。 
+  假設備份上包含的資料落在工作負載的 RPO 內。 
+  在不使用執行手冊的情況下，或在建立的自動化程序外部，還原特定資料。 

 **建立此最佳實務的優勢：** 測試備份的復原確保可在需要時還原資料，而不必擔心資料可能丟失或損壞，也可確保還原和復原可在工作負載的 RTO 內進行，而且任何資料遺失都會落在工作負載的 RPO 內。 

 **若未建立此最佳實務，暴露的風險等級為：** 中 

## 實作指引
<a name="implementation-guidance"></a>

 測試備份和還原功能可以提高能夠在中斷期間執行這些動作的信心。定期將備份還原至新位置，並執行測試以驗證資料的完整性。某些應該執行的常用測試正在檢查 

 所有資料是否可用、未損壞、可存取，並且任何資料遺失都落在工作負載的 RPO 內。此類測試也可以協助確定，復原機制是否足夠快到適應工作負載的 RTO。 

1.  **識別目前正在** 備份的資料來源，以及這些備份的存放位置。請參閱 [REL09-BP01 識別並備份所有需要備份的資料，或從來源複製資料](rel_backing_up_data_identified_backups_data.md) 以取得如何實作此動作的指引。 

1.  **建立每個資料來源的** 資料驗證準則。不同類型的資料將具有不同的屬性，可能需要不同的驗證機制。在您自信可於生產環境中使用此資料之前，請考慮如何驗證它。一些驗證資料的常用方法是使用資料和備份屬性，例如資料類型、格式、檢查總和、大小，或這些屬性與自訂驗證邏輯的組合。例如，這可能是建立備份時所還原資源與資料來源之間的檢查總和值比較。 

1.  **建立 RTO 和 RPO，** 根據資料關鍵性還原資料。請參閱 [REL13-BP01 定義停機和資料遺失的復原目標](rel_planning_for_recovery_objective_defined_recovery.md) 以取得如何實作此動作的指引。 

1.  **存取您的復原功能**。審查您的備份和還原策略，以了解它是否可以符合您的 RTO 和 RPO，並視需要調整策略。您可以使用 [AWS Resilience Hub](https://docs.aws.amazon.com/resilience-hub/latest/userguide/create-policy.html)，執行工作負載的評定。此評定會針對彈性政策評估您的應用程式組態，並報告您的 RTO 和 RPO 目標是否可以實現。 

1.  **使用目前建立且用於** 生產環境進行資料還原的程序執行測試還原。這些程序取決於原始資料來源的備份方式、備份本身的格式和儲存位置，或是否已從其他源重現資料。例如，如果您是使用類似 [AWS Backup 的受管服務，這可能與將備份還原至新資源一樣簡單](https://docs.aws.amazon.com/aws-backup/latest/devguide/restoring-a-backup.html)。如果已使用 AWS 彈性災難復原，您可以 [啟動復原練習。](https://docs.aws.amazon.com/drs/latest/userguide/failback-preparing.html)。 

1.  **根據您先前** 在步驟 2 中針對資料驗證建立的準則，驗證從已還原的資源 (來自上一個步驟) 進行的資料復原。還原和復原的資料是否包含備份時最新的記錄/項目？ 此資料是否落在工作負載的 RPO 內？ 

1.  **測量還原和復原** 所需的時間，並將其與步驟 3 中建立的 RTO 進行比較。此程序是否落在工作負載的 RTO 內？ 例如，比較從還原程序開始到復原驗證完成的時間戳記，以計算此程序需要多長時間。所有 AWS API 都會加上時間戳記，而且此資訊可用於 [AWS CloudTrail](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/cloudtrail-user-guide.html)。儘管此資訊可以提供有關還原程序何時開始的詳細資訊，但驗證完成時的結束時間戳記應由驗證邏輯記錄。如果使用自動程序，則 [Amazon DynamoDB](https://aws.amazon.com/dynamodb/) 之類服務可以用來存放此資訊。此外，許多 AWS 服務會提供事件歷史記錄，其中提供特定動作何時發生的時間戳記資訊。在 AWS Backup 內，備份和還原動作都稱為 *工作*，而且這些工作包含時間戳記資訊做為其中繼資料的一部分，而此中繼資料可以用來測量還原和復原所需的時間。 

1.  **通知利害關係人** 如果資料驗證失敗，或如果還原和復原所需的時間超出針對工作負載建立的 RTO。實作自動化來執行此動作 [(例如在此實驗室中)](https://wellarchitectedlabs.com/reliability/200_labs/200_testing_backup_and_restore_of_data/)時，Amazon Simple Notification Service (Amazon SNS) 之類服務可以用來將電子郵件或 SMS 等通知推送至利害關係人。 [這些訊息也可以推送至傳訊應用程式，例如 Amazon Chime、Slack 或 Microsoft Teams，](https://aws.amazon.com/premiumsupport/knowledge-center/sns-lambda-webhooks-chime-slack-teams/) 或用來 [使用 AWS Systems Manager OpsCenter 建立任務做為 OpsItems](https://docs.aws.amazon.com/systems-manager/latest/userguide/OpsCenter-creating-OpsItems.html)。 

1.  **將此程序自動化為定期執行**。例如，服務 (例如 AWS Lambda 或 AWS Step Functions 中的狀態機器) 可以用來將還原和復原程序自動化，而且 Amazon EventBridge 可以用來定期觸發此自動化工作流程，如下面架構圖所示。了解如何 [使用 AWS Backup 將資料復厡驗證自動化](https://aws.amazon.com/blogs/storage/automate-data-recovery-validation-with-aws-backup/)。此外， [這個 Well-Architected 實驗室](https://wellarchitectedlabs.com/reliability/200_labs/200_testing_backup_and_restore_of_data/) 會提供實作體驗，有關在這裡為數個步驟執行自動化的方式。 

![\[圖表：顯示自動的備份和還原程序\]](http://docs.aws.amazon.com/zh_tw/wellarchitected/2022-03-31/framework/images/automated-backup-restore-process.png)


 **實作計劃的工作量：** 中到高，取決於驗證準則的複雜性。 

## 資源
<a name="resources"></a>

 **相關文件：** 
+  [使用 AWS Backup 將資料復厡驗證自動化](https://aws.amazon.com/blogs/storage/automate-data-recovery-validation-with-aws-backup/) 
+  [APN 合作夥伴：可以幫助備份的合作夥伴](https://aws.amazon.com/partners/find/results/?keyword=Backup) 
+  [AWS Marketplace：可用於備份的產品](https://aws.amazon.com/marketplace/search/results?searchTerms=Backup) 
+  [建立依照排程觸發的 EventBridge 規則](https://docs.aws.amazon.com/eventbridge/latest/userguide/create-eventbridge-scheduled-rule.html) 
+  [DynamoDB 的隨需備份和還原](https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/BackupRestore.html) 
+  [什麼是 AWS Backup？](https://docs.aws.amazon.com/aws-backup/latest/devguide/whatisbackup.html) 
+  [什麼是 AWS Step Functions？](https://docs.aws.amazon.com/step-functions/latest/dg/welcome.html) 
+  [什麼是 AWS 彈性災難復原](https://docs.aws.amazon.com/drs/latest/userguide/what-is-drs.html) 
+  [AWS 彈性災難復原](https://docs.aws.amazon.com/resilience-hub/latest/userguide/what-is.html) 

 **相關範例：** 
+  [Well-Architected 實驗室：測試備份並還原資料](https://wellarchitectedlabs.com/reliability/200_labs/200_testing_backup_and_restore_of_data/) 