クロスリージョン レプリケーションを操作する

このページでは、セカンダリ クラスタを作成して操作し、クロスリージョン レプリケーションを使用する方法について説明します。

クロスリージョン レプリケーションのコンセプトの概要については、クロスリージョン レプリケーションについてをご覧ください。

始める前に

  • 使用している Google Cloud プロジェクトで AlloyDB へのアクセスが有効になっている必要があります。
  • 使用している Google Cloud プロジェクトに、次のいずれかの IAM ロールが必要です。
    • roles/alloydb.admin(AlloyDB 管理者の事前定義 IAM ロール)
    • roles/owner(オーナーの基本 IAM ロール)
    • roles/editor(編集者の基本 IAM ロール)

    これらのロールを付与されていない場合は、組織管理者に連絡してアクセス権をリクエストしてください。

セカンダリ クラスタの作成

セカンダリ クラスタを作成すると、AlloyDB はポイントインタイム リカバリ(PITR)やバックアップ構成など、プライマリ クラスタ構成の一部をコピーしてセカンダリ クラスタに適用します。AlloyDB は、プライマリ クラスタに読み取りプール インスタンスがいくつ存在していても、セカンダリ クラスタの作成後に読み取りプール インスタンスを追加しません。

セカンダリ クラスタの作成後にプライマリ クラスタの構成を更新した場合、セカンダリ クラスタでは変更を使用できません。ただし、プライマリ クラスタで使用可能な最新の構成をセカンダリ クラスタに手動で更新できます。

プライマリ クラスタには最大 5 つのセカンダリ クラスタを作成できます。すべてのセカンダリ クラスタは、単一のプライマリ インスタンスから複製されます。セカンダリ クラスタを昇格させると、そのセカンダリ クラスタは独立したプライマリ クラスタになります。

次の図は、us-east4cluster-2 というセカンダリ クラスタを昇格させる方法を示しています。

セカンダリ クラスタを昇格させる例。

図 1: セカンダリ クラスタを昇格させる例。

AlloyDB セカンダリ クラスタとセカンダリ インスタンスを作成する手順は次のとおりです。

Console

  1. Google Cloud コンソール で、[クラスタ] ページに移動します。

    [クラスタ] に移動

  2. [リソース名] 列でクラスタをクリックします。

  3. [概要] ページで、[セカンダリ クラスタを作成] をクリックします。

  4. セカンダリ クラスタを構成します。

    1. [クラスタ ID] フィールドに、セカンダリ クラスタのリソース ID を入力します。
    2. プライマリ クラスタのリージョンとは異なるリージョンをセカンダリ クラスタに選択します。
    3. 暗号化方法としてデフォルトの Google 管理の暗号化または顧客管理の暗号鍵(CMEK)を選択し、セカンダリ クラスタを暗号化します。

    CMEK 鍵を使用してこのクラスタを暗号化する手順は次のとおりです。

    1. [高度な暗号化オプション] をクリックします。
    2. [顧客管理の暗号鍵(CMEK)] を選択します。
    3. 表示されたメニューから顧客管理の暗号鍵を選択します。

      Google Cloud コンソールでは、このリストは新しいクラスタと同じGoogle Cloud プロジェクトとリージョン内の鍵に限定されます。

      このリストにない鍵を使用する手順は次のとおりです。

      1. [鍵が表示されない場合は、鍵のリソース名を入力します。
      2. [鍵のリソース名] フィールドにリソース名を入力します。
      3. [保存] をクリックします。
      4. [続行] をクリックします。

    AlloyDB で CMEK 鍵を使用するには、追加の設定が必要です。詳細については、CMEK を使用するをご覧ください。

    関連付けられたプライマリ インスタンスが CMEK 鍵で暗号化されている場合は、セカンダリ クラスタも CMEK 鍵で暗号化する必要があります。

  5. セカンダリ インスタンスを構成します。

    1. [インスタンス ID] フィールドに、セカンダリ インスタンスのリソース ID を入力します。リソース ID はクラスタ内で一意である必要があります。
  6. [クラスタを作成] をクリックします。

gcloud

gcloud CLI を使用するには、Google Cloud CLI をインストールして初期化するか、Cloud Shell を使用します。

gcloud alloydb clusters create-secondary コマンドを次のように使用します。

 gcloud alloydb clusters create-secondary SECONDARY_CLUSTER_ID \
 --region=REGION_ID \
 --primary-cluster=projects/PROJECT_ID/locations/LOCATION_ID/clusters/ PRIMARY_CLUSTER_ID \
 gcloud alloydb instances create-secondary SECONDARY_INSTANCE_ID \
 --cluster=SECONDARY_CLUSTER_ID \
 --region=REGION_ID

次のように置き換えます。

  • SECONDARY_CLUSTER_ID: 作成するセカンダリ クラスタの ID。
  • SECONDARY_INSTANCE_ID: 作成するセカンダリ インスタンスの ID。
  • REGION_ID: セカンダリ クラスタのリージョンの ID(例: us-central1)。
  • PROJECT_ID: セカンダリ クラスタのプロジェクトの ID。
  • LOCATION_ID: プライマリ クラスタが配置されているロケーション(例: us-central1)。
  • PRIMARY_CLUSTER_ID: セカンダリ クラスタが関連付けられているプライマリ クラスタの ID。
  • SECONDARY_CLUSTER_ID: セカンダリ インスタンスが関連付けられているセカンダリ クラスタの ID。
  • ALLOWED_PROJECT(省略可): インスタンスへのアクセスを許可するプロジェクト ID またはプロジェクト番号のカンマ区切りリスト(例: my-project-112345my-project-n)。クラスタがインスタンスへの接続方法として Private Service Connect を使用している場合は、許可されるプロジェクトまたは番号のリストを設定する必要があります。
  • --no-enable-automated-backup(省略可): セカンダリ クラスタでの自動バックアップの作成を無効にします。

Private Service Connect 対応のセカンダリ クラスタとインスタンスを作成するには、クラスタの作成時に --enable-private-service-connect フラグを追加し、--allowed-psc-projects フラグを追加して、インスタンスへのアクセスを許可するプロジェクト ID またはプロジェクト番号のカンマ区切りリストを設定します(例: my-project-112345my-project-n)。

 gcloud alloydb clusters create-secondary SECONDARY_CLUSTER_ID \
 --region=REGION_ID \
 --primary-cluster=projects/PROJECT_ID/locations/LOCATION_ID/clusters/ PRIMARY_CLUSTER_ID \
 --enable-private-service-connect
 gcloud alloydb instances create-secondary SECONDARY_INSTANCE_ID \
 --cluster=SECONDARY_CLUSTER_ID \
 --region=REGION_ID \
 --allowed-psc-projects=ALLOWED_PROJECT_LIST

次のように置き換えます。

  • ALLOWED_PROJECT(省略可): インスタンスへのアクセスを許可するプロジェクト ID またはプロジェクト番号のカンマ区切りリスト(例: my-project-112345my-project-n)。クラスタがインスタンスへの接続方法として Private Service Connect を使用している場合は、許可するプロジェクトまたは番号のリストを設定する必要があります。

パブリック IP 対応クラスタのセカンダリ インスタンスを作成するには、--assign-inbound-public-ip=ASSIGN_IPV4 パラメータを追加します。

 gcloud alloydb instances create-secondary SECONDARY_INSTANCE_ID \
 --cluster=SECONDARY_CLUSTER_ID \
 --region=REGION_ID \
  --assign-inbound-public-ip=ASSIGN_IPV4

必要に応じて、64.233.160.0/16 などの CIDR ブロックのカンマ区切りのリストを --authorized-external-networks パラメータに渡して、インスタンスに承認済み外部ネットワークを設定します。

セカンダリ クラスタを表示する

AlloyDB セカンダリ クラスタの詳細情報を表示する手順は次のとおりです。

  1. Google Cloud コンソール で、[クラスタ] ページに移動します。

    [クラスタ] に移動

  2. [リソース名] 列でセカンダリ クラスタをクリックします。

  3. [概要] ページで、セカンダリ クラスタの詳細をすべて表示します。

セカンダリ インスタンスを更新する

セカンダリ インスタンスを更新して、データベース フラグを追加、変更、削除できます。セカンダリ インスタンスのマシンタイプをスケーリングすることもできます。

セカンダリ インスタンスでデータベース フラグを構成する

データベース フラグを追加、変更、削除する手順は次のとおりです。

Console

  1. Google Cloud コンソール で、[クラスタ] ページに移動します。

    [クラスタ] に移動

  2. [リソース名] 列で、変更するセカンダリ クラスタをクリックします。

  3. [概要] ページで [クラスタ内のインスタンス] に移動し、セカンダリ インスタンスを選択して、[セカンダリを編集] をクリックします。

  4. インスタンスからデータベース フラグを追加、変更、削除します。

    フラグを追加する

    1. インスタンスにデータベース フラグを追加するには、[フラグを追加] をクリックします。
    2. [新しいデータベース フラグ] リストからフラグを選択します。
    3. フラグの値を指定します。
    4. [完了] をクリックします。

    フラグを変更する

    1. インスタンスにあるデータベース フラグを変更するには、データベース フラグを展開し、[データベース フラグを編集] セクションで既存のフラグの値を変更します。
    2. [完了] をクリックします。

    フラグを削除する

    1. インスタンスからデータベース フラグを削除するには、フラグを選択して削除アイコンをクリックします。
    2. [完了] をクリックします。
  5. [セカンダリを更新] をクリックします。

gcloud

セカンダリ インスタンスのデータベース フラグを変更するには、gcloud alloydb instances update コマンドを使用します。

 gcloud alloydb instances update SECONDARY_INSTANCE_ID \
  --database-flags FLAGS_LIST \
  --region=REGION_ID \
  --cluster=CLUSTER_ID \
  --project=PROJECT_ID

次のように置き換えます。

  • SECONDARY_INSTANCE_ID: セカンダリ インスタンスの ID。
  • FLAGS_LIST: 1 つ以上のデータベース フラグ仕様のカンマ区切りリスト。各仕様は、フラグの名前、等号(=)、フラグに割り当てる値で構成されます。値を受け取らないデータベース フラグの場合は、フラグ名の後に等号(=)を付けます。
  • REGION_ID: セカンダリ インスタンスが配置されているリージョン(例: us-central1)。
  • CLUSTER_ID: セカンダリ インスタンスが配置されているクラスタの ID。
  • PROJECT_ID: セカンダリ クラスタが配置されるプロジェクトの ID。

セカンダリ インスタンスのマシンタイプをスケーリングする

セカンダリ インスタンスのマシンタイプをスケーリングする手順は次のとおりです。

Console

  1. Google Cloud コンソール で、[クラスタ] ページに移動します。

    クラスタに移動

  2. [リソース名] 列で、変更するセカンダリ クラスタをクリックします。

  3. [概要] ページで [クラスタ内のインスタンス] セクションに移動し、[セカンダリを編集] をクリックします。

    ページでクラスタのステータスメンテナンスと報告されている場合、このアクションは使用できません。[ステータス] が [準備完了] に変わると、アクションが再度使用できるようになります。

  4. マシンタイプを選択します。

  5. [セカンダリを更新] をクリックします。

gcloud

gcloud alloydb instances update コマンドを使用して、セカンダリ インスタンスのマシンタイプを変更します。

 gcloud alloydb instances update SECONDARY_INSTANCE_ID \
  --cpu-count=CPU_COUNT \
  --region=REGION_ID \
  --cluster=CLUSTER_ID \
  --project=PROJECT_ID

次のように置き換えます。

  • SECONDARY_INSTANCE_ID: 更新するセカンダリ インスタンスの ID。
  • CPU_COUNT: インスタンスに必要な vCPU の数。有効な値は次のとおりです。

    • 2(2 個の vCPU、16 GB RAM)
    • 4(4 個の vCPU、32 GB RAM)
    • 8(8 個の vCPU、64 GB RAM)
    • 16(16 個の vCPU、128 GB RAM)
    • 32(32 個の vCPU、256 GB RAM)
    • 64(64 個の vCPU、512 GB RAM)
  • REGION_ID: インスタンスが配置されるリージョン。

  • CLUSTER_ID: インスタンスが配置されているクラスタの ID。

  • PROJECT_ID: クラスタが配置されるプロジェクトの ID。

コマンドから「invalid cluster state MAINTENANCE」というフレーズを含むエラー メッセージが返された場合は、クラスタが定期メンテナンス中です。これにより、インスタンスの再構成が一時的に禁止されます。クラスタが READY 状態に戻ったら、コマンドをもう一度実行します。

クラスタのステータスを確認するには、クラスタの詳細を表示するをご覧ください。

読み取りプール インスタンスをセカンダリ クラスタに追加する

セカンダリ クラスタに読み取りプール インスタンスを追加する手順は次のとおりです。

  1. Google Cloud コンソール で、[クラスタ] ページに移動します。

    [クラスタ] に移動

  2. [リソース名] 列で、読み取りプール インスタンスを追加するセカンダリ クラスタをクリックします。

  3. [概要] ページの [クラスタ内のインスタンス] セクションに移動し、[読み取りプールを追加] をクリックします。

  4. 読み取りプール インスタンスを構成します。

    1. [読み取りプール インスタンス ID] フィールドに、読み取りプール インスタンスの ID を入力します。
    2. [ノード数] フィールドにノード数を入力します。読み取りプール インスタンス内のノードの数によって、インスタンスの全体的なコンピューティング容量が決まります。クラスタ内のすべての読み取りプール インスタンスに最大 20 個のノードを配置できます。
    3. マシンタイプを選択します。
    4. 省略可: インスタンスにカスタムフラグを設定します。フラグごとに、次の操作を行います。

      1. [フラグを追加] をクリックします。
      2. [新しいデータベース フラグ] リストからフラグを選択します。
      3. フラグの値を指定します。
      4. [完了] をクリックします。
  5. [読み取りプールを追加] をクリックします。

セカンダリ クラスタを昇格させる

セカンダリ クラスタを昇格させる前に、次の手順で、セカンダリ クラスタがプライマリ クラスタから受け取ったすべてのトランザクションを適用していることを確認します。

  1. プライマリ クラスタへの書き込みをすべて停止します。
  2. 次の手順で、セカンダリ クラスタのレプリケーション ステータスを確認します。

    1. Google Cloud コンソール で、[クラスタ] ページに移動します。

      [クラスタ] に移動

    2. クラスタのリストで、昇格するセカンダリ クラスタの名前をクリックします。

    3. クラスタの詳細ページで、[モニタリング] をクリックします。

    4. [Monitoring] リストで、セカンダリ インスタンスを選択します。リストには [Secondary: INSTANCE_NAME] と表示されます。

    5. 指標のリストで、[プライマリ インスタンスからのレプリケーション ラグ] グラフを見つけます。

    6. グラフに遅延が最小限に抑えられていることをご確認ください。

      ラグ値は 0 が理想的です。遅延が 0 を超える場合でも、セカンダリ クラスタを昇格できますが、プライマリ クラスタですでに commit されている最近のトランザクションが失われるリスクがあります。

    7. 指標のリストで、[レプリケーション ステータス] グラフを見つけます。

    8. グラフに表示されるすべてのノードの値が streaming であることを確認します。

セカンダリ クラスタをプライマリ クラスタに昇格させる手順は次のとおりです。

Console

  1. Google Cloud コンソール で、[クラスタ] ページに移動します。

    [クラスタ] に移動

  2. [リソース名] 列で、プライマリ クラスタとして昇格するセカンダリ クラスタをクリックします。

  3. [概要] ページで、[クラスタを昇格] をクリックします。

  4. 表示されたダイアログで、セカンダリ クラスタ ID を入力して、クラスタを昇格することを確認します。

  5. [プロモート] をクリックします。

    クラスタが昇格すると、[概要] ページの [タイプ: セカンダリ クラスタ(高可用性)] フィールドが [タイプ: 高可用性(読み取りプールあり)] に更新されます。

gcloud

gcloud alloydb clusters promote コマンドを使用します。

 gcloud alloydb clusters promote SECONDARY_CLUSTER_ID \
 --region=REGION_ID \
 --project=PROJECT_ID \

次のように置き換えます。

  • SECONDARY_CLUSTER_ID: 昇格させるセカンダリ クラスタの ID。
  • REGION_ID: セカンダリ クラスタのリージョンの ID(us-central1 など)。
  • PROJECT_ID: セカンダリ クラスタのプロジェクトの ID。

切り替えを行う

スイッチオーバーを実行する前に、プライマリ インスタンスとセカンダリ インスタンスが属するすべてのリージョンがオンラインであり、インスタンスが正常な状態であることを確認します。詳細については、AlloyDB システム分析情報ダッシュボードを使用してインスタンスをモニタリングするをご覧ください。

複数のセカンダリ クラスタがある場合に切り替えを行うと、次の変更が行われます。

  • スイッチオーバー コマンドを受け取ったセカンダリ クラスタがプライマリ クラスタになります。
  • 以前のプライマリ クラスタはセカンダリ クラスタになり、新しいプライマリ クラスタからレプリケートされます。
  • 他のすべてのセカンダリ クラスタは、新しいプライマリ クラスタからのレプリケーションに切り替わります。

次の図は、us-central1cluster-1 から us-east4cluster-2 への切り替えを示しています。

2 つのセカンダリ クラスタのいずれかに切り替える例。

図 2. 2 つのセカンダリ クラスタのいずれかに切り替える例。

スイッチオーバーを行う手順は次のとおりです。

Console

  1. Google Cloud コンソール で、[クラスタ] ページに移動します。

    [クラスタ] に移動

  2. [リソース名] 列で、プライマリ クラスタとして切り替えるセカンダリ クラスタをクリックします。

  3. [概要] ページで [切り替え] をクリックします。

  4. 表示されたダイアログで、セカンダリ クラスタ ID を入力して、クラスタの切り替えを確定します。

  5. [切り替え] をクリックします。

クラスタが切り替えられると、[概要] ページの [タイプ: セカンダリ クラスタ] フィールドが [クラスタタイプ: プライマリ クラスタ] と [クラスタタイプ: セカンダリ クラスタ] に更新されます。

gcloud

gcloud alloydb clusters switchover コマンドを使用します。

 gcloud alloydb clusters switchover SECONDARY_CLUSTER_ID \
   --region=REGION_ID \
   --project=PROJECT_ID \

次のように置き換えます。

  • SECONDARY_CLUSTER_ID: 昇格させるセカンダリ クラスタの ID。
  • REGION_ID: セカンダリ クラスタのリージョンの ID(us-central1 など)。
  • PROJECT_ID: セカンダリ クラスタのプロジェクトの ID。

次のステップ