變更雙區域仲裁設定

本頁說明如何檢查 Spanner 雙區間仲裁機制之健康狀態,以及如何在服務中斷時手動變更仲裁機制。

如要進一步瞭解雙區域,請參閱 Spanner 的「雙區域執行個體設定」。

檢查雙區域仲裁狀態

您可以透過下列方式查看雙區法定數的狀態:

在「資料庫」總覽頁面上

  1. 前往 Google Cloud 控制台的「Spanner 執行個體」頁面。

    前往「Instances」(執行個體) 頁面

  2. 按一下雙區域設定中的執行個體名稱。

  3. 按一下資料庫名稱。

  4. 在「總覽」下方,找出「仲裁」列,該列會顯示執行個體的雙區域仲裁狀態:

    • 如果兩個區域都符合仲裁要求,狀態會顯示「雙區域」

    • 如果已執行手動或 Google 管理的備援機制,您會看到服務區域的名稱 (例如 asia-south1)。

使用系統洞察資訊主頁

建立雙區設定後,您可以在「執行個體層級系統深入分析」資訊主頁上查看「雙區法定人數健康狀態時間軸」指標。

詳情請參閱「查看系統深入分析資訊主頁」。

使用 Monitoring REST API 或 gcloud CLI

您可以使用 Monitoring REST API 或 gcloud CLI 檢查雙區法定人數的健康狀態。

Monitoring REST API

使用 Monitoring projects.timeSeries.list API 查詢雙區域仲裁健康狀態時間軸,檢查某個區域在特定時間點是否處於健康狀態。

使用任何要求資料之前,請先替換以下項目:

  • PROJECT_ID:您的專案 ID。
  • DUAL_REGION_LOCATION:您要檢查的雙區域中區域的位置。
  • START_TIME:查詢的開始時間。建議您使用目前時間前 5 分鐘。
  • END_TIME:查詢的結束時間。建議您使用目前時間。

HTTP 方法和網址:

GET https://monitoring.googleapis.com/v3/projects/PROJECT_ID/timeSeries

JSON 要求主體:

{
  "name": "PROJECT_ID",
  "aggregation.alignmentPeriod": "60s",
  "aggregation.crossSeriesReducer": "REDUCE_FRACTION_TRUE",
  "aggregation.groupByFields": "resource.labels.location",
  "aggregation.perSeriesAligner": "ALIGN_NEXT_OLDER",
  "filter": "metric.labels.quorum_availability = "Healthy" AND metric.type = "spanner.googleapis.com/instance/dual_region_quorum_availability" AND resource.labels.location = "DUAL_REGION_LOCATION"",
  "interval.startTime": "START_TIME",
  "interval.endTime": "END_TIME"
}

如要傳送要求,請展開以下其中一個選項:

您應該會收到如下的 JSON 回應:

{
  "timeSeries": [
    {
      "metric": {
        "type": "spanner.googleapis.com/instance/dual_region_quorum_availability"
      },
      "resource": {
        "type": "spanner_instance",
        "labels": {
          "project_id": "spanner-project",
          "location": "australia-southeast1"
        }
      },
      "metricKind": "GAUGE",
      "valueType": "DOUBLE",
      "points": [
        {
          "interval": {
            "startTime": "2024-07-11T05:41:23Z",
            "endTime": "2024-07-11T05:41:23Z"
          },
          "value": {
            "doubleValue": 1
          }
        }
      ]
    }
  ],
  "unit": "10^2.%"
}

如果沒有看到類似的回應,表示您的區域可能無法正常運作,因此您可能需要將雙區域仲裁變更為單一區域

gcloud CLI

  1. 下載 dual-region-quorum-health-check-script.sh 檔案。

    這個 Bash 指令碼會檢查單一地區的地區健康狀態。如果區域運作正常,指令碼就會執行 gcloud spanner databases change-quorum 指令,將雙區域仲裁機制從雙區域手動容錯移轉為單一區域。

  2. 在指令碼中替換下列變數:

    • PROJECT:您的專案 ID。
    • INSTANCE:執行個體 ID。
    • DATABASE:您的資料庫 ID。
    • SERVING_LOCATION:您要檢查的雙區域中區域的位置。
  3. 在您選擇的開發環境中執行指令碼。詳情請參閱「安裝 Google Cloud CLI 並設定 Spanner API」。

  4. 如果區域處於不健康狀態且發生容錯移轉,請手動回復

將雙區域仲裁設定從雙區域變更為單一區域 (容錯)

如要手動容錯,以因應區域性服務中斷或網路分割問題,請按照下列步驟操作:

Google Cloud 控制台

  1. 前往 Google Cloud 控制台的「Spanner 執行個體」頁面。

    前往「Instances」(執行個體) 頁面

  2. 按一下雙區域設定中的執行個體名稱。

  3. 按一下導覽選單中的「系統深入分析」

  4. 找出「雙區域仲裁健康狀態時間軸」指標。

  5. 如果雙區域仲裁健康狀態時間軸顯示某個區域發生中斷情形,請按一下「變更區域仲裁」

    Cloud Shell 會隨即開啟。

  6. 如要將雙區法定人數從雙區變更為單一區域,請在 gcloud CLI 分頁中輸入以下指令:gcloud spanner databases change-quorum。如需詳細操作說明,請參閱 gcloud 分頁。

gcloud CLI

使用 gcloud spanner databases change-quorum 指令,將雙區域仲裁變更為單一區域。

gcloud spanner databases change-quorum
    DATABASE_ID --instance=INSTANCE_ID
    --single-region --serving-location=SERVING_LOCATION
    [--etag=ETAG]

更改下列內容:

  • DATABASE_ID:資料庫的永久 ID。

  • INSTANCE_ID:執行個體的永久 ID。

  • SERVING_LOCATION:您要移轉的區域執行個體設定。舉例來說,如果 asia-south1 (孟買) 處於不健康狀態,而您想要改為備援至 asia-south2 (德里),請輸入 asia-south2。請確認 SERVING_LOCATION 是健康的區域。如果選擇錯誤的區域進行容錯移轉,資料庫就會無法使用,在區域重新上線前無法復原。

選用標記:

  • --etag=ETAGETAG 引數可用於重播保護。

如要查看法定人數變更作業的狀態,請執行 gcloud spanner databases describe 指令。quorumInfo 欄位會提供作業相關資訊。

gcloud spanner databases describe DATABASE_ID
    --instance=INSTANCE_ID

將雙區域仲裁設定從單一區域變更為雙區域 (復原)

在中斷的區域恢復正常或網路區隔問題解決後,如何手動回復:

Google Cloud 控制台

  1. 前往 Google Cloud 控制台的「Spanner 執行個體」頁面。

    前往「Instances」(執行個體) 頁面

  2. 按一下雙區域設定中的執行個體名稱。

  3. 按一下導覽選單中的「系統深入分析」

  4. 找出「雙區域仲裁健康狀態時間軸」指標。

  5. 在雙區域仲裁健康狀態時間軸上,按一下「變更區域仲裁」

    Cloud Shell 會隨即開啟。

  6. 如要將雙區法定人數從單一區域變更為雙區域,請在 gcloud CLI 分頁中輸入以下指令:gcloud spanner databases change-quorum。如需詳細操作說明,請參閱 gcloud 分頁。

gcloud CLI

使用 gcloud spanner databases change-quorum 指令,將雙區域仲裁機制從單一區域變更為雙區域。

gcloud spanner databases change-quorum
    DATABASE_ID --instance=INSTANCE_ID
    --dual-region
    [--etag=ETAG]

更改下列內容:

  • DATABASE_ID:資料庫的永久 ID。

  • INSTANCE_ID:執行個體的永久 ID。

選用標記:

  • --etag=ETAGETAG 引數可用於樂觀並行控制。

如要查看法定人數變更作業的狀態,請執行 gcloud spanner databases describe 指令。quorumInfo 欄位會提供作業相關資訊。

gcloud spanner databases describe DATABASE_ID
    --instance=INSTANCE_ID

後續步驟