關於 Cloud SQL 中的災難復原 (DR)

本頁面介紹 Cloud SQL 的災難復原功能。

總覽

在 Google Cloud中,資料庫災難復原 (DR) 是指在區域故障或無法使用時,提供持續處理的能力。Cloud SQL 是區域性服務 (當 Cloud SQL 設定為高可用性 (HA) 時)。因此,如果託管 Cloud SQL 資料庫的 Google Cloud 區域無法使用,Cloud SQL 資料庫也會無法使用。

如要繼續處理,您必須盡快在次要區域提供資料庫。災難復原計畫會要求您在 Cloud SQL 中設定跨區域唯讀副本。您也可以根據匯出/匯入或備份/還原作業進行容錯移轉,但這種做法需要較長時間,尤其是大型資料庫。

以下是需要跨區域容錯移轉設定的業務情境範例:

  • 業務應用程式的服務水準協議高於區域 Cloud SQL 服務水準協議 (可用性為 99.99%,視 Cloud SQL 版本而定)。容錯移轉至其他區域,即可降低服務中斷的影響。
  • 企業應用程式的所有層級都已採用多區域架構,即使發生區域性中斷,也能繼續處理。跨區域容錯移轉設定有助於確保資料庫持續可用。
  • 所需的復原時間目標 (RTO) 和復原點目標 (RPO) 是以分鐘為單位,而非小時。容錯移轉至其他區域的速度比重新建立資料庫快。

一般來說,DR 程序有兩種變化版本:

  • 資料庫容錯移轉至次要區域。資料庫準備就緒並由應用程式使用後,就會成為新的主要資料庫,並維持主要資料庫的身分。
  • 資料庫容錯移轉至次要區域,但在主要區域從故障中復原後,會回復至主要區域。

這份 Google Cloud SQL 資料庫災難復原總覽說明第二種情況,也就是復原故障的資料庫,並切換回主要區域。如果資料庫因網路延遲而必須在主要區域中執行,或某些資源僅在主要區域中可用,則這種 DR 程序變體特別適用。在這個變體中,資料庫只會在主要區域中斷期間,於次要區域中運作。

災難復原架構

下圖顯示支援高可用性 Cloud SQL 執行個體資料庫災難復原的最小架構:

主要和待命執行個體位於一個區域,唯讀副本則位於第二個區域。

架構運作方式如下:

  • 兩個 Cloud SQL 執行個體 (主要執行個體和待命執行個體) 位於單一區域 (主要區域) 內的兩個不同可用區。執行個體會使用區域性永久磁碟進行同步。
  • 一個 Cloud SQL 執行個體 (跨區域唯讀副本) 位於第二個區域 (次要區域)。在 DR 方面,跨區域唯讀副本會設定為使用唯讀副本設定,與主要執行個體同步處理 (使用非同步複製功能)。

主要和待命執行個體共用同一個區域磁碟,因此狀態相同。

由於這項設定使用非同步複製功能,跨區域唯讀副本可能會落後於主要執行個體。因此,發生容錯移轉時,跨區域唯讀副本 RPO 可能不為零。

災難復原 (DR) 程序

主要區域無法使用時,災難復原 (DR) 程序就會啟動。如要在次要區域中繼續處理,請升級跨區域唯讀副本,觸發主要執行個體的容錯移轉。DR 程序會規定必須手動或自動執行的作業步驟,以緩解區域故障,並在次要區域中建立執行中的主要執行個體。

下圖顯示災難復原程序:

當區域 1 無法使用時,原始唯讀副本會升級為主要副本。

災難復原程序包含下列步驟:

  1. 執行主要執行個體的主要區域 (R1) 無法使用。
  2. 營運團隊確認並正式確認災難,並決定是否需要容錯移轉。
  3. 如果需要容錯移轉,您可以將次要區域 (R2) 中的跨區域唯讀副本升級為新的主要執行個體。
  4. 用戶端連線會重新設定,在新的主要執行個體上繼續處理,並存取 R2 中的主要執行個體。

這項初始程序會再次建立可運作的主要資料庫。不過,這項作業不會建立完整的災難復原架構,其中新的主要執行個體本身具有待命執行個體和跨區域唯讀副本。

完整的 DR 程序可確保單一執行個體 (新的主要執行個體) 已啟用高可用性,並具有跨區域唯讀副本。完整的 DR 程序也會提供備用方案,可復原至原始主要區域中的原始部署作業。

容錯移轉至次要區域

完整的 DR 程序會擴充基本 DR 程序,在容錯移轉後新增步驟,建立完整的 DR 架構。下圖顯示容錯移轉後的完整資料庫災難復原架構:

用戶端開始存取新的主要執行個體,並在第三個區域設定唯讀副本。

完整的資料庫災難復原程序包含下列步驟:

  1. 執行主要資料庫的主要區域 (R1) 無法使用。
  2. 營運團隊確認並正式確認災難,並決定是否需要容錯移轉。
  3. 如果需要容錯移轉,您可以將次要區域 (R2) 中的跨區域唯讀副本升級為新的主要執行個體。
  4. 用戶端連線會重新設定,以便存取新的主要執行個體 (R2) 並在其中處理作業。
  5. 系統會在 R2 建立並啟動新的待命執行個體,並新增至主要執行個體。待命執行個體與主要執行個體位於不同可用區。主要執行個體現在具備高可用性,因為已為其建立待命執行個體。
  6. 在第三個區域 (R3) 中,系統會建立新的跨區域唯讀副本,並附加至主要執行個體。此時,完整的災難復原架構已重新建立並運作。

如果在執行步驟 6 之前,原始主要區域 (R1) 恢復可用狀態,則可立即將跨區域唯讀副本置於區域 R1,而非區域 R3。在這種情況下,備用至原始主要區域 (R1) 的複雜度較低,所需步驟也較少。

避免腦裂狀態

主要區域 (R1) 故障並不代表原始主要執行個體及其待命執行個體會自動關閉、移除,或在 R1 再次可用時無法存取。如果 R1 恢復可用狀態,用戶端可能會在原始主要執行個體上讀取及寫入資料 (即使是意外)。在這種情況下,可能會發生腦裂情況,即部分用戶端存取舊主要資料庫中的過時資料,而其他用戶端存取新主要資料庫中的最新資料,導致業務發生問題。

為避免腦裂情況,您必須確保 R1 可用後,用戶端無法再存取原始主要執行個體。理想情況下,您應在用戶端開始使用新的主要執行個體前,先讓原始主要執行個體無法存取,然後在原始主要執行個體無法存取後立即刪除。

容錯移轉後建立初始備份

在容錯移轉期間,將跨區域唯讀副本升級為新的主要執行個體時,新主要執行個體中的交易可能不會與原始主要執行個體的交易完全同步。因此,新執行個體中無法使用這些交易。

建議您在容錯移轉開始時,以及用戶端存取資料庫之前,立即備份新的主要執行個體。這個備份代表容錯移轉時的一致已知狀態。如果用戶端在存取新的主要執行個體時遇到問題,這類備份可能對法規遵循或復原至已知狀態相當重要。

切換回原始主要區域

如前所述,本文件提供復原至原始區域 (R1) 的步驟。備用程序有兩種版本。

  • 如果您在第三區域 (R3) 建立了新的跨區域唯讀副本,則必須在主要區域 (R1) 建立另一個 (第二個) 跨區域唯讀副本。
  • 如果您已在主要區域 (R1) 建立新的跨區域唯讀副本,就不需要在 R1 建立其他跨區域唯讀副本。

R1 中有跨區域唯讀副本後,Cloud SQL 執行個體就能容錯回復至 R1。由於這個備用方案是手動觸發,而非因服務中斷而觸發,因此您可以選擇適當的日期和時間進行這項維護活動。

因此,如要建立完整的 DR,其中包含主要、待命和跨區域唯讀副本,您需要進行兩次容錯移轉。第一次容錯移轉是由中斷觸發 (真正的容錯移轉),第二次容錯移轉則會重新建立起始部署作業 (備用)。

備用至原始主要區域 (R1) 的步驟如下:

  1. 在原始主要區域 (R1) 升級新建立的跨區域副本。
  2. 重新設定應用程式,連線至新的主要執行個體。
  3. 在災難復原區域 (R2) 為新的主要執行個體建立跨區域副本。
  4. (選用) 為避免執行多個獨立的主要執行個體,請清除災難復原區域 (R2) 中的主要執行個體。

可串接的副本

Cloud SQL 可讓您建立副本,用於跨區域災難測試和復原情境。您可以使用 cascadable-replica 旗標,在與主要執行個體不同的區域中建立副本。如果主要執行個體所在的區域發生災難,您可啟動容錯移轉,將流量導向可串連副本。原始主要執行個體重新上線並做為健康副本運作後,您可以使用切換作業切換回原始主要執行個體。

可串聯副本有兩項其他唯讀副本不具備的功能:

  • 您可以將其他唯讀副本 (串聯副本) 附加至可串聯的唯讀副本。Cloud SQL 只會將跨區域複製作業流量傳送至可串聯副本一次,然後可串聯副本會將流量轉送至區域內副本。當您需要在另一個區域中建立多個副本時,這種架構可以節省區域之間的網路資料移轉費用。
  • 在跨區域災難復原情境中,可將可串接唯讀副本做為切換和容錯移轉作業的目標。這些作業會重新設定可串接副本,使其成為叢集中的主要執行個體。

您可以透過下列兩種方式之一測試災難復原:

  • 宣傳副本
  • 進階災難復原機制

進階災難復原 (DR)

如果您使用的是 Cloud SQL Enterprise Plus 版本,則可運用進階災難復原功能。進階災難復原功能可簡化跨區域容錯移轉後的復原和復原作業。如災難復原程序所述,執行 DR 時,您會移除舊主要執行個體故障區域與新主要執行個體運作區域之間的連線。在 DR 模式下,您必須執行一系列手動復原步驟,才能還原與原始部署區域的連線,並重新取得舊的主要執行個體。

有了進階 DR 功能,當區域發生故障時,您可以叫用副本容錯移轉。使用副本容錯移轉時,您會升級跨區域唯讀副本,這與執行一般 DR 類似,但您升級的是指定的災難復原 (DR) 副本。如果是 SQL Server 適用的 Cloud SQL,請使用 cascadable-replica 旗標建立主要執行個體的跨區域副本,藉此建立災難復原副本。DR 副本會立即升級。此外,當您建立新的主要執行個體,或為現有主要執行個體指定災難復原副本時,Cloud SQL 會建立寫入端點。寫入端點是解析為主要執行個體 IP 位址的 DNS 名稱。DR 副本升級後,寫入端點會更新,指向新升級的主要執行個體。這樣一來,任何嘗試使用寫入端點連線的應用程式,都會重新導向至升級後的執行個體。

系統不會移除舊的主要執行個體,而是保留為 Cloud SQL 非同步複製拓撲的一部分。DR 副本 (執行個體 B) 升級為新的主要執行個體後,舊的主要執行個體 (執行個體 A) 最終會成為 DR 副本 (執行個體 B) 的副本。

舊的主要執行個體 (A) 變成副本後,您就可以執行進階 DR 的最後一個步驟。您可以將 Cloud SQL 部署作業恢復為原始狀態,並將舊的主要執行個體 (A) 還原為主要執行個體,而且不會遺失任何資料。如要對舊的主要執行個體 (A) 執行這項零資料遺失還原作業,可以使用切換作業。執行切換作業時,主要執行個體 (B) 會維持唯讀模式,直到指定的災難復原副本 (A) 趕上主要執行個體 (B) 為止,因此不會遺失資料。災難復原副本 (A) 收到所有複製更新後,就會擔任主要執行個體的角色,而先前的主要執行個體 (B) 則會自動重新設定為目前主要執行個體 (A) 的災難復原副本。執行個體會恢復原始角色,拓撲也會回到災難復原和副本容錯移轉前的原始狀態。

在進階 DR 期間,參與副本容錯移轉和切換作業的所有執行個體都會保留 IP 位址。

您也可以使用進階災難復原的切換作業,執行例行災難復原演練,測試 Cloud SQL 拓撲並做好準備,以便在災難發生「之前」進行跨區域容錯移轉。如果實際發生災難,您就可以執行已測試過的跨區域副本容錯移轉。

災難復原 (DR) 副本

災難復原副本是進階災難復原的必要元件,具有下列特性:

  • DR 副本是直接連結的跨區域唯讀副本。
  • 您可以多次變更 DR 副本指定。
  • DR 副本是可串接的副本,可使用 cascadable-replica 旗標建立。如要當做 DR 副本,可串接副本必須位於與主要執行個體不同的區域。
  • 一個區域內只能有一個災難復原副本。
  • 您隨時可以變更災難備援副本指定,但切換或副本容錯移轉作業期間除外。

此外,為縮短使用進階 DR 後的 RTO,建議您採取下列做法:

  • 將 DR 副本的大小設為與主要執行個體相同。
  • 如果主要執行個體已啟用高可用性,建議您也為 DR 副本啟用高可用性。如要這麼做,請先確認主要執行個體已啟用高可用性。接著,切換至 DR 副本。切換作業完成後,請在新的主要執行個體上啟用高可用性。接著,您可以切換回舊的主要執行個體。即使 DR 副本再次成為副本,仍會保留高可用性設定。

副本容錯移轉

總結來說,副本容錯移轉包含下列事件:

  1. 建立並指派 DR 副本。
  2. 主要區域無法使用。
  3. 將副本容錯移轉至 DR 副本。
  4. 寫入端點會更新,並開始指向新的主要執行個體。
  5. 原始主要執行個體恢復上線後,會成為新主要執行個體的唯讀副本。
  6. 您可以使用切換作業,將部署作業還原至原始拓撲。

如要查看副本容錯移轉作業的詳細資料和圖表,請按一下下列分頁標籤。

指派 DR 副本

執行副本容錯移轉前,您已將 DR 副本指派給主要執行個體,並可能已透過切換作業測試程序。

Cloud SQL 執行個體架構的原始設定,其中兩個不同區域皆運作正常。
圖 1:所有區域都健康良好

服務中斷

執行主要資料庫的主要區域無法使用。

Cloud SQL 執行個體架構,其中一個區域發生中斷。
圖 2:區域 R1 發生服務中斷

副本容錯移轉

確定需要災難復原後,請對災難復原副本執行副本容錯移轉。

DR 副本會立即成為主要執行個體,並開始接受傳入的讀取和寫入作業。寫入端點會更新,並開始指向新的主要執行個體。

Cloud SQL 執行個體架構,其中 DNS 寫入端點已更新,指向健康狀態良好區域中的新主要執行個體。
圖 3:執行副本容錯移轉,結束服務中斷情形

原始主要執行個體變成副本

副本升級後,Cloud SQL 會定期檢查原始主要執行個體是否恢復上線。如果原始主要執行個體處於線上狀態,Cloud SQL 會將舊的主要執行個體重新建立為已升級執行個體的副本。舊的主要執行個體會保留其 IP 位址。

如果舊的主要執行個體在 24 小時內未啟動,Cloud SQL 會將其從複製拓撲中移除,確保新的主要執行個體和其他副本上的交易記錄不會無限成長。

Cloud SQL 執行個體架構,其中原始主要執行個體會成為 DR 副本的副本。
圖 4:原始主要執行個體變成災難復原副本

容錯回復至原始版本

執行副本容錯移轉後,您可以執行切換作業,反轉相同的災難復原副本和主要執行個體配對,在原始區域還原主要執行個體。

Cloud SQL 執行個體架構,其中原始主要執行個體會成為 DR 副本的副本。
圖 5:使用切換功能容錯回復至原始部署作業

切換

總結來說,切換作業包含下列事件:

  1. 建立並指派 DR 副本。
  2. 您啟動切換。
  3. 當複製延遲時間降至零時,新的主要執行個體就會開始接受傳入連線。
  4. 舊的主要執行個體會變成唯讀副本。
  5. 如果使用 DNS 寫入端點,系統會更新 DNS 寫入端點,指向新的主要執行個體。

如要查看切換作業的詳細資料和圖表,請點選下列分頁標籤。

指派 DR 副本

開始 *切換* 作業前,您必須為主要執行個體指派災難復原副本。

確認主要執行個體健康狀態良好。只有在主要執行個體和災難復原副本都處於線上狀態時,才能執行切換。

Cloud SQL 執行個體架構的原始設定,其中兩個不同區域皆運作正常。
圖 1:原始部署作業

啟動切換作業

您必須啟動切換作業。啟動切換作業時,複製到 DR 副本的作業會切換為同步模式。DR 副本會趕上主要執行個體,並將狀態變更為同步。當複製延遲時間降至零時,DR 副本會升級為新的主要執行個體。新的主要執行個體會開始接受傳入連線,包括應用程式讀取和寫入。

執行切換作業的 Cloud SQL 執行個體架構。
圖 2:在複製延遲時間為 0 時,啟動切換作業並將 DR 副本升級為主要執行個體

已更新端點

DR 副本升級為新的主要執行個體後,DNS 寫入端點會更新,並開始指向新的主要執行個體。

舊的主要執行個體會重新設定為唯讀副本。

Cloud SQL 執行個體架構,其中會執行切換作業並更新寫入端點。
圖 3:切換完成

寫入端點

寫入端點是全域網域名稱服務 (DNS) 名稱,會自動解析為目前主要執行個體的 IP 位址。如果副本執行容錯移轉或切換作業,這個端點會自動將傳入連線重新導向至新的主要執行個體。您可以在 SQL 連線字串中使用寫入端點,而非 IP 位址。使用寫入端點,即可避免在區域中斷時變更應用程式連線。

如要使用寫入端點,您必須在建立或現有 Cloud SQL Enterprise Plus 版主要執行個體的專案中,啟用 Cloud DNS API。建立 Cloud SQL Enterprise Plus 版執行個體時,如果使用私人 IP 位址和授權網路,Cloud SQL 會自動為執行個體產生寫入端點。如果您已有 Cloud SQL Enterprise Plus 版主要執行個體,Cloud SQL 會在您建立災難復原副本 (使用 cascadable-replica 旗標建立的跨區域副本) 時,產生寫入端點。如果主要執行個體因切換或副本容錯移轉作業而變更,Cloud SQL 會在災難復原副本成為新的主要執行個體時,將寫入端點指派給災難復原副本。

如要進一步瞭解如何使用寫入端點連線至執行個體,請參閱「使用寫入端點連線至執行個體」。

後續步驟