このページでは、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 メソッドと URL:
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: インスタンス IDDATABASE: データベース 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: データベースの永続的な識別子。INSTANCE_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: データベースの永続的な識別子。INSTANCE_ID: インスタンスの永続的な識別子。
オプションのフラグ:
--etag=ETAG:ETAG引数は、オプティミスティックな同時実行制御に使用できます。
クォーラム変更オペレーションのステータスを確認するには、gcloud spanner databases describe コマンドを実行します。quorumInfo フィールドに、オペレーションに関する情報が格納されます。
gcloud spanner databases describe DATABASE_ID
    --instance=INSTANCE_ID
次のステップ
- デュアルリージョン インスタンス構成について学習する。