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

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

論理レプリケーションを有効にする

  1. Google Cloud コンソールで Cloud SQL に移動します。

  2. Cloud SQL インスタンスを開き、[編集] をクリックします。

  3. [フラグ] セクションに移動します。

  4. [フラグを追加] をクリックします。

  5. プルダウン メニューから cloudsql.logical_decoding フラグを選択します。

  6. フラグの値を [on] に設定します。

  7. [保存] をクリックして、変更を保存します。インスタンスに変更を反映させるには、インスタンスを再起動する必要があります。

  8. インスタンスを再起動したら、[概要] ページの [データベース フラグ] で変更を確認します。

パブリケーションとレプリケーション スロットを作成する

  1. レプリケーション スロットを作成する十分な権限を持つユーザーとしてデータベースに接続します。それ以外の場合は、次のコマンドを実行します。

    ALTER USER USER_NAME WITH REPLICATION;
    

    以下を置き換えます。

    • USER_NAME: レプリケーション権限を付与するユーザーの名前。
  2. パブリケーションを作成する複製するテーブルに対してのみパブリケーションを作成することをおすすめします。これにより、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;
    
  3. 次の SQL コマンドを入力して、レプリケーション スロットを作成します。

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

    以下を置き換えます。

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

Datastream ユーザーを作成する

  1. PostgreSQL クライアントを使用してデータベースに接続します。

  2. 次の PostgreSQL コマンドを入力します。

    CREATE USER USER_NAME WITH REPLICATION LOGIN PASSWORD 'USER_PASSWORD';

    以下を置き換えます。

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

    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: 権限を付与するユーザー。