變更雙區域仲裁設定

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

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

檢查雙區域仲裁狀態

您可以透過下列方式查看雙區域仲裁的狀態:

在「資料庫總覽」頁面中

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

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

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

  3. 按一下資料庫名稱。

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

    • 如果兩個區域都達到仲裁,狀態會顯示「雙區域」

    • 如果已執行手動或 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. 在您選擇的開發環境中執行指令碼。詳情請參閱「安裝 gcloud CLI 並設定 Spanner API」。

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

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

如有區域性服務中斷或網路分割問題,請手動執行容錯移轉:

Google Cloud 控制台

  1. 前往 Google Cloud 控制台的「Spanner Instances」(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」(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

後續步驟