本文將概略說明 Cloud SQL 藍綠部署作業,這項作業可讓您執行資料庫更新 (例如主要版本升級和硬體修改),同時盡量減少停機時間。
部署意圖和用途
您可以建立藍綠部署,無論是否打算執行主要版本升級:
- 有目的地建立 (主要版本升級):將資料庫引擎升級至較新的主要版本。建立部署作業時,Cloud SQL 會執行主要版本升級預檢 API,確認相容性,再繼續進行升級工作流程。
- 無意建立 (設定或硬體變更):在目前的資料庫版本中暫存修改內容。用途包括變更機型 (CPU/RAM 調整資源配置)、測試資料庫旗標,或評估儲存空間修改,不必升級引擎版本。
藍綠部署的運作方式
Cloud SQL 藍綠部署提供自動化工作流程,可先在臨時次要環境中暫存變更,再切換即時流量。
在藍綠部署期間,Cloud SQL 會建立獨立的測試環境 (綠色),鏡像複製現有的正式環境 (藍色)。這項服務會持續從藍色到綠色進行邏輯複製。您可以在綠色環境中徹底測試應用程式的相容性和效能,不會影響實際執行環境流量。準備就緒後,即可觸發快速切換,將綠色環境指派給生產環境的讀取和寫入狀態,應用程式停機時間極短 (通常以秒為單位)。
藍綠部署的元件
藍綠部署包含下列元件:
- 藍色環境 (來源):現有的正式環境,可主動處理應用程式流量。包括來源讀取和寫入執行個體,以及任何相關聯的設定。
- 綠色環境 (目標):Cloud SQL 建立的暫時性獨立預先發布環境,做為藍色環境的副本。綠色環境會納入您要求的變更 (例如較新的資料庫版本),並透過持續複製與藍色環境保持同步。Cloud SQL 會自動為綠色暫存執行個體命名,命名模式為
BLUE_INSTANCE_NAME-green-UNIQUE_ID(其中 BLUE_INSTANCE_NAME 最多會截斷為 48 個字元,UNIQUE_ID 則是 8 個字元的十六進位 ID)。 切換:使用者主動發起的程序,將綠色環境轉換為新的正式版讀取和寫入例項。在切換期間,Cloud SQL 會交換連線端點,因此應用程式會連線至綠色環境,但連線會短暫中斷 (通常只有幾秒)。切換期間的預期停機時間會因 Cloud SQL 版本而異:
- Cloud SQL Enterprise Plus 版本:切換停機時間通常不到一秒。
- Cloud SQL Enterprise 版:視工作負載和複製延遲時間而定,切換停機時間通常不到 60 秒。
與非預期的容錯移轉 (在服務中斷期間自動觸發) 不同,切換作業是受控作業,用於管理預先規劃的變更。
刪除:移除藍綠部署作業資源的程序。 刪除行為會因是否已發生切換而異:
- 切換前:刪除部署作業會移除綠色暫存執行個體和部署作業資源。藍色正式環境執行個體不受影響,會繼續處理流量。
- 切換後:刪除部署作業會移除部署作業中繼資料。根據預設,系統會保留轉換後的執行個體 (綠色) 和藍色執行個體。您可以視需要刪除藍色執行個體,以免持續產生費用。
部署作業生命週期和狀態
藍綠部署會經歷四個不同的生命週期階段:
- 建立和暫存 (
PROVISIONING):要求藍綠部署時,Cloud SQL 會佈建暫時的綠色目標執行個體,複製藍色正式環境。如果是主要版本升級,Cloud SQL 也會執行主要版本升級前檢查 API,驗證資料庫相容性,再繼續進行升級工作流程。Cloud SQL 會將要求的升級或設定變更套用至綠色環境,並開始從藍色環境到綠色環境的持續邏輯複寫。 - 暫存驗證 (
SWITCHOVER_READY或SWITCHOVER_NOT_READY): 初始複製完成後,部署作業會進入SWITCHOVER_READY(如果複製作業中斷或發生錯誤,則會進入SWITCHOVER_NOT_READY)。 藍色環境會繼續處理正式環境流量。連線至綠色環境,執行驗證測試、確認應用程式相容性,以及測試查詢效能。 - 切換執行 (
SWITCHOVER_IN_PROGRESS或SWITCHOVER_COMPLETED):觸發切換時,Cloud SQL 會執行安全前置檢查、交換連線端點,並將綠色執行個體設為作用中的生產環境讀取和寫入執行個體 (SWITCHOVER_COMPLETED),然後將藍色執行個體轉換為獨立的讀取和寫入執行個體。系統會將有效的讀取和寫入作業完全導向綠色執行個體,並終止從藍色到綠色的邏輯複寫。詳情請參閱「執行藍綠部署切換」。 刪除 (
DELETING):完成測試或驗證正式版作業後,即可刪除部署資源。刪除行為會因部署狀態而異:- 切換前 (取消):如果您決定不繼續部署,或發生驗證問題,刪除部署作業會移除綠色暫存例項,並刪除部署作業中繼資料。原始藍色生產例項不會受到影響,且會持續提供流量,不會中斷。
- 切換後 (清除):切換完成並驗證新正式版執行個體上的作業後,刪除部署作業會移除部署作業中繼資料。根據預設,新的正式版執行個體 (綠色) 和藍色執行個體都會保留為獨立的讀取和寫入執行個體。您可以視需要指定
--delete-old-source旗標,永久刪除藍色執行個體,並停止產生相關費用。
詳情請參閱「刪除藍綠部署作業」。
部署作業資源狀態
檢查藍綠部署作業時,「state」欄位會顯示目前的生命週期狀態:
PROVISIONING:正在建立部署作業。如果是升級主要版本,Cloud SQL 會先執行預檢 API 驗證相容性,再繼續進行升級。Cloud SQL 會佈建綠色環境、套用要求的升級,並設定持續邏輯複製。SWITCHOVER_READY:已佈建綠色環境、從藍色到綠色的邏輯複寫作業運作正常,且部署作業已準備好切換。SWITCHOVER_NOT_READY:部署作業已佈建,但無法啟動切換作業。如果邏輯複寫中斷或停止、初始複寫尚未完成,或配對節點發生錯誤,就會出現此狀態。SWITCHOVER_IN_PROGRESS:切換作業正在執行中。 Cloud SQL 會交換連線端點,並將綠色執行個體轉換為可讀寫的有效生產環境執行個體。SWITCHOVER_COMPLETED:切換作業已順利完成。綠色執行個體現在是您用於讀取和寫入的有效正式環境執行個體,藍色執行個體則保留為獨立的讀取和寫入執行個體。DELETING:正在刪除部署作業。如果在切換前刪除,Cloud SQL 會移除綠色暫存執行個體,並刪除部署中繼資料。如果在切換後刪除,Cloud SQL 會移除部署中繼資料,並視情況刪除藍色執行個體 (如果指定--delete-old-source旗標)。STATE_UNSPECIFIED:部署作業的狀態不明。
切換狀態和準備就緒
為保護生產資料庫,避免資料遺失或長時間停機,切換準備就緒狀態取決於複製健康狀態和節點狀態:
- 複製健康狀態和延遲:如果藍色和綠色之間的邏輯複製作業中斷、暫停或失敗,部署狀態會轉換為
SWITCHOVER_NOT_READY。部署state和說明輸出內容不會回報複製延遲,且 Cloud SQL 在判斷部署狀態時,不會將複製延遲評估為前置檢查。不過,如果啟動切換作業時的複製延遲過高,切換作業就會失敗。為確保順利切換,請先確認複製延遲時間極短,再開始切換。您可以在 Cloud Monitoring 中監控複寫延遲 (方法是在 Cloud SQL 指標清單中檢查replica_lag等指標),也可以直接在綠色執行個體上監控。詳情請參閱「監控複寫延遲」。 - 配對節點狀態:在
deploymentMappings下,每個配對節點都會回報自己的節點狀態 (例如PROVISIONED、UPGRADED、UPGRADE_FAILED、SWITCHOVER_IN_PROGRESS、SWITCHOVER_SUCCEEDED或SWITCHOVER_FAILED)。如果配對節點發生錯誤 (UPGRADE_FAILED或SWITCHOVER_FAILED),整體部署狀態會轉換為SWITCHOVER_NOT_READY。如果切換失敗,路由會保留在藍色執行個體上,不會遺失任何資料。 - 排解切換準備狀態問題:如果部署作業回報
SWITCHOVER_NOT_READY,請檢查errorDetail欄位,診斷複寫或節點錯誤。發起切換前,請確保複製延遲時間最短,並確認藍色執行個體上的作用中批次 DDL 作業或長時間執行的寫入交易已完成。
限制
使用藍綠部署前,請先詳閱下列限制:
- 支援的引擎和版本:MySQL 適用的 Cloud SQL 執行個體 (MySQL 5.7 以上版本) 支援設定暫存 (建立但不打算使用)。MySQL 8.0 至 8.4 支援升級主要版本 (以意圖建立)。藍綠部署作業不支援 MySQL 8.0.18。
- 不支援的資料庫引擎:不支援 PostgreSQL 適用的 Cloud SQL 和 SQL Server 適用的 Cloud SQL。
- 具備唯讀副本的執行個體:藍綠部署作業不支援具備唯讀副本的執行個體。
- 不支援的網路設定:藍綠部署不支援 Private Service Connect 傳出設定。
- IAM 群組驗證:藍綠部署與 MySQL IAM 群組驗證不相容,可能會導致切換失敗。
- 網路架構規定:Cloud SQL 執行個體必須使用新網路架構。系統不支援使用舊網路架構的執行個體。
- 二進位記錄檔需求:MySQL 執行個體必須啟用自動備份和二進位記錄檔,才能支援持續邏輯複製到綠色環境。
- 維護版本規定:建立藍綠部署前,藍色來源執行個體必須執行最新維護版本。如要檢查或更新執行個體維護版本,請參閱「執行自助式維護作業」。
- 資源可用性:在藍綠部署工作流程中,包括建立綠色暫存執行個體,以及在切換後建立藍色執行個體,執行個體佈建作業可能會受到所選區域或可用區的運算資源限制影響。
- 非預期中斷和容錯移轉:藍綠部署切換作業嚴格來說是預先規劃的作業,需要運作正常的藍色來源執行個體。
RUNNING綠色暫存執行個體可做為專用唯讀副本;與標準唯讀副本一樣,在來源執行個體發生非預期中斷時,綠色執行個體無法做為容錯移轉目標。如要自動復原中斷情況,請將執行個體設定為高可用性,或使用災難復原 (DR) 副本。
帳單與定價
使用藍綠部署作業不會產生額外費用。不過,由於部署期間會佈建完整的平行綠色環境,因此在兩個環境並存的整個期間,您需要支付藍色和綠色執行個體的標準費率。
為避免產生不必要的費用,請刪除部署作業和相關聯的執行個體:
- 切換前:如果取消部署作業,請刪除部署作業,移除綠色暫存執行個體,並停止相關費用。
- 切換後:驗證新的正式版執行個體後,請刪除部署作業並指定
--delete-old-source旗標,永久刪除藍色執行個體。如未刪除藍色執行個體,系統會繼續向您收取兩個執行個體的費用。