AlloyDB for PostgreSQL データベースを構成する

以下のセクションでは、AlloyDB for PostgreSQL データベースを構成する方法について説明します。

Datastream と AlloyDB 間の接続を設定する

Datastream が AlloyDB インスタンスに接続できるようにするには、コンシューマ プロジェクトで TCP プロキシを設定する必要があります。TCP プロキシ イメージは、すべてのお客様に一般公開されています。

  1. プロキシ コンテナの起動:

    1. ユーザー プロジェクトで Cloud Shell を有効にします。
    2. 次のスクリプトを実行して、TCP プロキシを作成します。
    gcloud compute instances create-with-container \
      --zone=REGION_ID VM_NAME \
      --container-image gcr.io/dms-images/tcp-proxy \
      --tags=dms-tcp-proxy \
      --container-env=SOURCE_CONFIG=ALLOYDB_IP:ALLOYDB_PORT \
      --can-ip-forward \
      --network=SOURCE_AND_DEST_VPC \
      --machine-type=VM_TIER
    

    以下を置き換えます。

    • REGION_ID: TCP プロキシを作成するリージョン。
    • VM_NAME: 仮想マシンの名前。
    • ALLOYDB_IP: AlloyDB for PostgreSQL インスタンスの IP アドレス。
    • ALLOYDB_PORT: AlloyDB for PostgreSQL インスタンスのポート番号。
    • SOURCE_AND_DEST_VPC: 送信元と宛先が接続される VPC ネットワーク。
    • VM_TIER: 仮想マシンのタイプ。

    更新後のパラメータを含んだコマンドの例:

    gcloud compute instances create-with-container \
      --zone=us-central1-c ds-tcp-proxy \
      --container-image gcr.io/dms-images/tcp-proxy \
      --tags=ds-tcp-proxy \
      --container-env=SOURCE_CONFIG=10.16.0.5:5432 \
      --can-ip-forward \
      --network=default \
      --machine-type=e2-micro
    
  2. 以下の入力を使用してスクリプトを実行し、TCP プロキシの IP アドレスを出力します。

    gcloud compute instances describe VM_NAME \
      --format="yaml(networkInterfaces[].networkIP)" \
      --zone=REGION_ID
    

    以下を置き換えます。

    • VM_NAME: 仮想マシンの名前。
    • REGION_ID: TCP プロキシを作成したリージョン。
  3. (省略可)TCP プロキシへの上り(内向き)トラフィックを制限するファイアウォール ルールを作成します。

    gcloud compute firewall-rules create FIREWALL_RULE_NAME \
      --direction=INGRESS \
      --priority=1000 \
      --target-tags=dms-tcp-proxy \
      --network=SOURCE_VPC \
      --action=ALLOW \
      --rules=tcp:ALLOYDB_PORT \
      --source-ranges=IP_RANGE
    

    以下を置き換えます。

    • FIREWALL_RULE_NAME: ファイアウォール ルールの名前
    • SOURCE_VPC: ソースが接続されている VPC ネットワーク。
    • ALLOYDB_PORT: AlloyDB for PostgreSQL インスタンスのポート番号。
    • IP_RANGE: 上り(内向き)トラフィックを制限する IP アドレス範囲。

    すべての IP アドレスからの上り(内向き)トラフィックを許可するコマンドの例:

    gcloud compute firewall-rules create ds-proxy1 \
      --direction=INGRESS \
      --priority=1000 \
      --target-tags=ds-tcp-proxy \
      --network=default \
      --action=ALLOW \
      --rules=tcp:5432
    

レプリケーション用に AlloyDB を構成する

  1. AlloyDB プライマリ インスタンスの論理デコードを有効にします。Google Cloud で、alloydb.logical_decoding フラグの値を [ON] に設定します。データベース フラグの更新については、インスタンスのデータベース フラグを構成するをご覧ください。

  2. 同じ VPC 上の任意の VM から次のコマンドを実行して、TCP プロキシ IP アドレスを使用して AlloyDB インスタンスに接続します。

      psql -h PROXY_IP \
        -U DB_USER \
        -d DB_NAME
    

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

    • PROXY_IP: TCP プロキシの IP アドレス。
    • DB_USER: AlloyDB データベースのユーザー名。
    • DB_NAME: AlloyDB データベース名。
  3. 次のコマンドを実行して、データベース ユーザーにレプリケーションの権限を付与します。

    ALTER USER DB_USER WITH REPLICATION;
    
  4. パブリケーションを作成する複製するテーブルに対してのみパブリケーションを作成することをおすすめします。これにより、Datastream は関連データを読み取り専用できるようになり、データベースと Datastream の負荷が軽減されます。

    CREATE PUBLICATION PUBLICATION_NAME
    FOR TABLE SCHEMA1.TABLE1, SCHEMA2.TABLE2;

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

    • PUBLICATION_NAME: パブリケーションの名前。Datastream ストリーム作成ウィザードでストリームを作成するときに、この名前を指定する必要があります。
    • SCHEMA: テーブルを含むスキーマの名前。
    • TABLE: 複製するテーブルの名前。

    パブリケーションは、スキーマ内のすべてのテーブルのパブリケーションを作成できます。この方法では、今後作成するテーブルを含め、指定されたスキーマリストにあるテーブルに対する変更を複製できます。

    CREATE PUBLICATION PUBLICATION_NAME
    FOR TABLES IN SCHEMA1, SCHEMA2;

    データベース内のすべてのテーブルのパブリケーションを作成することもできます。この方法では、移行元データベースと Datastream の両方の負荷が増加します。

    CREATE PUBLICATION PUBLICATION_NAME FOR ALL TABLES;
    
  5. 次のコマンドを実行して、レプリケーション スロットを作成します。

    SELECT PG_CREATE_LOGICAL_REPLICATION_SLOT('REPLICATION_SLOT_NAME', 'pgoutput');
    

    以下を置き換えます。

    • REPLICATION_SLOT_NAME: レプリケーション スロットの名前。 Datastream ストリーム作成ウィザードでストリームを作成するときに、この名前を指定する必要があります。

Datastream ユーザーを作成する

  1. Datastream ユーザーを作成するには、次の PostgreSQL コマンドを入力します。

    CREATE USER USER_NAME WITH REPLICATION LOGIN PASSWORD 'USER_PASSWORD';
    

    以下を置き換えます。

    • USER_NAME: 作成する Datastream ユーザーの名前。
    • USER_PASSWORD: 作成する Datastream ユーザーのログイン パスワード。
  2. 作成したユーザーに次の権限を付与します。

    GRANT SELECT ON ALL TABLES IN SCHEMA SCHEMA_NAME TO USER_NAME;
    GRANT USAGE ON SCHEMA SCHEMA_NAME TO USER_NAME;
    ALTER DEFAULT PRIVILEGES IN SCHEMA SCHEMA_NAME GRANT SELECT ON TABLES TO USER_NAME;
    

    以下を置き換えます。

    • SCHEMA_NAME: 権限を付与するスキーマの名前。
    • USER_NAME: 権限を付与するユーザー。