建立及暫存藍綠部署作業

本文說明如何建立及暫存 Cloud SQL 藍綠部署作業,以執行主要版本升級或設定變更。

事前準備

如要建立及暫存藍綠部署作業,請確認您具備必要角色,且來源執行個體符合部署作業的必要條件。

所需角色和權限

如要取得建立及暫存藍綠部署作業所需的權限,請要求管理員授予您專案的下列 IAM 角色:

  • Cloud SQL 編輯者 (roles/cloudsql.editor)
  • Cloud SQL 管理員 (roles/cloudsql.admin)

如果是自訂角色,請確認您具備下列權限:

  • cloudsql.blueGreenDeployments.create
  • cloudsql.blueGreenDeployments.get
  • cloudsql.instances.get
  • cloudsql.instances.create
  • cloudsql.operations.get

如要進一步瞭解 Cloud SQL 中的 IAM 角色和權限,請參閱「角色和權限」。

執行個體必要條件

建立藍綠部署作業前,請確認生產 (藍色) 執行個體符合下列規定:

  1. 資料庫引擎和版本:執行個體必須執行 MySQL 適用的 Cloud SQL 5.7、8.0 或 8.4 版。不支援 8.0.18 版。如要升級主要版本,可以從 8.0 版升級至 8.4 版。
  2. 二進位記錄和自動備份:您必須在藍色執行個體上啟用二進位記錄和自動備份功能,才能建立到綠色環境的持續邏輯複製作業。
  3. 執行個體狀態:藍色執行個體必須處於 RUNNING 狀態,且沒有進行中的作業或衝突的維護期間。
  4. 不支援的功能:確認執行個體未採用藍綠部署不支援的功能,包括:

  5. 最新維護版本:建立藍綠部署作業前,執行個體必須執行最新維護版本。詳情請參閱「自助式維護」。

  6. 網路架構:執行個體必須使用新的網路架構。系統不支援使用舊網路架構的執行個體。

觸發部署作業建立程序時,Cloud SQL 會自動執行一系列自動預檢,以驗證複寫相容性和標記。如果是主要版本升級,Cloud SQL 也會在來源執行個體上執行主要版本升級預檢 API,以驗證升級準備就緒狀態,再繼續執行工作流程。如果前置檢查失敗,系統會停止建立部署作業,並在作業狀態中傳回錯誤。

建立藍綠部署作業

您可以有目的地建立藍綠部署作業,執行主要版本升級,也可以無目的地建立藍綠部署作業,暫存硬體或標記更新。

控制台

  1. 前往 Google Cloud 控制台的「Cloud SQL Instances」(Cloud SQL 執行個體) 頁面。

    前往 Cloud SQL 執行個體

  2. 如要開啟執行個體的「總覽」頁面,請點選執行個體名稱。
  3. 在「設定」部分,按一下「建立藍綠部署」。
  4. 在「Create Blue Green Deployment」(建立藍綠部署作業) 頁面的「Deployment information」(部署作業資訊) 專區中,於「Deployment name」(部署作業名稱) 欄位輸入部署作業的專屬名稱。
  5. 在「部署用途」清單中,選取下列任一選項:
    • 選項 A (主要版本升級):如要在切換前,先在綠色執行個體上暫存及測試主要版本升級,請選取「主要版本升級」。在「目標資料庫版本」清單中,選取目標資料庫版本 (例如「MySQL 8.4」)。

      建立部署作業時,Cloud SQL 會自動執行主要版本升級預檢,再建立綠色執行個體。或者,建議您先執行主要版本升級預檢,再建立部署作業,找出任何升級阻礙因素。

    • 選項 B (預設):如要建立與來源執行個體資料庫版本相同的綠色暫存環境,以測試設定或硬體變更,請選取「預設」。
  6. 點選「建立」。

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 會佈建綠色執行個體、升級 (如果要求升級主要版本),並啟動持續邏輯複寫。

查看藍綠部署的進度和狀態:

控制台

  1. 前往 Google Cloud 控制台的「Cloud SQL Instances」(Cloud SQL 執行個體) 頁面。

    前往 Cloud SQL 執行個體

  2. 如要開啟執行個體的「總覽」頁面,請點選執行個體名稱。
  3. 找到「藍綠部署作業狀態」資訊卡,即可查看部署狀態。
  4. 如要查看詳細的佈建工作和進度,請按一下「詳細資料」,開啟「部署總覽」頁面。

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,再繼續說明部署作業、驗證應用程式工作負載,或啟動切換作業。

後續步驟