本頁說明如何檢查 Spanner 雙區域仲裁的健康狀態,以及如何在服務中斷時手動變更仲裁。
如要進一步瞭解雙區域,請參閱 Spanner 雙區域執行個體設定。
檢查雙區域仲裁狀態
您可以透過下列方式查看雙區域仲裁的狀態:
在「資料庫總覽」頁面中
前往 Google Cloud 控制台的「Spanner Instances」(Spanner 執行個體) 頁面。
按一下雙區域設定中的執行個體名稱。
按一下資料庫名稱。
在「總覽」下方,找到「仲裁」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
下載
dual-region-quorum-health-check-script.sh檔案。這個 Bash 指令碼會檢查單一區域的區域健康狀態。如果區域健康狀態良好,指令碼會執行
gcloud spanner databases change-quorum指令,將雙區域仲裁從雙區域手動容錯移轉至單一區域。在指令碼中替換下列變數:
PROJECT:您的專案 ID。INSTANCE:執行個體 ID。DATABASE:資料庫 ID。SERVING_LOCATION:要檢查的雙區域中區域的位置。
在您選擇的開發環境中執行指令碼。詳情請參閱「安裝 gcloud CLI 並設定 Spanner API」。
如果區域健康狀態不良且發生容錯移轉,請手動容錯回復。
將雙區域仲裁從雙區域變更為單一區域 (容錯移轉)
如有區域性服務中斷或網路分割問題,請手動執行容錯移轉:
Google Cloud 控制台
前往 Google Cloud 控制台的「Spanner Instances」(Spanner 執行個體) 頁面。
按一下雙區域設定中的執行個體名稱。
按一下導覽選單中的「系統洞察」。
找出「雙區域仲裁健康狀態時間軸」指標。
如果雙區域仲裁健康狀態時間軸顯示某個區域發生中斷情形,請按一下「變更區域仲裁」。
Cloud Shell 隨即開啟。
如要將雙區域仲裁從雙區域變更為單一區域,請輸入 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=ETAG:ETAG引數可用於重播攻擊防護。
如要查看仲裁人數變更作業的狀態,請執行 gcloud spanner databases describe 指令。quorumInfo 欄位提供作業相關資訊。
gcloud spanner databases describe DATABASE_ID
--instance=INSTANCE_ID
將雙區域仲裁從單一區域變更為雙區域 (容錯回復)
如要在中斷的區域恢復正常或網路分割問題解決後手動回復,請按照下列步驟操作:
Google Cloud 控制台
前往 Google Cloud 控制台的「Spanner Instances」(Spanner 執行個體) 頁面。
按一下雙區域設定中的執行個體名稱。
按一下導覽選單中的「系統洞察」。
找出「雙區域仲裁健康狀態時間軸」指標。
在「雙區域仲裁健康狀態時間軸」上,按一下「變更區域仲裁」。
Cloud Shell 隨即開啟。
如要將雙區域仲裁從單一區域變更為雙區域,請輸入 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=ETAG:ETAG引數可用於樂觀並行控制。
如要查看仲裁人數變更作業的狀態,請執行 gcloud spanner databases describe 指令。quorumInfo 欄位提供作業相關資訊。
gcloud spanner databases describe DATABASE_ID
--instance=INSTANCE_ID
後續步驟
- 進一步瞭解雙區域執行個體設定。