測試並驗證綠色環境後,請啟動切換,將綠色環境轉換為新的正式版讀取和寫入環境。
事前準備
發起切換作業前,請確認您具備必要權限,且部署作業已準備好進行轉換。
所需角色和權限
如要取得執行切換作業所需的權限,請要求管理員在專案中授予您下列 IAM 角色:
- Cloud SQL 管理員 (
roles/cloudsql.admin)
如果是自訂角色,請確認您具備下列權限:
cloudsql.blueGreenDeployments.switchovercloudsql.blueGreenDeployments.getcloudsql.instances.switchovercloudsql.operations.get
如要進一步瞭解 Cloud SQL 中的 IAM 角色和權限,請參閱「角色和權限」。
切換前驗證
發起切換作業前,請確認下列條件:
- 部署狀態:部署作業必須處於
SWITCHOVER_READY狀態。 - 工作負載驗證:在綠色暫存例項上完成所有測試和驗證。
- 複製延遲時間短:確保藍色和綠色環境之間的複製延遲時間最短,以縮短轉換時間。
切換作業的運作方式
啟動切換作業時,Cloud SQL 會自動執行下列程序:
- 切換前驗證:在切換作業前,Cloud SQL 會驗證複寫作業是否正常運作,並執行一系列設定檢查,確保部署作業已準備就緒。
- 切換工作流程執行作業:工作流程執行期間,Cloud SQL 會準備執行個體以進行轉換。如果複製延遲時間過長,或有進行中的交易阻礙轉換,切換作業就會失敗,且藍色正式環境會維持上線狀態。
- 流量重新導向:Cloud SQL 會在藍色和綠色執行個體之間交換連線端點。
- 角色轉換:綠色執行個體會成為使用中的正式讀寫執行個體,藍色執行個體則會成為獨立的讀寫執行個體。
切換期間,應用程式連線會短暫中斷 (通常只有幾秒),然後自動重新連線至升級後的正式版執行個體。切換停機時間會因 Cloud SQL 版本而異:
- Cloud SQL Enterprise Plus 版本:切換停機時間通常不到一秒。
- Cloud SQL Enterprise 版:視工作負載和複製延遲而定,切換停機時間通常不到 60 秒。無須變更應用程式設定或連線字串。
切換生命週期狀態
在切換作業前後,部署作業會經歷 state 回應欄位中的下列狀態:
SWITCHOVER_READY:從藍色到綠色的邏輯複寫作業運作正常,且部署作業已準備好切換。SWITCHOVER_READY狀態只取決於複寫是否正常運作。設定這個狀態時,Cloud SQL 不會評估複寫延遲。SWITCHOVER_NOT_READY:部署作業已佈建,但無法啟動切換作業。如果邏輯複寫作業中斷、暫停或停止,或是發生基礎節點錯誤,就會出現此狀態。設定這個狀態時,Cloud SQL 不會評估複寫延遲。請先檢查errorDetail並解決錯誤,再嘗試切換。SWITCHOVER_IN_PROGRESS:切換指令正在執行中。 Cloud SQL 會交換連線端點,並將綠色轉換為生產環境讀寫執行個體。SWITCHOVER_COMPLETED:切換作業順利完成。綠色執行個體現在是處理讀取和寫入流量的現用正式版資料庫執行個體,而藍色執行個體會保留為獨立的讀取和寫入執行個體,直到您刪除部署作業為止。
切換前最佳做法
- 在流量較低的時間範圍內排定時間:雖然停機時間很短 (通常只有幾秒),但請在寫入活動較少時開始切換 (例如離峰時段或維護時間範圍,此時每秒寫入查詢次數 [QPS] 最低)。這可將複寫延遲時間縮到最短,並降低交易取消的風險。
- 確認複製延遲:開始切換前,請確保複製延遲時間最短。描述藍綠部署作業時不會顯示複製延遲,且 Cloud SQL 不會在切換作業前檢查複製延遲。不過,如果工作流程執行期間的複製延遲過高,切換就會失敗。如要監控複寫延遲,請檢查 Cloud Monitoring 指標 (例如
replica_lag),或直接在綠色執行個體上檢查複寫狀態。詳情請參閱「複寫延遲」。 - 檢查進行中的交易:請務必先完成長時間執行的 DDL 作業或批次寫入作業,再開始切換。
開始切換
使用 Google Cloud 控制台、gcloud CLI 或 Cloud SQL Admin API 啟動切換作業:
控制台
-
前往 Google Cloud 控制台的「Cloud SQL Instances」(Cloud SQL 執行個體) 頁面。
- 如要開啟執行個體的「總覽」頁面,請點選執行個體名稱。
- 在「藍綠部署作業狀態」資訊卡中,按一下「詳細資料」,開啟「部署作業總覽」頁面。
- 按一下「切換部署作業」。
- 在「執行個體設定差異」對話方塊中,查看「來源」和「目標」執行個體之間的設定差異,然後按一下「繼續」開始切換。
gcloud
執行 blue-green-deployments switchover 指令:
gcloud beta sql blue-green-deployments switchover DEPLOYMENT_NAME \ --region=REGION \ --async
切換作業可能需要幾分鐘才能完成。你可能會看到訊息,指出作業時間超出預期。您可以忽略這則訊息,也可以執行 gcloud sql
operations wait 指令來關閉訊息,並等待作業完成:
gcloud sql operations wait OPERATION_ID
如要查看切換作業的狀態,請執行 gcloud sql
operations describe 指令:
gcloud sql operations describe OPERATION_ID
更改下列內容:
- DEPLOYMENT_NAME:藍綠部署的名稱。
- REGION:部署作業建立所在的 Google Cloud 區域。
- OPERATION_ID:切換作業的 ID。
REST v1
向 blueGreenDeployments.switchover 方法傳送 POST 要求:
POST https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/ locations/REGION/ blueGreenDeployments/DEPLOYMENT_NAME:switchover
更改下列內容:
- PROJECT_ID:專案的 ID。 Google Cloud
- REGION:部署作業建立所在的 Google Cloud 區域。
- DEPLOYMENT_NAME:藍綠部署的名稱。
REST v1beta4
向 blueGreenDeployments.switchover 方法傳送 POST 要求:
POST https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT_ID/ locations/REGION/ blueGreenDeployments/DEPLOYMENT_NAME:switchover
更改下列內容:
- PROJECT_ID:專案的 ID。 Google Cloud
- REGION:部署作業建立所在的 Google Cloud 區域。
- DEPLOYMENT_NAME:藍綠部署的名稱。
切換後監控
切換完成後:
- 確認應用程式已成功重新連線,且實際工作環境資料庫作業已恢復。
- 監控新正式版執行個體的查詢輸送量、錯誤記錄和複製狀態。
- 在初始升級後驗證期間,請保持藍色獨立執行個體完好無損。確認穩定性後,請刪除部署作業。詳情請參閱「刪除藍綠部署作業」。