メインコンテンツへスキップ
メインコンテンツへスキップ

PlanetScale for Postgres ソースセットアップガイド

参考文献

PlanetScale for Postgres は現在 早期アクセス 段階です。

サポートされている Postgres バージョン

ClickPipes は Postgres バージョン 12 以降に対応しています。

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

  1. Postgres インスタンスでレプリケーションを有効にするには、次の設定が行われていることを確認する必要があります:

    wal_level = logical
    

    設定値を確認するには、次の SQL コマンドを実行します:

    SHOW wal_level;
    

    出力はデフォルトで logical になっているはずです。そうでない場合は、PlanetScale コンソールにログインし、Cluster configuration->Parameters に移動して、Write-ahead log セクションまでスクロールし、そこで変更します。

PlanetScale コンソールで wal_level を調整する
注記

PlanetScale コンソールでこの設定を変更すると、再起動が発生します。

  1. さらに、max_slot_wal_keep_size の設定値をデフォルトの 4GB から増やすことを推奨します。これも PlanetScale コンソールから、Cluster configuration->Parameters に移動し、Write-ahead log セクションまでスクロールして実施します。新しい値を決める際の参考として、こちらを参照してください。
PlanetScale コンソールで max_slot_wal_keep_size を調整する

権限とパブリケーションを持つユーザーの作成

デフォルトの postgres.<...> ユーザーを使用して PlanetScale Postgres インスタンスに接続し、次のコマンドを実行します。

  1. ClickPipes 専用のユーザーを作成します:

    CREATE USER clickpipes_user PASSWORD 'some-password';
    
  2. 前の手順で作成したユーザーに対して、スキーマ単位の読み取り専用アクセス権を付与します。次の例では、public スキーマに対する権限を示しています。レプリケーションしたいテーブルを含む各スキーマに対して、これらのコマンドを繰り返してください。

    GRANT USAGE ON SCHEMA "public" TO clickpipes_user;
    GRANT SELECT ON ALL TABLES IN SCHEMA "public" TO clickpipes_user;
    ALTER DEFAULT PRIVILEGES IN SCHEMA "public" GRANT SELECT ON TABLES TO clickpipes_user;
    
  3. ユーザーにレプリケーション権限を付与します:

    GRANT rds_replication TO clickpipes_user;
    
  4. レプリケーションしたいテーブルを含むパブリケーションを作成します。パフォーマンスへの余分な負荷を避けるため、パブリケーションには必要なテーブルのみを含めることを強く推奨します。

    注記

    パブリケーションに含めるすべてのテーブルは、primary key が定義されているか、replica identityFULL に設定されている必要があります。スコープ設定の指針については、Postgres FAQs を参照してください。

    • 特定のテーブルに対するパブリケーションを作成するには:

      CREATE PUBLICATION clickpipes FOR TABLE table_to_replicate, table_to_replicate2;
      
    • 特定スキーマ内のすべてのテーブルに対するパブリケーションを作成するには:

      CREATE PUBLICATION clickpipes FOR TABLES IN SCHEMA "public";
      

    clickpipes パブリケーションには、指定したテーブルから生成される変更イベント群が含まれ、後でレプリケーション・ストリームを取り込むために使用されます。

注意事項

  1. PlanetScale Postgres に接続するには、上で作成したユーザー名に現在のブランチ名を付加する必要があります。たとえば、作成したユーザーが clickpipes_user という名前だった場合、ClickPipe 作成時に指定する実際のユーザー名は clickpipes_user.branch とする必要があります。このとき branch は、現在の PlanetScale Postgres のブランチの "id" を指します。これを手早く確認するには、先ほどユーザー作成に使用した postgres ユーザーのユーザー名を参照してください。ピリオド以降の部分がブランチ ID になります。
  2. PlanetScale Postgres に接続する CDC パイプには PSBouncer ポート(現在 6432)を使用しないでください。通常のポート 5432 を使用する必要があります。初回ロード専用のパイプであれば、どちらのポートも使用できます。
  3. 必ずプライマリインスタンスのみに接続していることを確認してください。レプリカインスタンスへの接続は現在サポートされていません。

次のステップ

これで、ClickPipe を作成し、Postgres インスタンスから ClickHouse Cloud へデータの取り込みを開始できます。 ClickPipe を作成する際に利用するため、Postgres インスタンスのセットアップ時に使用した接続情報を必ず控えておいてください。