本文說明如何建立及暫存 Cloud SQL 藍綠部署作業,以執行主要版本升級或設定變更。
事前準備
如要建立及暫存藍綠部署作業,請確認您具備必要角色,且來源執行個體符合部署作業的必要條件。
所需角色和權限
如要取得建立及暫存藍綠部署作業所需的權限,請要求管理員授予您專案的下列 IAM 角色:
- Cloud SQL 編輯者 (
roles/cloudsql.editor) - Cloud SQL 管理員 (
roles/cloudsql.admin)
如果是自訂角色,請確認您具備下列權限:
cloudsql.blueGreenDeployments.createcloudsql.blueGreenDeployments.getcloudsql.instances.getcloudsql.instances.createcloudsql.operations.get
如要進一步瞭解 Cloud SQL 中的 IAM 角色和權限,請參閱「角色和權限」。
執行個體必要條件
建立藍綠部署作業前,請確認生產 (藍色) 執行個體符合下列規定:
- 資料庫引擎和版本:執行個體必須執行 MySQL 適用的 Cloud SQL 5.7、8.0 或 8.4 版。不支援 8.0.18 版。如要升級主要版本,可以從 8.0 版升級至 8.4 版。
- 二進位記錄和自動備份:您必須在藍色執行個體上啟用二進位記錄和自動備份功能,才能建立到綠色環境的持續邏輯複製作業。
- 執行個體狀態:藍色執行個體必須處於
RUNNING狀態,且沒有進行中的作業或衝突的維護期間。 不支援的功能:確認執行個體未採用藍綠部署不支援的功能,包括:
最新維護版本:建立藍綠部署作業前,執行個體必須執行最新維護版本。詳情請參閱「自助式維護」。
網路架構:執行個體必須使用新的網路架構。系統不支援使用舊網路架構的執行個體。
觸發部署作業建立程序時,Cloud SQL 會自動執行一系列自動預檢,以驗證複寫相容性和標記。如果是主要版本升級,Cloud SQL 也會在來源執行個體上執行主要版本升級預檢 API,以驗證升級準備就緒狀態,再繼續執行工作流程。如果前置檢查失敗,系統會停止建立部署作業,並在作業狀態中傳回錯誤。
建立藍綠部署作業
您可以有目的地建立藍綠部署作業,執行主要版本升級,也可以無目的地建立藍綠部署作業,暫存硬體或標記更新。
控制台
-
前往 Google Cloud 控制台的「Cloud SQL Instances」(Cloud SQL 執行個體) 頁面。
- 如要開啟執行個體的「總覽」頁面,請點選執行個體名稱。
- 在「設定」部分,按一下「建立藍綠部署」。
- 在「Create Blue Green Deployment」(建立藍綠部署作業) 頁面的「Deployment information」(部署作業資訊) 專區中,於「Deployment name」(部署作業名稱) 欄位輸入部署作業的專屬名稱。
- 在「部署用途」清單中,選取下列任一選項:
- 選項 A (主要版本升級):如要在切換前,先在綠色執行個體上暫存及測試主要版本升級,請選取「主要版本升級」。在「目標資料庫版本」清單中,選取目標資料庫版本 (例如「MySQL 8.4」)。
建立部署作業時,Cloud SQL 會自動執行主要版本升級預檢,再建立綠色執行個體。或者,建議您先執行主要版本升級預檢,再建立部署作業,找出任何升級阻礙因素。
- 選項 B (預設):如要建立與來源執行個體資料庫版本相同的綠色暫存環境,以測試設定或硬體變更,請選取「預設」。
- 選項 A (主要版本升級):如要在切換前,先在綠色執行個體上暫存及測試主要版本升級,請選取「主要版本升級」。在「目標資料庫版本」清單中,選取目標資料庫版本 (例如「MySQL 8.4」)。
- 點選「建立」。
gcloud
如要使用 gcloud 建立藍綠部署,請執行 blue-green-deployments create 指令。
方法 A:建立意圖 (主要版本升級)
建立部署作業時,Cloud SQL 會自動執行主要版本升級預檢,再建立綠色執行個體。或者,您也可以在建立部署作業前,對藍色執行個體執行主要版本升級預檢,找出任何升級阻礙。
gcloud beta sql blue-green-deployments create DEPLOYMENT_NAME \ --source-instance=SOURCE_INSTANCE_ID \ --target-database-version=TARGET_DATABASE_VERSION \ --region=REGION \ --async
更改下列內容:
- DEPLOYMENT_NAME:部署作業的專屬名稱。
- SOURCE_INSTANCE_ID:藍色來源執行個體的名稱。
- TARGET_DATABASE_VERSION:目標版本 (例如
MYSQL_8_4)。 - REGION:藍色執行個體的 Google Cloud 區域。
選項 B:不建立意圖 (硬體或設定)
省略 --target-database-version 旗標,即可在與藍色執行個體相同的資料庫版本中,佈建綠色環境:
gcloud beta sql blue-green-deployments create DEPLOYMENT_NAME \ --source-instance=SOURCE_INSTANCE_ID \ --region=REGION \ --async
建立藍綠部署需要幾分鐘的時間,特別是執行主要版本升級時。系統可能會顯示訊息,指出作業耗費的時間超出預期。您可以忽略這則訊息,也可以執行 gcloud sql
operations wait 指令來關閉訊息,並等待作業完成:
gcloud sql operations wait OPERATION_ID
將 OPERATION_ID 替換成指令傳回或訊息中顯示的作業 ID。
REST v1
如要使用 Cloud SQL Admin API 建立藍綠部署作業,請將 POST 要求傳送至 blueGreenDeployments.create 方法。
方法 A:建立意圖 (主要版本升級)
建立部署作業時,Cloud SQL 會自動執行主要版本升級預檢,再建立綠色執行個體。或者,您也可以在建立部署作業前,對藍色執行個體執行主要版本升級預檢,找出任何升級阻礙。
POST https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/
locations/REGION/
blueGreenDeployments?blueGreenDeploymentId=DEPLOYMENT_NAME
{
"sourceInstance": "SOURCE_INSTANCE_ID",
"requestedConfig": {
"databaseVersion": "TARGET_DATABASE_VERSION"
}
}
更改下列內容:
- PROJECT_ID:專案的 ID。 Google Cloud
- REGION:藍色執行個體的 Google Cloud 區域。
- DEPLOYMENT_NAME:部署作業的專屬名稱。
- SOURCE_INSTANCE_ID:藍色來源執行個體的名稱。
- TARGET_DATABASE_VERSION:目標資料庫版本 (例如
MYSQL_8_4)。
選項 B:不建立意圖 (硬體或設定)
省略 requestedConfig 欄位,即可在與藍色執行個體相同的資料庫版本中,佈建綠色環境:
POST https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/
locations/REGION/
blueGreenDeployments?blueGreenDeploymentId=DEPLOYMENT_NAME
{
"sourceInstance": "SOURCE_INSTANCE_ID"
}
REST v1beta4
如要使用 Cloud SQL Admin API 建立藍綠部署作業,請將 POST 要求傳送至 blueGreenDeployments.create 方法。
方法 A:建立意圖 (主要版本升級)
建立部署作業時,Cloud SQL 會自動執行主要版本升級預檢,再建立綠色執行個體。或者,您也可以在建立部署作業前,對藍色執行個體執行主要版本升級預檢,找出任何升級阻礙。
POST https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT_ID/
locations/REGION/
blueGreenDeployments?blueGreenDeploymentId=DEPLOYMENT_NAME
{
"sourceInstance": "SOURCE_INSTANCE_ID",
"requestedConfig": {
"databaseVersion": "TARGET_DATABASE_VERSION"
}
}
更改下列內容:
- PROJECT_ID:專案的 ID。 Google Cloud
- REGION:藍色執行個體的 Google Cloud 區域。
- DEPLOYMENT_NAME:部署作業的專屬名稱。
- SOURCE_INSTANCE_ID:藍色來源執行個體的名稱。
- TARGET_DATABASE_VERSION:目標資料庫版本 (例如
MYSQL_8_4)。
選項 B:不建立意圖 (硬體或設定)
省略 requestedConfig 欄位,即可在與藍色執行個體相同的資料庫版本中,佈建綠色環境:
POST https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT_ID/
locations/REGION/
blueGreenDeployments?blueGreenDeploymentId=DEPLOYMENT_NAME
{
"sourceInstance": "SOURCE_INSTANCE_ID"
}
監控部署狀態
建立作業是長時間執行的作業 (LRO)。在暫存期間,Cloud SQL 會佈建綠色執行個體、升級 (如果要求升級主要版本),並啟動持續邏輯複寫。
查看藍綠部署的進度和狀態:
控制台
-
前往 Google Cloud 控制台的「Cloud SQL Instances」(Cloud SQL 執行個體) 頁面。
- 如要開啟執行個體的「總覽」頁面,請點選執行個體名稱。
- 找到「藍綠部署作業狀態」資訊卡,即可查看部署狀態。
- 如要查看詳細的佈建工作和進度,請按一下「詳細資料」,開啟「部署總覽」頁面。
gcloud
如要使用 gcloud 檢查藍綠色部署的進度和狀態,請執行 blue-green-deployments describe 指令:
gcloud beta sql blue-green-deployments describe DEPLOYMENT_NAME \ --region=REGION
更改下列內容:
- DEPLOYMENT_NAME:藍綠部署的名稱。
- REGION:部署作業建立所在的 Google Cloud 區域。
如要等待建立作業完成,請執行 gcloud sql
operations wait 指令:
gcloud sql operations wait OPERATION_ID
將 OPERATION_ID 替換為建立作業的 ID。
REST v1
如要使用 Cloud SQL Admin API 檢查藍綠部署的進度和狀態,請將 GET 要求傳送至 blueGreenDeployments.get 方法:
GET https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/ locations/REGION/ blueGreenDeployments/DEPLOYMENT_NAME
更改下列內容:
- PROJECT_ID:專案的 ID。 Google Cloud
- REGION:建立部署作業的 Google Cloud 區域。
- DEPLOYMENT_NAME:藍綠部署的名稱。
REST v1beta4
如要使用 Cloud SQL Admin API 檢查藍綠部署的進度和狀態,請將 GET 要求傳送至 blueGreenDeployments.get 方法:
GET https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT_ID/ locations/REGION/ blueGreenDeployments/DEPLOYMENT_NAME
更改下列內容:
- PROJECT_ID:專案的 ID。 Google Cloud
- REGION:建立部署作業的 Google Cloud 區域。
- DEPLOYMENT_NAME:藍綠部署的名稱。
在指令輸出內容或 Google Cloud 控制台中,監控 state 欄位,追蹤部署作業生命週期:
PROVISIONING:系統正在建立綠色執行個體、升級 (如有要求),並連線至持續邏輯複寫。SWITCHOVER_READY:初始複製作業已完成,且持續邏輯複製作業處於啟用狀態。部署作業已準備就緒,可以進行驗證、測試及切換。SWITCHOVER_NOT_READY:已佈建部署作業,但無法啟動切換作業 (例如,如果複製作業中斷或errorDetail中回報問題)。
如要進一步瞭解所有部署生命週期階段,請參閱「部署生命週期和狀態」。
請等待部署狀態變更為 SWITCHOVER_READY,再繼續說明部署作業、驗證應用程式工作負載,或啟動切換作業。
後續步驟
- 說明並列出藍綠部署作業,檢查部署狀態並擷取連線詳細資料。
- 切換藍綠部署作業,將綠色執行個體轉換為作用中的生產環境讀寫執行個體。
- 刪除藍綠部署作業:取消暫存並移除綠色環境。