

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

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

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

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

 **建立此最佳實務的優勢：**測試備份復原可驗證資料是否可以在需要時還原，而不必擔心資料可能遺失或損毀，可在工作負載的 RTO 內進行還原和復原，而且任何資料遺失都屬於工作負載的 RPO 範圍。

 **未建立此最佳實務時的曝險等級：**中 

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

 測試備份和還原功能可以提高能夠在中斷期間執行這些動作的信心。定期將備份還原至新位置，並執行測試以驗證資料的完整性。某些應該執行的常用測試會檢查所有資料是否可用、未損毀、可存取，且任何資料遺失落在工作負載的 RPO 內。此類測試也可以協助確定，復原機制是否足夠快到適應工作負載的 RTO。

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

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

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

 AWS Elastic Disaster Recovery 提供 Amazon EBS 磁碟區的持續時間點復原快照。複寫來源伺服器時，會根據設定的政策，隨著時間的推移記錄時間點狀態。彈性災難復原可透過啟動執行個體進行測試和演練，而無須重新導向流量，從而協助您驗證這些快照的完整性。

 **實作步驟** 

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 Elastic Disaster Recovery，則可以[啟動復原演練](https://docs.aws.amazon.com/drs/latest/userguide/failback-preparing.html)。

1.  根據先前建立的資料驗證條件，從已還原的資源中**驗證資料復原**。還原和復原的資料是否包含備份時最新的記錄/項目？ 此資料是否落在工作負載的 RPO 內？ 

1.  **測量還原和復原所需的時間**，並將其與已確定的 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/latest/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 Elastic Disaster Recovery](https://docs.aws.amazon.com/drs/latest/userguide/what-is-drs.html) 
+  [AWS Elastic Disaster Recovery](https://aws.amazon.com/disaster-recovery/) 