本頁面將介紹 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 程序變化版本特別適合用於必須在主要區域執行的資料庫,因為網路延遲或某些資源僅在主要區域提供。使用這個變化版本時,資料庫只會在主要區域停機期間,在次要區域中執行。
災難復原架構
下圖顯示可支援 HA Cloud SQL 執行個體資料庫 DR 的最低架構:
架構的運作方式如下:
- 兩個 Cloud SQL 執行個體 (主要執行個體和待命執行個體) 位於單一區域 (主要區域) 內的兩個獨立可用區。使用地區永久磁碟來同步執行個體。
- 一個 Cloud SQL 執行個體 (跨區域唯讀備用資源) 位於第二個區域 (次要區域)。針對 DR,跨區域的唯讀備用資源會設定為使用唯讀備用資源設定,透過非同步複製與主要執行個體同步。
主要和待命執行個體共用相同的區域磁碟,因此狀態相同。
由於這項設定採用非同步複製,因此跨區域的唯讀備用資源可能會落後於主要執行個體。因此,發生容錯移轉時,跨區域唯讀備用資源的 RPO 可能不會為零。
災難復原 (DR) 程序
當主要區域無法使用時,災難復原 (DR) 程序就會開始。如要恢復次要區域中的處理作業,您可以升級跨區域唯讀備用資源,觸發主要執行個體的容錯移轉。災難復原流程會規定必須手動或自動執行的作業步驟,以減輕區域故障情形,並在次要區域建立執行中的主執行個體。
下圖顯示 DR 程序:
DR 程序包含下列步驟:
- 執行主要執行個體的主要區域 (R1) 將無法使用。
- 營運團隊會認定並正式確認災難,並決定是否需要容錯移轉。
- 如果需要容錯移轉,您可以將次要區域 (R2) 中的跨區域唯讀備用資源升級為新的主要執行個體。
- 用戶端連線會重新設定,以便在新的主執行個體上繼續處理,並在 R2 中存取主執行個體。
這個初始程序會再次建立可運作的主要資料庫。不過,這並未建立完整的 DR 架構,因為新的主執行個體本身就已設有待命執行個體和跨區域的唯讀備用資料庫。
完整的 DR 程序可確保單一執行個體 (即新的主要執行個體) 已啟用 HA,並設有跨區域的讀取備用資源。完整的 DR 程序也會提供備用機制,讓您回復原始主要區域的原始部署作業。
移轉至次要區域
完整的 DR 程序會在容錯後新增步驟,以便建立完整的 DR 架構,進而擴充基本 DR 程序。下圖顯示容錯後的完整資料庫 DR 架構:
完整的資料庫 DR 程序包含下列步驟:
- 執行主要資料庫的主要區域 (R1) 無法使用。
- 營運團隊會認定並正式確認災難,並決定是否需要容錯移轉。
- 如果需要容錯移轉,您可以將跨區域唯讀備用資源升級為次要區域 (R2) 的新主要執行個體。
- 用戶端連線會重新設定,以便在新的主執行個體 (R2) 上存取及處理。
- 系統會在 R2 中建立並啟動新的待命執行個體,並將其新增至主要執行個體。待命執行個體位於與主要執行個體不同的區域。由於已為主要執行個體建立待命執行個體,因此現在可提供高可用性。
- 在第三個區域 (R3) 中,系統會建立新的跨區域唯讀備用資料庫,並將其附加至主要執行個體。此時,完整的災難復原架構會重新建立並運作。
如果原始主要區域 (R1) 在步驟 6 實作前就已可用,跨區域唯讀備用資源就能立即放置在區域 R1 中,而非區域 R3。在這種情況下,回復至原始主要區域 (R1) 的程序較不複雜,且步驟較少。
避免核心分裂狀態
主要區域 (R1) 發生故障,並不代表原始主要執行個體及其待命執行個體會在 R1 再次可用時自動關閉、移除,或以其他方式變得無法存取。如果 R1 可供使用,用戶端可能會在原始主要執行個體上讀取及寫入資料 (甚至是意外)。在這種情況下,可能會發生核心分裂的情況,部分用戶端會存取舊的主要資料庫中的舊資料,其他用戶端則會存取新的主要資料庫中的新資料,進而導致貴商家發生問題。
為避免出現核心分裂情況,您必須確保 R1 可用後,用戶端無法再存取原始主要執行個體。理想情況下,您應在用戶端開始使用新的主例項之前,將原始主例項設為無法存取,然後在設為無法存取後立即刪除原始主例項。
在容錯移轉後建立初始備份
當您將跨區域的唯讀備用資源升級為備援中的新主要執行個體時,新主要執行個體中的交易可能無法與原主要執行個體中的交易完全同步。因此,這些交易無法在新執行個體中使用。
最佳做法是,在備援開始時立即備份新的主執行個體,並在用戶端存取資料庫前完成備份。這個備份代表備援點的一致性已知狀態。在法規要求下,或在客戶存取新主機時遇到問題,需要還原至已知狀態時,這類備份可能就很重要。
改用原始主要區域
如前述所述,本文件會提供回復原區域 (R1) 的步驟。備用程序有兩種版本。
- 如果您在第三個區域 (R3) 中建立新的跨區域唯讀備用資源,則必須在主要區域 (R1) 中建立另一個 (第二個) 跨區域唯讀備用資源。
- 如果您在主要區域 (R1) 中建立新的跨區域唯讀備用資源,就不需要在 R1 中建立其他跨區域唯讀備用資源。
在 R1 中建立跨區域唯讀備用資源後,Cloud SQL 執行個體可以改用 R1。由於這個備用方案是手動觸發,並非根據停機事件,因此您可以為這項維護活動選擇適當的日期和時間。
因此,如要實現具備主要、備用和跨區域讀取型備援的完整 DR,您需要兩個容錯移轉。第一個容錯移轉會因停機而觸發 (真正的容錯移轉),第二個容錯移轉會重新建立起始部署 (備用)。
回復至原始主要區域 (R1) 的步驟如下:
- 在原始主要區域 (R1) 中升級新建立的跨區域備用資源。
- 如果升級的執行個體並非最初以高可用性副本的形式建立,請在執行個體上啟用高可用性,以防範區域故障。
- 重新設定應用程式,以連線至新的主執行個體。
- 為 DR 區域 (R2) 中的新主要執行個體建立跨區域備用資源。
- (選用) 為避免執行多個獨立的主要執行個體,請清除 DR 區域 (R2) 中的主執行個體。
進階災難復原 (DR)
如果您使用的是 Cloud SQL Enterprise Plus 版本,則可利用進階 DR 功能。進階 DR 可簡化跨區容錯後的復原和備援作業。如災難復原程序所述,執行災難復原作業時,您會移除舊主要執行個體的失敗區域與新主要執行個體的營運區域之間的連線。如要使用 DR 還原至原始部署區域的連線,並重新取得舊的主執行個體,您必須執行一系列手動備用步驟。
使用進階 DR 功能時,當區域發生故障時,您可以叫用副本容錯移轉。使用備用資源容錯功能時,您會升級跨區域讀取備用資源,這與執行一般災難復原作業類似,但您會升級指定的災難復原 (DR) 備用資源。系統會立即宣傳 DR 副本。
系統不會移除舊的主要執行個體,而是將該執行個體保留在 Cloud SQL 的非同步複製拓撲中。當 DR 備用資源升級為新的主要執行個體後,舊的主要執行個體 (例項 A) 最終會成為其 DR 備用資源 (例項 B) 的備用資源。
舊的主要執行個體 (A) 轉換為備用資源後,您就可以執行進階異地備援的最後步驟。您可以將 Cloud SQL 部署還原至原始狀態,並將舊的主要執行個體 (A) 還原為主要執行個體,且不會遺失任何資料。如要為舊的主要執行個體 (A) 執行這項零資料遺失的還原作業,您可以使用切換作業。執行切換作業時,主要執行個體 (B) 會維持在唯讀模式,直到指定的 DR 備用資源 (A) 追上主要執行個體 (B) 為止,因此不會遺失任何資料。當備援複本 (A) 收到所有複製更新後,就會擔任主要執行個體的角色,而先前的執行個體 (B) 會自動重新設定為目前主要執行個體 (A) 的備援複本。執行個體會傳回原始角色,因此會將拓樸圖還原至 DR 和複本備援失敗前的原始狀態。
在整個進階異地備援作業中,所有涉及備援機制容錯轉移和切換作業的執行個體都會保留 IP 位址。
您也可以使用進階容災功能的切換作業,執行例行容災演練,以便在災難發生「前」測試及準備跨區域備援的 Cloud SQL 拓樸。如果發生實際災難,您可以執行先前測試過的跨區域複本容錯移轉。
災難復原 (DR) 備用資源
作為進階 DR 的必要元件,DR 副本具有下列特徵:
- DR 備用資源是直接連線的跨區域唯讀備用資源。
- 您可以多次變更異地備援備用資源的指定項目。
- 您隨時可以變更容錯備援複本指定項目,但在切換或備援複本容錯作業期間除外。
此外,為在使用進階 DR 後縮短 RTO,建議您採取下列做法:
- 設定 DR 備用資源,大小與主要執行個體相同。
- 如果主要執行個體已啟用 HA,建議您也為 DR 備援複本啟用 HA。如要這樣做,請先確認主要裝置已啟用 HA。然後,切換至 DR 副本。切換作業完成後,請在新的主例項上啟用高可用性。然後您就可以切換回舊的主要執行個體。即使 DR 複本再次成為複本,仍會保留高可用性設定。
備用資源容錯移轉
簡而言之,備援節點容錯移轉包含下列事件:
- 您建立並指派備援副本。
- 主要區域無法使用。
- 您會將備用資源容錯移轉至 DR 備用資源。
- 寫入端點會更新,並開始指向新的主執行個體。
- 當原始主要執行個體重新上線時,就會成為新主要執行個體的唯讀備用資源。
- 您可以使用切換作業,將部署還原至原始拓撲。
如要查看複本容錯運算作業的詳細資料和圖表,請按一下下列分頁標籤。
指派 DR 備用資源
在執行備用資源容錯移轉之前,您已將 DR 備用資源指派給主要執行個體,並可能已透過執行切換程序來測試該程序。
服務中斷
執行主要資料庫的主要區域將無法使用。
備用資源容錯移轉
確定需要進行災難復原後,您就可以將備用資源容錯移轉至跨區域指定的 DR 備用資源。
跨區域指定的 DR 備用資源會立即成為主要執行個體,並開始接受傳入的讀取和寫入作業。寫入端點會更新,並開始指向新的主執行個體。
原始主要資料庫成為備用資料庫
備用資源升級後,Cloud SQL 會定期檢查原始主要執行個體是否已恢復上線。如果原始主要執行個體已上線,Cloud SQL 會將舊主要執行個體重新建立為推送執行個體的備用資源。舊的主要執行個體會保留其 IP 位址。
容錯回復至原始
執行備用資源容錯移轉後,您可以執行切換作業,反轉相同的 DR 備用資源和主要執行個體組合,還原原始區域中的主要執行個體。
切換
總而言之,切換作業包含下列事件:
- 您建立並指派備援副本。
- 您啟動了切換程序。
- 當複寫延遲降至零時,新的主執行個體就會開始接受傳入連線。
- 舊的主要執行個體會變成唯讀備用資源。
- 如果使用 DNS 寫入端點,DNS 寫入端點會更新為指向新的主執行個體。
如要查看切換作業的詳細資料和圖表,請按一下下列分頁標籤。
指派 DR 備用資源
開始執行 *切換* 作業前,您必須將 DR 副本指派給主要執行個體。
確認主要執行個體的健康狀態良好。只有在主要執行個體和 DR 備用資源都上線時,才能執行切換作業。
啟動切換
您啟動轉換作業。當您啟動切換作業時,主要執行個體會停止接受寫入作業,並變成唯讀狀態。Cloud SQL 會等待交易記錄複製到 Cloud Storage。指定的 DR 備用資源會趕上主要執行個體。
當複製延遲降至零時,DR 備用資源就會提升為新的主執行個體。新的主執行個體會開始接受傳入的連線,包括應用程式讀取和寫入作業。已更新端點
備援副本升級為新的主執行個體後,DNS 寫入端點會更新,並開始指向新的主執行個體。如果您未使用 DNS 寫入端點,則必須將應用程式設為指向新主要執行個體的 IP 位址。
舊的主要執行個體會重新設定為唯讀備用資源。
系統會自動為新的主執行個體啟用 PITR。只有在首次自動備份後,才能使用 PITR。
寫入端點
寫入端點是網域名稱服務 (DNS) 名稱,會解析為主要執行個體的 IP 位址。在副本容錯移轉或切換作業發生時,這個端點會自動將傳入的連線重新導向至主要執行個體。您可以在 SQL 連線字串中使用寫入端點,而非 IP 位址。使用寫入端點可避免在發生區域性中斷服務時,需要變更應用程式連線。
如要使用寫入端點,您必須在建立 Cloud SQL Enterprise Plus 版本主要執行個體的專案中啟用 Cloud DNS API。當您使用私人 IP 位址和授權網路建立 Cloud SQL Enterprise Plus 版執行個體時,Cloud SQL 會自動為該執行個體產生寫入端點。如果您已擁有 Cloud SQL Enterprise Plus 版本的主要執行個體,則在您建立 DR 備用資源 (您為主要執行個體指定的跨區域備用資源) 時,Cloud SQL 會產生寫入端點。如果主要執行個體因切換或備援容錯移轉作業而變更,Cloud SQL 會在 DR 備用資源成為新的主要執行個體時,將寫入端點指派給 DR 備用資源。
如要進一步瞭解如何取得執行個體的寫入端點,請參閱「查看執行個體資訊」。如要進一步瞭解如何使用寫入端點連線至執行個體,請參閱「使用寫入端點連線」。
後續步驟
- 使用進階災難復原 (DR) 功能。
- 探索 Google Cloud的參考架構、圖表、教學課程和最佳做法。歡迎瀏覽我們的雲端架構中心。