災難復原和 Amazon DocumentDB 全球叢集 - Amazon DocumentDB

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

災難復原和 Amazon DocumentDB 全球叢集

透過使用全域叢集,您可以快速從災難中復原,例如區域故障。從災難復原通常是使用RTO和的值來衡量RPO。

  • 復原時間目標 (RTO) — 系統在災難發生後返回工作狀態所需的時間。換句話說,RTO測量停機時間。對於全域叢集,以分鐘為單RTO位。

  • 復原點目標 (RPO) — 可能遺失的資料量 (以時間為單位)。對於全域叢集,通RPO常以秒為單位。

  • 若要從意外中斷中復原,您可以執行跨區域容錯移轉至全域叢集中的其中一個次要節點。當您的全域叢集有多個次要區域時,請確定已卸離要升級為主要區域的所有次要區域。然後,您將其中一個次要區域提升為新的主要區域 AWS 區域。最後,您可以在每個其他次要區域中建立新叢集,並將這些叢集附加到全域叢集。

針對 Amazon 文件資料庫全域叢集執行受管容錯移轉

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

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

注意

只有在主叢集和次要叢集具有相同的主要、次要和修補程式層級引擎版本時,您才能在 Amazon DocumentDB 全域叢集上執行受管的跨區域叢集容錯移轉。但是,修補程式等級可能會有所不同,取決於次要引擎版本。如果您的引擎版本不相容,您可以依照 為 Amazon DocumentDB 全域叢集執行手動容錯移轉 中的步驟手動執行容錯移轉。

使用此功能之前,建議您執行下列操作以將資料遺失降到最低:

  • 將應用程式離線,以防止將寫入傳送到 Amazon DocumentDB 全域叢集的主要叢集。

  • 檢查所有 Amazon DocumentDB 次要叢集的延遲時間。選擇複寫延遲最低的次要區域,即可將目前失敗的主要區域的資料遺失降到最低。檢視 Amazon 中的GlobalClusterReplicationLag指標,以檢查全域叢集中所有 Amazon DocumentDB 次要叢集的延遲時間。 CloudWatch這些指標會顯示次要叢集的複寫到主要叢集的距離 (以毫秒為單位)。

    如需 Amazon 文件資料庫 CloudWatch 指標的詳細資訊,請參閱。Amazon DocumentDB 指標

在受管理容錯移轉期間,選擇的次要叢集會提升為新角色,做為主要叢集。但是,它不會繼承主要叢集的各種配置選項。組態不相符可能會導致效能問題、工作負載不相容,以及其他異常行為。為了避免此類問題,我們建議您針對下列各項解決 Amazon DocumentDB 全域叢集之間的差異:

  • 必要時為新的主要叢集設定 Amazon DocumentDB 叢集參數群組 — 您可以針對 Amazon DocumentDB 全域叢集中的每個叢集個別設定 Amazon DocumentDB 叢集參數群組。因此,當您升級次要叢集以接管主要角色時,次要的參數群組的設定可能與主要叢集的設定不同。如果是這樣,請修改已升級的次要叢集的參數群組,以符合主要叢集的設定。如要瞭解如何作業,請參閱修改 Amazon DocumentDB 叢集參數群組

  • 設定監控工具和選項,例如 Amazon CloudWatch 事件和警示 — 視需要為全域叢集設定已升級的叢集,使用相同的記錄功能、警示等。與參數群組一樣,在容錯移轉程序期間,這些功能的組態不會從主要叢集繼承。某些 CloudWatch 度量 (例如複寫延遲) 僅適用於次要區域。因此,容錯移轉會改變檢視這些指標並對其設定警示的方式,而且可能需要變更任何預先定義的儀表板。如需 Amazon 叢集和監控的詳細資訊,請參閱。監控 Amazon DocumentDB

通常,選擇的次要叢集會在幾分鐘內擔任主要角色。一旦新的主要區域的寫入器節點可用,您就可以將應用程式連線到該節點並恢復工作負載。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 叢集時間戳記」的快照放置在的快照區段中。 AWS Management Console您也可以在DescribeDBClusterSnapshotsAPI作業傳回的資訊中看到此快照列出。

注意

舊儲存磁碟區的快照是系統快照,會受到舊的主要叢集上設定的備份保留期限的限制。若要在保留期間之外保留此快照,您可以複製該快照並將它儲存為手動快照。若要進一步了解如何複製快照,包括定價在內,請參閱 複製叢集快照

還原原始拓撲之後,您可以在最適合您的業務和工作負載時執行切換作業,將全域叢集復原至原始主要區域。若要啟用,請依照「為 Amazon DocumentDB 全域叢集執行切換」中的步驟進行。

您可以使用 AWS Management Console、或 Amazon DocumentDB 容錯移轉 Amazon DocumentDB 全域叢集。 AWS CLI API

Using the AWS Management Console

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

  1. 登入 AWS Management Console,然後在 /docdb 開啟亞馬遜文件資料庫主控台。https://console.aws.amazon.com

  2. 在導覽窗格中,選擇叢集

  3. 尋找並選擇您要容錯移轉的 Amazon DocumentDB 全域叢集。

    影像:已選取全域叢集的叢集表格。
  4. 從「動作」功能表選擇「切換」或「容錯移轉

  5. 在顯示的對話方塊中,選擇 [容錯移轉],然後從 [新增主要叢集] 欄位下拉式清單中選擇次要叢集

    影像:全域叢集轉換或容錯移轉對話方塊。
  6. 在最後一個字段中鍵入「確認」。然後選擇 Confirm (確認)。

    主要叢集的狀態會變更為「容錯移轉」。這種情況應該需要大約一分鐘。在此期間,新主要叢集的狀態會顯示「正在修改中...」 「。升級新的主要項目後,它會顯示「可用」,並且能夠提供讀取和寫入交易。包括舊主要區域在內的次要區域將顯示「重新同步... 「雖然它重新同步到新的主要。與新的主要產品類似,只有在狀態變更為「可用」後,它才能提供交易。

  7. 完成後,原始主要叢集會變成次要叢集。選取的次要叢集會成為主要叢集。

    影像:顯示新主要叢集的叢集表格。
Using the AWS CLI

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

使用此命failover-global-clusterCLI令可容錯移轉您的 Amazon DocumentDB 全域叢集。使用命令,傳遞下列參數的值:

  • --region— 指定 Amazon DocumentDB 全域叢集的主要叢集執行 AWS 區域 位置。

  • --global-cluster-identifier— 指定您的 Amazon DocumentDB 全域叢集的名稱。

  • --target-db-cluster-identifier— 指定您想要將其提升為 Amazon DocumentDB 全域叢集的主要叢集之 Amazon DocumentDB 次要叢集的亞馬遜資源名稱 (ARN)。

  • --allow-data-loss— 明確使其成為容錯移轉作業,而不是切換作業。如果非同步複寫元件尚未完成將所有複寫的資料傳送至次要區域,容錯移轉操作就可能導致部分資料遺失。

若為 Linux、macOS 或 Unix:

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

針對 Windows:

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

為 Amazon DocumentDB 全域叢集執行手動容錯移轉

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

如果不同 AWS 區域 叢集中的叢集比較適合做為主要叢集,您可以手動啟動全域叢集容錯移轉機制。例如,您可以增加其中一個次要叢集的容量,然後將它提升為主要叢集。或者, AWS 區域 可能會改變之間的活動平衡,以便將主要叢集切換到其他叢集 AWS 區域 可能會降低寫入作業的延遲。

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

若要升級次要叢集:

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

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

  3. 從全域叢集中卸離選擇的次要叢集。

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

    如需分離的詳細步驟,請參閱從 Amazon DocumentDB 全域叢集中移除叢集

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

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

  6. 視需要新增更多 AWS 區域 內容,以重新建立支援應用程式所需的拓撲。請確定在進行這些變更之前、期間和之後,將應用程式寫入傳送至正確的叢集,以避免全域叢集中叢集中的資料不一致 (分腦問題)。

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

  8. 從全域叢集中移除其中一個次要叢集。這將使其能夠為讀/寫流量提供服務。

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

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

您可以使用管理 Amazon DocumentDB 全域叢集 AWS SDKs,讓您建立解決方案以自動化災難復原和業務持續性規劃使用案例的全域叢集容錯移轉程序。我們在 Apache 2.0 授權下為我們的客戶提供了一個這樣的解決方案,並且可以從我們的工具儲存庫在這裡存取。此解決方案利用 Amazon Route 53 進行端點管理,並提供可根據適當事件觸發的 AWS Lambda 功能。

為 Amazon DocumentDB 全域叢集執行切換

透過使用轉換,您可以定期變更主要叢集的區域。此方法適用於受控情況,例如操作維護及其他計劃內操作程序。

使用轉換有三種常見的使用案例:

  • 對於特定行業強制實施的「區域輪換」需求。例如,金融服務法規可能希望第 0 層系統切換到不同的區域數個月時間,以確保定期演練災難復原程序。

  • 適用於多地區 "follow-the-sun" 應用程式。例如,某家公司可能希望根據不同時區的營業時間,在不同區域提供較低的延遲寫入。

  • 做為容錯移轉後容錯移轉回原始主要區域的 zero-data-loss 方法。

注意

轉換器的設計是為了在運作良好的 Amazon DocumentDB 全域叢集上使用。若要從意外中斷中復原,請遵循針對 Amazon DocumentDB 全域叢集執行手動容錯移轉中的適當程序。

若要執行轉換,您的目標次要資料庫叢集必須與主要資料庫叢集執行完全相同的引擎版本,包括修補程式等級在內 (視引擎版本而定)。如需詳細資訊,請參閱受管理的跨區域轉換和容錯移轉的修補程式層級相容性。開始轉換之前,請先檢查全域叢集中的引擎版本,以確定它們可支援受管跨區域轉換,並視需要進行升級。如果引擎版本不相符,Amazon DocumentDB 會自動封鎖對轉換叢集的呼叫。

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

若要最佳化應用程式可用性,建議您在使用此功能之前先執行下列動作:

  • 在非尖峰時段執行此作業,或在寫入主要叢集的其他時間執行此作業。

  • 將應用程式離線,以防止將寫入傳送到 Amazon DocumentDB 全域叢集的主要叢集。

  • 檢視 Amazon 中的GlobalClusterReplicationLag指標,以檢查全域叢集中所有 Amazon DocumentDB 次要叢集的延遲時間。 CloudWatch此測量結果顯示次要叢集複寫到主要叢集的距離 (以毫秒為單位)。此值與 Amazon DocumentDB 完成切換所需的時間成正比。因此,延遲值越大,轉換所需的時間越長。

    如需 Amazon 文件資料庫 CloudWatch 指標的詳細資訊,請參閱。Amazon DocumentDB 指標

在轉換期間,選擇的次要資料庫叢集會提升為作為主要資料庫叢集的新角色。但是,它不會繼承主要資料庫叢集的各種組態選項。組態不相符可能會導致效能問題、工作負載不相容,以及其他異常行為。為了避免此類問題,我們建議您針對下列各項解決 Amazon DocumentDB 全域叢集之間的差異:

  • 必要時為新的主要叢集設定 Amazon DocumentDB 資料庫叢集參數群組 — 您可以針對 Amazon DocumentDB 全域叢集中的每個叢集獨立設定 Amazon DocumentDB 叢集參數群組。這表示當您提升次要資料庫叢集以接管主要角色時,其參數群組可能會設定與主要資料庫叢集不同的參數群組。如果是這樣,請修改提升的次要資料庫叢集的參數群組,以符合主要叢集的設定。若要瞭解如何操作,請參閱管理 Amazon DocumentDB 叢集參數群組

  • 設定監控工具和選項,例如 Amazon E CloudWatch vents 和警示 — 視需要為全域叢集設定已升級的叢集,使用相同的記錄功能、警示等。與參數群組一樣,在轉換程序期間,這些功能的組態不會從主要叢集繼承。某些 CloudWatch 度量 (例如複寫延遲) 僅適用於主要區域。因此,轉換會改變檢視這些指標並對其設定警示的方式,而且可能需要變更任何預先定義的儀表板。如需詳細資訊,請參閱監控 Amazon DocumentDB

注意

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

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

您可以使用下 AWS Management Console 列指令切換 Amazon DocumentDB 全域叢集: AWS CLI

Using the AWS Management Console

若要在您的 Amazon DocumentDB 全域叢集上執行切換

  1. 登入 AWS Management Console,然後在 /docdb 開啟亞馬遜文件資料庫主控台。https://console.aws.amazon.com

  2. 在導覽窗格中,選擇叢集

  3. 尋找並選取您要切換的 Amazon DocumentDB 全域叢集。

    影像:已選取全域叢集的叢集表格。
  4. 從「動作」功能表選擇「切換」或「容錯移轉

  5. 在顯示的對話方塊中,選擇切換,然後從新增主要叢集欄位下拉式清單中選擇次要叢集

    影像:已選取次要叢集的叢集切換對話方塊。
  6. 選擇確認

    主要叢集的狀態會變更為「切換」。這種情況大約需要三分鐘。在此期間,所有區域叢集的狀態都會顯示「正在修改... 「。一旦區域同步化並提升新的主要項目,它會在所有狀態欄位中顯示「可用」,並且能夠提供交易。

  7. 完成後,原始主要叢集會變成次要叢集。選取的次要叢集會成為主要叢集。

    影像:顯示新主要叢集的叢集表格。
Using the AWS CLI

若要在您的 Amazon DocumentDB 全域叢集上執行切換

使用此命switchover-global-clusterCLI令切換您的 Amazon DocumentDB 全域叢集。使用命令,傳遞下列參數的值:

  • --region— 指定 Amazon DocumentDB 全域叢集的主要叢集執行 AWS 區域 位置。

  • --global-cluster-identifier— 指定您的 Amazon DocumentDB 全域叢集的名稱。

  • --target-db-cluster-identifier— 指定您想要將其提升為 Amazon DocumentDB 全域叢集的主要叢集之 Amazon DocumentDB 次要叢集的亞馬遜資源名稱 (ARN)。

若為 Linux、macOS 或 Unix:

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

針對 Windows:

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