

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# 災難復原和 Amazon DocumentDB 全域叢集
<a name="global-clusters-disaster-recovery"></a>

**Topics**
+ [執行 Amazon DocumentDB 全域叢集的受管容錯移轉](#managed-failover)
+ [執行 Amazon DocumentDB 全域叢集的手動容錯移轉](#manual-failover)
+ [執行 Amazon DocumentDB 全域叢集的切換](#global-cluster-switchover)
+ [解除封鎖全域叢集切換或容錯移轉](#unblocking-gc-so-fo)
+ [管理 Amazon DocumentDB 全域叢集RPOs](#global-clusters-manage-recovery)

透過使用全域叢集，您可以快速從災難中復原，例如區域故障。從災難復原通常使用 RTO 和 RPO 的值來測量。
+ **復原時間點目標 (RTO)** — 系統在災難發生後恢復運作狀態所需的時間。換言之，RTO 會測量停機時間。對於全域叢集，RTO 會在幾分鐘內完成。
+ **復原點目標 (RPO)** — 可能遺失的資料量 (以時間為單位)。對於全域叢集，RDO 通常以秒為單位測量。
+ 若要從意外中斷中復原，您可以執行跨區域容錯移轉到全域叢集中的其中一個次要節點。當您的全域叢集有多個次要區域時，請務必分離您想要提升為主要區域的所有次要區域。然後，您可以將其中一個次要區域提升為新的主要區域 AWS 區域。最後，您可以在每個其他次要區域中建立新的叢集，並將這些叢集連接到您的全域叢集。

## 執行 Amazon DocumentDB 全域叢集的受管容錯移轉
<a name="managed-failover"></a>

此方法的目的是在發生實際區域災難或服務完全中斷的情況下，提供業務持續性。

在受管容錯移轉期間，您的主要叢集會容錯移轉至您選擇的次要區域，同時維護 Amazon DocumentDB 全域叢集的現有複寫拓撲。選擇的次要叢集會將其中一個唯讀節點提升為完整寫入器狀態。此步驟可讓叢集擔任主要叢集的角色。當此叢集擔任這個新角色時，您的資料庫在短時間內無法使用。當此次要叢集成為新的主要叢集時，未從舊主要叢集複寫到所選次要叢集的資料可能會遺失。舊的主要磁碟區會盡最大努力嘗試擷取快照，然後再與新的主要磁碟區同步，以便在快照上保留未複寫的資料。

**注意**  
只有在主要叢集和所有次要叢集具有相同的引擎版本時，您才能在 Amazon DocumentDB 全域叢集上執行受管跨區域叢集容錯移轉。如果您的引擎版本不相容，您可以依照 [執行 Amazon DocumentDB 全域叢集的手動容錯移轉](#manual-failover) 中的步驟手動執行容錯移轉。  
如果區域的引擎版本不相符，則會封鎖容錯移轉。檢查是否有任何待定升級並套用，以確保所有區域的引擎版本相符，且全域叢集容錯移轉已解除封鎖。如需詳細資訊，請參閱[解除封鎖全域叢集切換或容錯移轉](#unblocking-gc-so-fo)。

若要將資料遺失降至最低，請在使用此功能之前執行下列動作：
+ 讓應用程式離線，以防止寫入傳送至 Amazon DocumentDB 全域叢集的主要叢集。
+ 檢查所有 Amazon DocumentDB 次要叢集的延遲時間。選擇複寫延遲最低的次要區域，即可將目前失敗的主要區域的資料遺失降到最低。檢視 Amazon CloudWatch 中的 指標，檢查全域叢集中所有 Amazon DocumentDB 次要叢集的延遲時間。 `GlobalClusterReplicationLag` Amazon CloudWatch 這些指標會顯示次要叢集複寫到主要叢集落後多遠 （以毫秒為單位）。

  如需 Amazon DocumentDB CloudWatch 指標的詳細資訊，請參閱 [Amazon DocumentDB 指標](cloud_watch.md#cloud_watch-metrics_list)。

在受管容錯移轉期間，所選次要叢集會提升為主要叢集的新角色。不過，它不會繼承主要叢集的各種組態選項。組態不相符可能會導致效能問題、工作負載不相容，以及其他異常行為。若要避免此類問題，請針對下列項目解決 Amazon DocumentDB 全域叢集之間的差異：
+ **視需要為新的主要叢集設定 Amazon DocumentDB 叢集參數群組** — 您可以為 Amazon DocumentDB 全域叢集中的每個叢集獨立設定 Amazon DocumentDB 叢集參數群組。因此，當您提升次要叢集以接管主要角色時，次要叢集的參數群組的設定可能會與主要叢集不同。若是如此，請修改提升次要叢集的參數群組，以符合主要叢集的設定。若要了解作法，請參閱[修改 Amazon DocumentDB 叢集參數群組](cluster_parameter_groups-modify.md)。
+ **設定監控工具和選項，例如 Amazon CloudWatch 事件和警示** — 視需要為提升的叢集設定相同的記錄功能、警示等。與參數群組一樣，在容錯移轉程序期間，這些功能的組態不會從主要叢集繼承。某些 CloudWatch 指標 (例如複寫延遲) 僅適用於次要區域。因此，容錯移轉會改變檢視這些指標並對其設定警示的方式，而且可能需要變更任何預先定義的儀表板。如需 Amazon DocumentDB 叢集和監控的詳細資訊，請參閱 [在 Amazon DocumentDB 中監控和記錄](monitoring_docdb.md)。

一般而言，選擇的次要叢集會在一分鐘內擔任主要角色。一旦新的主要區域的寫入器節點可用，您就可以將應用程式連線到該節點並恢復工作負載。Amazon DocumentDB 提升新的主要叢集後，會自動重建所有其他次要區域叢集。

由於 Amazon DocumentDB 全域叢集使用非同步複寫，因此每個次要區域中的複寫延遲可能會有所不同。Amazon DocumentDB 會重建這些次要區域，使其具有與新主要區域叢集完全相同的point-in-time資料。整個重建工作的期間可能持續幾分鐘到數小時，取決於儲存磁碟區的大小和區域之間的距離。當次要區域叢集從新的主要區域完成重建時，便可供讀取存取使用。一旦新的主要寫入器提升並可用，新的主要區域的叢集就可以處理 Amazon DocumentDB 全域叢集的讀取和寫入操作。

若要還原全域叢集的原始拓撲，Amazon DocumentDB 會監控舊主要區域的可用性。一旦該區域正常運作且再次可用，Amazon DocumentDB 會自動將其新增回全域叢集做為次要區域。在舊主要區域中建立新的儲存磁碟區之前，Amazon DocumentDB 會嘗試在故障時擷取舊儲存磁碟區的快照。這樣做是為了讓您用它來復原任何遺失的資料。如果此操作成功，Amazon DocumentDB 會將名為 "rds：docdb-unplanned-global-failover-name-of-old-primary-DB-cluster-timestamp" 的快照置於 的快照區段中 AWS 管理主控台。您也可以在 `DescribeDBClusterSnapshots` API 操作傳回的資訊中看到此快照。

**注意**  
舊儲存磁碟區的快照是系統快照，會受到舊的主要叢集上設定的備份保留期限的限制。若要在保留期間之外保留此快照，您可以複製該快照並將它儲存為手動快照。若要進一步了解如何複製快照，包括定價在內，請參閱 [複製叢集快照](backup_restore-copy_cluster_snapshot.md#backup_restore-copy_a_cluster_snapshot)。

還原原始拓撲之後，您可以在對業務和工作負載最有意義時執行切換操作，將全域叢集容錯移轉回原始主要區域。若要啟用，請依照「[執行 Amazon DocumentDB 全域叢集的切換](#global-cluster-switchover)」中的步驟進行。

您可以使用 AWS 管理主控台、 AWS CLI或 Amazon DocumentDB API 容錯移轉 Amazon DocumentDB 全域叢集。

------
#### [ Using the AWS 管理主控台 ]

**在 Amazon DocumentDB 全域叢集上執行受管容錯移轉**

1. 登入 AWS 管理主控台，並在 https：//[https://console.aws.amazon.com/docdb](https://console.aws.amazon.com/docdb) 開啟 Amazon DocumentDB 主控台。

1. 在導覽窗格中，選擇**叢集**。

1. 尋找並選擇您要容錯移轉的 Amazon DocumentDB 全域叢集。  
![影像：選取全域叢集的叢集資料表。](https://docs.aws.amazon.com/zh_tw/documentdb/latest/devguide/images/failover-cluster-table.png)

1. 從**動作**功能表中選擇**切換或容錯移轉**。

1. 在出現的對話方塊中，選擇**容錯移轉**，然後從**新增主要叢集欄位下拉式清單中選擇次要叢集**。  
![影像：全域叢集切換或容錯移轉對話方塊。](https://docs.aws.amazon.com/zh_tw/documentdb/latest/devguide/images/switch-fail-confirm.png)

1. 在最後一個欄位中輸入「確認」。然後選擇 **Confirm** (確認)。

   主要叢集的狀態會變更為「**容錯移轉**」。此條件大約需要一分鐘。在此期間，新主要叢集的狀態會顯示「**修改中...**」。提升新的主要節點後，會顯示「**可用**」，並能夠提供讀取和寫入交易。包含舊主要節點的次要區域會在重新同步到新的主要節點時顯示「**重新同步...**」。與新的主要節點類似，只有在狀態變更為「**可用**」時，它才能提供交易。

1. 完成時，原始主要叢集會成為次要叢集。選取的次要叢集會成為主要叢集。  
![影像：顯示新主要叢集的叢集資料表。](https://docs.aws.amazon.com/zh_tw/documentdb/latest/devguide/images/failover-complete.png)

------
#### [ Using the AWS CLI ]

**在 Amazon DocumentDB 全域叢集上執行受管容錯移轉**

執行 [`failover-global-cluster`](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/docdb/failover-global-cluster.html) CLI 命令以容錯移轉您的 Amazon DocumentDB 全域叢集。使用 命令，傳遞下列選項的值：
+ `--region`
+ `--global-cluster-identifier`
+ `--target-db-cluster-identifier`
+ `--allow-data-loss`

在下列範例中，將每個{{使用者輸入預留位置}}取代為您叢集的資訊。

針對 Linux、macOS 或 Unix：

```
aws docdb failover-global-cluster \
   --region {{region_of_selected_secondary}} \
   --global-cluster-identifier {{global_cluster_id}} \
   --target-db-cluster-identifier {{arn_of_secondary_to_promote}} \
   --allow-data-loss
```

針對 Windows：

```
aws docdb failover-global-cluster ^
   --region {{region_of_selected_secondary}} ^
   --global-cluster-identifier {{global_cluster_id}} ^
   --target-db-cluster-identifier {{arn_of_secondary_to_promote}} ^
   --allow-data-loss
```

------

## 執行 Amazon DocumentDB 全域叢集的手動容錯移轉
<a name="manual-failover"></a>

如果一個叢集中的整個叢集 AWS 區域 無法使用，您可以將全域叢集中的另一個叢集提升為具有讀取/寫入功能。

如果不同 中的叢集 AWS 區域 是較佳的主要叢集選擇，您可以手動啟用全域叢集容錯移轉機制。例如，您可以增加其中一個次要叢集的容量，然後將它提升為主要叢集。或者， 之間的活動平衡 AWS 區域 可能會變更，因此將主要叢集切換到不同的 AWS 區域 叢集可能會降低寫入操作的延遲。

下列程序概述如何提升 Amazon DocumentDB 全域叢集中的其中一個次要叢集。

若要提升次要叢集：

1. 在中斷 AWS 區域 的情況下，停止對 中的主要叢集發出 DML 陳述式和其他寫入操作。

1. 從次要 識別叢集 AWS 區域 ，以用作新的主要叢集。如果您的全域叢集 AWS 區域 有兩個 （或更多） 次要叢集，請選擇延遲時間最短的次要叢集。

1. 從全域叢集分離您選擇的次要叢集。

   從全域叢集移除次要叢集會立即停止從主要叢集到此次要叢集的複寫，並將其提升為具有完整讀取/寫入功能的獨立佈建叢集。與 區域中主要叢集相關聯的任何其他次要叢集與中斷仍然可用，並且可以接受來自應用程式的呼叫。它們也會取用資源。由於您要重新建立全域叢集，為了避免分裂大腦和其他問題，請在接下來的步驟中建立新的全域叢集之前移除其他次要叢集。

   如需分離的詳細步驟，請參閱[從 Amazon DocumentDB 全域叢集移除叢集](global-clusters.manage.md#global-clusters.remove)。

1. 當您開始在下一個步驟中新增區域時，此叢集會成為新全域叢集的主要叢集。

1. 將 AWS 區域 新增至叢集。當您執行這項操作時，從主要到次要的複寫程序即會開始。

1.  AWS 區域 視需要新增更多 ，以重新建立支援應用程式所需的拓撲。請確定應用程式寫入會在進行這類變更之前、期間和之後傳送到正確的叢集，以避免全域叢集中叢集之間的資料不一致 （分裂大腦問題）。

1. 當中斷解決且您已準備好再次將原始 指派 AWS 區域 為主要叢集時，請反向執行相同的步驟。

1. 從全域叢集移除其中一個次要叢集。這將使其能夠提供讀取/寫入流量。

1. 將所有寫入流量重新導向至原始 中的主要叢集 AWS 區域。

1. 新增 AWS 區域 以在與之前 AWS 區域 相同的 中設定一或多個次要叢集。

您可以使用 AWS SDKs來管理 Amazon DocumentDB 全域叢集，讓您建立解決方案來自動化災難復原和業務持續性規劃使用案例的全域叢集容錯移轉程序。Apache 2.0 授權的客戶可以使用這類解決方案，也可以從此處的工具儲存庫存取。 [https://github.com/awslabs/amazon-documentdb-tools/tree/master/global-clusters-automation](https://github.com/awslabs/amazon-documentdb-tools/tree/master/global-clusters-automation)此解決方案利用 Amazon Route 53 進行端點管理，並提供可以根據適當事件觸發的 AWS Lambda 函數。

## 執行 Amazon DocumentDB 全域叢集的切換
<a name="global-cluster-switchover"></a>

您可以使用切換來例行變更主要叢集的區域。此方法適用於受控情況，例如操作維護及其他計劃內操作程序。

使用切換有三種常見的使用案例：
+ 對於特定行業強制實施的「區域輪換」需求。例如，金融服務法規可能希望第 0 層系統切換到不同的區域數個月時間，以確保定期演練災難復原程序。
+ 對於多區域「全天候」應用程式。例如，某家公司可能希望根據不同時區的營業時間，在不同區域提供較低的延遲寫入。
+ 可作為在容錯移轉後，容錯回復至原始主要區域的零資料遺失方法。

**注意**  
切換旨在用於運作狀態良好的 Amazon DocumentDB 全域叢集。若要從意外中斷復原，請依照 [執行 Amazon DocumentDB 全域叢集的手動容錯移轉](#manual-failover) 中適當的程序進行。  
若要執行切換，所有次要區域都必須執行與主要區域完全相同的引擎版本。如果區域的引擎版本不相符，則會封鎖切換。檢查是否有任何待定升級，並將其套用以確保所有區域的引擎版本相符，並且全域叢集切換已解除封鎖。如需詳細資訊，請參閱[解除封鎖全域叢集切換或容錯移轉](#unblocking-gc-so-fo)。

在切換期間，Amazon DocumentDB 會在維護您全域叢集的現有複寫拓撲時，將主要叢集切換到您選擇的次要區域。在開始切換程序之前，Amazon DocumentDB 會等待所有次要區域叢集與主要區域叢集完全同步。然後，主要區域中的資料庫叢集會變成唯讀，而選擇的次要叢集會將其中一個唯讀節點提升為完整寫入器狀態。將此節點提升為寫入器可讓該次要叢集擔任主要叢集的角色。由於所有次要叢集都在程序開始時與主要叢集同步，新的主要叢集會繼續 Amazon DocumentDB 全域叢集的操作，而不會遺失任何資料。您的資料庫在短時間內無法使用，因為同時間主要叢集和選取的次要叢集會承擔其新角色。

若要最佳化應用程式可用性，請在使用此功能之前執行下列動作：
+ 在非尖峰時間或寫入主要叢集最少的另一個時間執行此操作。
+ 讓應用程式離線，以防止寫入傳送至 Amazon DocumentDB 全域叢集的主要叢集。
+ 檢視 Amazon CloudWatch 中的 指標，檢查全域叢集中所有 Amazon DocumentDB 次要叢集的延遲時間。 `GlobalClusterReplicationLag` Amazon CloudWatch 此指標顯示次要叢集複寫到主要叢集落後多遠 （以毫秒為單位）。此值與 Amazon DocumentDB 完成轉換所需的時間直接成正比。因此，延遲值越大，轉換所需的時間越長。

  如需 Amazon DocumentDB CloudWatch 指標的詳細資訊，請參閱 [Amazon DocumentDB 指標](cloud_watch.md#cloud_watch-metrics_list)。

在轉換期間，選擇的次要資料庫叢集會提升為作為主要資料庫叢集的新角色。但是，它不會繼承主要資料庫叢集的各種組態選項。組態不相符可能會導致效能問題、工作負載不相容，以及其他異常行為。若要避免此類問題，請針對下列項目解決 Amazon DocumentDB 全域叢集之間的差異：
+ **視需要為新的主要叢集設定 Amazon DocumentDB 資料庫叢集參數群組** — 您可以為 Amazon DocumentDB 全域叢集中的每個叢集獨立設定 Amazon DocumentDB 叢集參數群組。這表示當您提升次要資料庫叢集以接管主要角色時，其參數群組可能會設定與主要資料庫叢集不同的參數群組。如果是這樣，請修改提升的次要資料庫叢集的參數群組，以符合主要叢集的設定。若要瞭解如何操作，請參閱[管理 Amazon DocumentDB 叢集參數群組](cluster_parameter_groups.md)。
+ **設定監控工具和選項，例如 Amazon CloudWatch Events 和警示** — 視需要為提升的叢集設定相同的記錄功能、警示等。與參數群組一樣，在轉換程序期間，這些功能的組態不會從主要叢集繼承。有些 CloudWatch 指標，例如複寫延遲，僅適用於主要區域。因此，轉換會改變檢視這些指標並對其設定警示的方式，而且可能需要變更任何預先定義的儀表板。如需詳細資訊，請參閱[在 Amazon DocumentDB 中監控和記錄](monitoring_docdb.md)。

**注意**  
角色轉換通常需要數分鐘才能完成。

當切換程序完成時，提升的 Amazon DocumentDB 叢集可以處理全域叢集的寫入操作。

您可以使用 AWS 管理主控台 或 來切換 Amazon DocumentDB 全域叢集 AWS CLI：

------
#### [ Using the AWS 管理主控台 ]

**在 Amazon DocumentDB 全域叢集上執行切換**

1. 登入 AWS 管理主控台，並在 [https://console.aws.amazon.com/docdb](https://console.aws.amazon.com/docdb)：// 開啟 Amazon DocumentDB 主控台。

1. 在導覽窗格中，選擇**叢集**。

1. 尋找並選取您要切換的 Amazon DocumentDB 全域叢集。  
![影像：選取全域叢集的叢集資料表。](https://docs.aws.amazon.com/zh_tw/documentdb/latest/devguide/images/switchover-cluster-table.png)

1. 從**動作**功能表中選擇**切換或容錯移轉**。

1. 在出現的對話方塊中，選擇**切換**，然後從**新增主要叢集欄位下拉式清單中選擇次要叢集**。  
![影像：已選取次要叢集的叢集切換對話方塊。](https://docs.aws.amazon.com/zh_tw/documentdb/latest/devguide/images/switch-fail-confirm-2.png)

1. 選擇**確認**。

   主要叢集的狀態會變更為「**切換」**。此條件大約需要三分鐘。在此期間，所有區域叢集的狀態會顯示「**修改中...**」。同步區域並提升新的主要區域後，將顯示所有狀態欄位的「**可用**」，並能夠提供交易。

1. 完成時，原始主要叢集會成為次要叢集。選取的次要叢集會成為主要叢集。  
![影像：顯示新主要叢集的叢集資料表。](https://docs.aws.amazon.com/zh_tw/documentdb/latest/devguide/images/failover-complete.png)

------
#### [ Using the AWS CLI ]

**在 Amazon DocumentDB 全域叢集上執行切換**

執行 [`switchover-global-cluster`](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/docdb/switchover-global-cluster.html) CLI 命令來切換 Amazon DocumentDB 全域叢集。使用 命令，傳遞下列選項的值：
+ `--region`
+ `--global-cluster-identifier`
+ `--target-db-cluster-identifier`

在下列範例中，將每個{{使用者輸入預留位置}}取代為您叢集的資訊。

針對 Linux、macOS 或 Unix：

```
aws docdb switchover-global-cluster \
   --region {{region_of_primary}} \
   --global-cluster-identifier {{global_cluster_id}} \
   --target-db-cluster-identifier {{arn_of_secondary_to_promote}}
```

針對 Windows：

```
aws docdb switchover-global-cluster ^
   --region {{region_of_primary}} ^
   --global-cluster-identifier {{global_cluster_id}} ^
   --target-db-cluster-identifier {{arn_of_secondary_to_promote}}
```

------

## 解除封鎖全域叢集切換或容錯移轉
<a name="unblocking-gc-so-fo"></a>

當全域叢集中的所有區域叢集都位於相同的引擎版本時，會封鎖全域叢集切換和容錯移轉。如果版本不相符，您可能會在呼叫切換或容錯移轉時看到此錯誤：指定的目標資料庫叢集正在執行與來源資料庫叢集具有不同修補程式層級的引擎版本。定期套用最新的引擎版本，讓您的全域叢集保持良好狀態。

若要解決此錯誤，請先套用任何待定的維護動作項目，將所有次要區域更新為相同的引擎版本。若要檢視待定的維護動作項目，並套用任何必要的變更以修正問題，請執行下列其中一個索引標籤中的指示：

------
#### [ Using the AWS 管理主控台 ]

若要解除封鎖全域叢集切換或容錯移轉，您必須判斷叢集是否有任何待定的維護動作，並加以套用。請依照下列步驟檢視和套用維護動作：

1. 登入 AWS 管理主控台，並在 https：//[https://console.aws.amazon.com/docdb](https://console.aws.amazon.com/docdb) 開啟 Amazon DocumentDB 主控台。

1. 在導覽窗格中，選擇**叢集**。

1. 在**叢集**表格中，在叢集**識別符欄中尋找您的全域叢集**。在全域叢集下，記下指定全域叢集的每個次要叢集和主要叢集，並為每個叢集執行以下步驟。

1. 對於每個次要叢集：

   1. 如果您的叢集有可用的更新，則會在**維護**欄中指出為**可用**、**必要**或**下一個視窗**。

   1. 若要採取動作，請選擇叢集以顯示其詳細資訊，然後選擇**維護和備份**。**待定維護**項目隨即出現。

   1. 在**描述**下，如果它指出「新的維護更新可用」，請選取它，然後選擇**立即套用**。

1. 對於您的主要叢集：

   1. 如果您的叢集有可用的更新，則會在**維護**欄中指出為**可用**、**必要**或**下一個視窗**。

   1. 若要採取動作，請選擇叢集以顯示其詳細資訊，然後選擇**維護和備份**。**待定維護**項目隨即出現。

   1. 在**描述**下，如果它指出「新的維護更新可用」，請選取它，然後選擇**立即套用**。

------
#### [ Using the AWS CLI ]

若要解除封鎖全域叢集切換或容錯移轉，您必須判斷叢集是否有任何待定的維護動作，並加以套用。請依照下列步驟，先在次要叢集上檢視和套用維護動作，然後在全域叢集的主要叢集上套用維護動作：

1. 先在每個次要區域的區域叢集上執行下列項目，然後針對主要區域區域叢集執行以下內容。

1. 使用 `--resource-identifier`選項執行 [`describe-pending-maintenance-actions`](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/docdb/describe-pending-maintenance-actions.html) CLI 命令，以判斷您的 Amazon DocumentDB 區域叢集是否有任何可用的維護動作。

   在下列範例中，將每個{{使用者輸入預留位置}}取代為您叢集的資訊。

   針對 Linux、macOS 或 Unix：

   ```
   aws docdb describe-pending-maintenance-action \
      --resource-identifier {{arn:aws:rds:us-east-1:001234567890:cluster:docdb-2025-03-27-19-21-15}}
   ```

   針對 Windows：

   ```
   aws docdb describe-pending-maintenance-action ^
      --resource-identifier {{arn:aws:rds:us-east-1:001234567890:cluster:docdb-2025-03-27-19-21-15}}
   ```

   結果如下所示：

   ```
   {
       "PendingMaintenanceActions": [
           {
               "ResourceIdentifier": "arn:aws:rds:us-east-1:001234567890:cluster:docdb-2025-03-27-19-21-15",
               "PendingMaintenanceActionDetails": [
                   {
                       "Action": "system-update",
                       "CurrentApplyDate": "2025-04-11T03:01:00Z",
                       "Description": "db-version-upgrade",
                       "ForcedApplyDate": "2025-06-18T03:01:00Z",
                       "AutoAppliedAfterDate": "2025-05-11T03:01:00Z"
                       "OptInStatus": "pending"
                   }
               ]
           }
       ]
   }
   ```

1. 如果需要維護動作，請使用下列選項執行 [`apply-pending-maintenance-action`](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/docdb/apply-pending-maintenance-action.html) CLI 命令：
   + `--resource-identifier`
   + `--apply-action`
   + `--opt-in-type`
   + `--region`

   在下列範例中，將每個{{使用者輸入預留位置}}取代為您叢集的資訊。

   針對 Linux、macOS 或 Unix：

   ```
   aws docdb apply-pending-maintenance-action \
      --resource-identifier {{arn:aws:rds:us-east-1:001234567890:cluster:docdb-2025-03-27-19-21-15}} \
      --apply-action {{system-update}} \
      --opt-in-type {{immediate}} \
      --region {{us-east-1}}
   ```

   針對 Windows：

   ```
   aws docdb apply-pending-maintenance-action ^
      --resource-identifier {{arn:aws:rds:us-east-1:001234567890:cluster:docdb-2025-03-27-19-21-15}} ^
      --apply-action {{system-update}} ^
      --opt-in-type immediate ^
      --region {{us-east-1}}
   ```

1. 維護動作完成後，請再次執行 [`describe-pending-maintenance-actions`](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/docdb/describe-pending-maintenance-actions.html)命令，以確保叢集沒有其他待定動作。

   您想要的結果是：

   ```
   {
       "PendingMaintenanceActions": []
   }
   ```

------
#### [ Using the Amazon DocumentDB API ]

若要解除封鎖全域叢集切換或容錯移轉，您必須判斷叢集是否有任何待定的維護動作，並加以套用。使用下列 APIs來檢視和套用維護動作：

1. 先在每個次要區域的區域叢集上執行下列項目，然後針對主要區域區域叢集執行以下內容。

1. 呼叫 [PendingMaintenanceAction](https://docs.aws.amazon.com/documentdb/latest/APIReference/API_PendingMaintenanceAction.html) API，以判斷您的 Amazon DocumentDB 全域叢集是否有任何可用的維護動作。

1. 呼叫 [ApplyPendingMaintenanceAction](https://docs.aws.amazon.com/documentdb/latest/APIReference/API_ApplyPendingMaintenanceAction.html) API 來套用任何變更。

------

當目標次要叢集具有尚未套用的排程變更時，切換和容錯移轉也會遭到封鎖，例如您為下一個維護時段請求的修改或維護動作。在此情況下，您可能會在呼叫切換或容錯移轉時看到此錯誤：您無法容錯移轉至具有 ARN {{arn：aws：rds：us-east-1：001234567890：cluster：docdb-2025-03-27-19-21-15}} 的叢集，因為它正在修改或正在等待修改。當叢集可用時，請再試一次。若要解除封鎖操作，請移除目標叢集上的排程變更。步驟取決於變更的類型。移除排定的變更且叢集狀態傳回 後`available`，請重試切換或容錯移轉。

您無法從 取消排定的維護動作 （取消選擇加入） AWS 管理主控台，因此請使用 AWS CLI。

------
#### [ Using the AWS CLI ]

1. 使用 `--resource-identifier`選項執行 [describe-pending-maintenance-actions](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/docdb/describe-pending-maintenance-actions.html) CLI 命令，並尋找其 `OptInStatus`為 的維護動作`next-maintenance`。

   在下列範例中，將每個{{使用者輸入預留位置}}取代為您叢集的資訊。

   針對 Linux、macOS 或 Unix：

   ```
   aws docdb describe-pending-maintenance-actions \
      --resource-identifier {{arn:aws:rds:us-east-1:001234567890:cluster:docdb-2025-03-27-19-21-15}} \
      --region {{us-east-1}}
   ```

   針對 Windows：

   ```
   aws docdb describe-pending-maintenance-actions ^
      --resource-identifier {{arn:aws:rds:us-east-1:001234567890:cluster:docdb-2025-03-27-19-21-15}} ^
      --region {{us-east-1}}
   ```

   結果看起來與以下內容類似。請記下您在下一個步驟中使用的`Action`值 (`os-upgrade`在此範例中為 )。

   ```
   {
       "PendingMaintenanceActions": [
           {
               "ResourceIdentifier": "arn:aws:rds:us-east-1:001234567890:cluster:docdb-2025-03-27-19-21-15",
               "PendingMaintenanceActionDetails": [
                   {
                       "Action": "os-upgrade",
                       "OptInStatus": "next-maintenance",
                       "CurrentApplyDate": "2026-09-02T03:02:00Z",
                       "Description": "New Operating System update is available"
                   }
               ]
           }
       ]
   }
   ```

1. 使用 執行 [apply-pending-maintenance-action](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/docdb/apply-pending-maintenance-action.html) CLI 命令`--opt-in-type undo-opt-in`，將`Action`值從上一個步驟傳遞至 ，以取消排程動作`--apply-action`。

   針對 Linux、macOS 或 Unix：

   ```
   aws docdb apply-pending-maintenance-action \
      --resource-identifier {{arn:aws:rds:us-east-1:001234567890:cluster:docdb-2025-03-27-19-21-15}} \
      --apply-action {{os-upgrade}} \
      --opt-in-type undo-opt-in \
      --region {{us-east-1}}
   ```

   針對 Windows：

   ```
   aws docdb apply-pending-maintenance-action ^
      --resource-identifier {{arn:aws:rds:us-east-1:001234567890:cluster:docdb-2025-03-27-19-21-15}} ^
      --apply-action {{os-upgrade}} ^
      --opt-in-type undo-opt-in ^
      --region {{us-east-1}}
   ```

   在回應中，維護動作不再有 `OptInStatus`，確認排定的選擇加入已取消。

   ```
   {
       "ResourcePendingMaintenanceActions": {
           "ResourceIdentifier": "arn:aws:rds:us-east-1:001234567890:cluster:docdb-2025-03-27-19-21-15",
           "PendingMaintenanceActionDetails": [
               {
                   "Action": "os-upgrade",
                   "Description": "New Operating System update is available"
               }
           ]
       }
   }
   ```

------

------
#### [ Using the AWS CLI ]

1. 執行 [describe-db-clusters](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/rds/describe-db-clusters.html) CLI 命令並檢查`PendingModifiedValues`輸出欄位，以檢查排定的修改。
**注意**  
使用此命令的 Amazon RDS CLI (`aws rds`)，而不是 Amazon DocumentDB CLI (`aws docdb`)，因為 Amazon DocumentDB `describe-db-clusters` API 不會傳回叢集層級`PendingModifiedValues`欄位。

   在下列範例中，將每個{{使用者輸入預留位置}}取代為您叢集的資訊。

   針對 Linux、macOS 或 Unix：

   ```
   aws rds describe-db-clusters \
      --db-cluster-identifier {{docdb-2025-03-27-19-21-15}} \
      --query 'DBClusters[0].PendingModifiedValues' \
      --region {{us-east-1}}
   ```

   針對 Windows：

   ```
   aws rds describe-db-clusters ^
      --db-cluster-identifier {{docdb-2025-03-27-19-21-15}} ^
      --query "DBClusters[0].PendingModifiedValues" ^
      --region {{us-east-1}}
   ```

   結果會顯示排程的變更。在此範例中，叢集名稱 (`DBClusterIdentifier`) 的變更正在等待中，從 `docdb-2025-03-27-19-21-15`變更為 `docdb-new-name`。

   ```
   {
       "DBClusterIdentifier": "docdb-new-name"
   }
   ```

1. 使用 執行 [modify-db-cluster](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/docdb/modify-db-cluster.html) CLI 命令來還原變更`--apply-immediately`，將修改後的值設回其原始值。此範例會將 設`--new-db-cluster-identifier`回叢集的目前名稱，以還原待定名稱變更。

   針對 Linux、macOS 或 Unix：

   ```
   aws docdb modify-db-cluster \
      --db-cluster-identifier {{docdb-2025-03-27-19-21-15}} \
      --new-db-cluster-identifier {{docdb-2025-03-27-19-21-15}} \
      --apply-immediately \
      --region {{us-east-1}}
   ```

   針對 Windows：

   ```
   aws docdb modify-db-cluster ^
      --db-cluster-identifier {{docdb-2025-03-27-19-21-15}} ^
      --new-db-cluster-identifier {{docdb-2025-03-27-19-21-15}} ^
      --apply-immediately ^
      --region {{us-east-1}}
   ```

------

## 管理 Amazon DocumentDB 全域叢集RPOs
<a name="global-clusters-manage-recovery"></a>

 透過 Amazon DocumentDB 全域叢集，您可以使用 `global_db_rpo` 參數來管理復原點目標 (RPO)。RPO 表示發生中斷時可能遺失的最大資料量。

 當您為 Amazon DocumentDB 全域叢集設定 RPO 時，Amazon DocumentDB 會監控所有次要叢集的 *RPO 延遲時間*。此監控可確保至少一個次要叢集保持在目標 RPO 時段內。

 RPO 設定控制 Amazon DocumentDB 如何在主要叢集上管理寫入交易，以在發生容錯移轉時限制潛在的資料遺失。Amazon DocumentDB 會評估 RPO 和 RPO 延遲時間，以在主要 上遞交 （或封鎖） 交易，如下所示：
+  如果至少有一個次要資料庫叢集的 RPO 延遲時間小於 RPO，則會遞交交易。
+  如果所有次要資料庫叢集的 RPO 延遲時間大於 RPO，則會封鎖交易。

 換句話說，如果所有次要叢集都落後於目標 RPO，Amazon DocumentDB 會暫停主要叢集上的交易。一旦至少一個次要資料庫叢集的延遲時間低於 RPO，Amazon DocumentDB 會繼續並遞交暫停的交易。因此，在滿足 RPO 之前，沒有任何可以遞交的交易。

 此 `global_db_rpo` 參數是動態的。如果您決定不要讓所有寫入交易都停止，直到延遲降低到足夠的程度，那麼您可以快速重設它。在此情況下，Amazon DocumentDB 會在短暫延遲後套用變更。

**重要**  
 在只有兩個 AWS 區域的全域資料庫中，我們建議將`global_db_rpo`參數的預設值保留在次要區域的參數群組中。否則，由於主要 AWS 區域遺失而執行容錯移轉可能會導致 Amazon DocumentDB 暫停交易。相反地，請等到 Amazon DocumentDB 完成重建舊故障 AWS 區域中的叢集，再變更此參數以強制執行最大 RPO。

**Topics**
+ [設定復原點目標](#global-clusters-set-rpo)
+ [檢視復原點目標](#global-clusters-view-rpo)
+ [停用復原點目標](#global-clusters-disable-rpo)

### 設定復原點目標
<a name="global-clusters-set-rpo"></a>

 `global_db_rpo` 參數控制 Amazon DocumentDB 資料庫的 RPO 設定。有效值的範圍從 20 秒到 2，147，483，647 秒 (68 年）。選擇逼真的值來滿足您的業務需求。例如，您可能想要允許最多 10 分鐘的 RPO，在此情況下，您可以將值設定為 600。

 您可以使用 AWS 管理主控台、 或 Amazon DocumentDB API AWS CLI，為您的 Amazon DocumentDB 全域叢集設定此值。

------
#### [ Using the AWS 管理主控台 ]

**設定 RPO**

1. 登入 AWS 管理主控台，並在 https：//[https://console.aws.amazon.com/docdb](https://console.aws.amazon.com/docdb) 開啟 Amazon DocumentDB 主控台。

1.  選擇 Amazon DocumentDB 全域叢集的主要叢集，然後開啟**組態**索引標籤以尋找其資料庫叢集參數群組。

    無法直接編輯參數群組。而是執行下列動作：
   +  使用適當的預設參數群組作為起點，建立自訂資料庫叢集參數群組。
   +  在自訂資料庫叢集參數群組上，設定 **global\_db\_rpo** 參數的值以符合您的使用案例。有效值範圍為 20 秒至最大整數值 2,147,483,647 (68 年)。
   +  將修改過的資料庫叢集參數群組套用至您的 Amazon DocumentDB 資料庫叢集。

 如需修改資料庫叢集參數群組的詳細資訊，請參閱 [修改 Amazon DocumentDB 叢集參數群組](cluster_parameter_groups-modify.md)。

------
#### [ Using the AWS CLI ]

 若要設定 `global_db_rpo` 參數，請使用 [modify-db-cluster-parameter-group](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/docdb/modify-db-cluster-parameter-group.html) CLI 命令。在 命令中，指定主要叢集參數群組的名稱，以及 RPO 參數的值。

 下列範例會針對名稱為 `my_custom_global_parameter_group` 的主要資料庫叢集參數群組，將 RPO 設定為 600 秒 (10 分鐘)。

針對 Linux、macOS 或 Unix：

```
aws docdb modify-db-cluster-parameter-group \
    --db-cluster-parameter-group-name {{my_custom_global_parameter_group}} \
    --parameters "ParameterName=global_db_rpo,ParameterValue={{600}},ApplyMethod=immediate"
```

針對 Windows：

```
aws docdb modify-db-cluster-parameter-group ^
    --db-cluster-parameter-group-name {{my_custom_global_parameter_group}} ^
    --parameters "ParameterName=global_db_rpo,ParameterValue={{600}},ApplyMethod=immediate"
```

------
#### [ Using the Amazon DocumentDB API ]

 若要修改 `global_db_rpo` 參數，請使用 [ModifyDBClusterParameterGroup](https://docs.aws.amazon.com/documentdb/latest/developerguide/API_ModifyDBClusterParameterGroup.html) API 操作。

------

### 檢視復原點目標
<a name="global-clusters-view-rpo"></a>

 全域叢集的復原點目標 (RPO) 會存放在每個資料庫叢集的 `global_db_rpo` 參數中。

 您可以使用 CLI 來檢視 Amazon DocumentDB 資料庫叢集的 `global_db_rpo` 參數。使用 `--query`選項僅傳回`global_db_rpo`參數群組中的 參數。

針對 Linux、macOS 或 Unix：

```
aws docdb describe-db-cluster-parameters \
    --db-cluster-parameter-group-name {{my_custom_global_parameter_group}} \
    --query "Parameters[?ParameterName=='global_db_rpo']"
```

針對 Windows：

```
aws docdb describe-db-cluster-parameters ^
    --db-cluster-parameter-group-name {{my_custom_global_parameter_group}} ^
    --query "Parameters[?ParameterName=='global_db_rpo']"
```

 此命令會傳回如下輸出：

```
[
    {
        "ParameterName": "global_db_rpo",
        "Description": "(s) Recovery point objective threshold, in seconds, that blocks user commits when it is violated.",
        "Source": "engine-default",
        "ApplyType": "dynamic",
        "DataType": "integer",
        "AllowedValues": "20-2147483647",
        "IsModifiable": true,
        "ApplyMethod": "immediate"
    }
]
```

 如需檢視叢集參數群組參數的詳細資訊，請參閱 [管理 Amazon DocumentDB 叢集參數群組](cluster_parameter_groups.md)。

### 停用復原點目標
<a name="global-clusters-disable-rpo"></a>

 若要停用 RPO，請重設 `global_db_rpo` 參數。您可以使用 AWS 管理主控台、 AWS CLI或 Amazon DocumentDB API 重設參數。

------
#### [ Using the AWS 管理主控台 ]

**停用 RPO**

1. 登入 AWS 管理主控台，並在 [https://console.aws.amazon.com/docdb](https://console.aws.amazon.com/docdb)：// 開啟 Amazon DocumentDB 主控台。

1. 在導覽窗格中，選擇 **Parameter groups** (參數群組)。

1. 在清單中，選擇主要資料庫叢集參數群組。

1. 選擇 **global\_db\_rpo** 參數旁的選項按鈕。

1. 選擇**重設為預設值**並確認。

 如需如何使用 主控台重設參數的詳細資訊，請參閱 [修改 Amazon DocumentDB 叢集參數群組](cluster_parameter_groups-modify.md)。

------
#### [ Using the AWS CLI ]

 若要重設 `global_db_rpo` 參數，請使用 [reset-db-cluster-parameter-group](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/docdb/reset-db-cluster-parameter-group.html) 命令。

針對 Linux、macOS 或 Unix：

```
aws docdb reset-db-cluster-parameter-group \
    --db-cluster-parameter-group-name {{my_custom_global_parameter_group}} \
    --parameters "ParameterName=global_db_rpo,ApplyMethod=immediate"
```

針對 Windows：

```
aws docdb reset-db-cluster-parameter-group ^
    --db-cluster-parameter-group-name {{my_custom_global_parameter_group}} ^
    --parameters "ParameterName=global_db_rpo,ApplyMethod=immediate"
```

------
#### [ Using the Amazon DocumentDB API ]

 若要重設 `global_db_rpo` 參數，請使用 [ResetDBClusterParameterGroup](https://docs.aws.amazon.com/documentdb/latest/developerguide/API_ResetDBClusterParameterGroup.html) API 操作。

------