本頁說明如何檢查 Spanner 雙區間仲裁機制之健康狀態,以及如何在服務中斷時手動變更仲裁機制。
如要進一步瞭解雙區域,請參閱 Spanner 的「雙區域執行個體設定」。
檢查雙區域仲裁狀態
您可以透過下列方式查看雙區法定數的狀態:
在「資料庫」總覽頁面上
前往 Google Cloud 控制台的「Spanner 執行個體」頁面。
按一下雙區域設定中的執行個體名稱。
按一下資料庫名稱。
在「總覽」下方,找出「仲裁」列,該列會顯示執行個體的雙區域仲裁狀態:
如果兩個區域都符合仲裁要求,狀態會顯示「雙區域」。
如果已執行手動或 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
:您要檢查的雙區域中區域的位置。
在您選擇的開發環境中執行指令碼。詳情請參閱「安裝 Google Cloud CLI 並設定 Spanner API」。
如果區域處於不健康狀態且發生容錯移轉,請手動回復。
將雙區域仲裁設定從雙區域變更為單一區域 (容錯)
如要手動容錯,以因應區域性服務中斷或網路分割問題,請按照下列步驟操作:
Google Cloud 控制台
前往 Google Cloud 控制台的「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 執行個體」頁面。
按一下雙區域設定中的執行個體名稱。
按一下導覽選單中的「系統深入分析」。
找出「雙區域仲裁健康狀態時間軸」指標。
在雙區域仲裁健康狀態時間軸上,按一下「變更區域仲裁」。
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
後續步驟
- 進一步瞭解雙區域執行個體設定。