メインコンテンツへスキップ
このガイドでは、Postgres のネイティブな論理レプリケーションを使用して PostgreSQL データベースを ClickHouse Managed Postgres に移行する方法を、手順を追って説明します。

前提条件

  • ソース PostgreSQL データベースにアクセスできること。
  • psql,pg_dumppg_restore がローカルマシンにインストールされていること。これらは、ターゲットデータベースに空のテーブルを作成するために使用します。通常は PostgreSQL のインストールに含まれています。含まれていない場合は、PostgreSQL 公式サイト からダウンロードできます。
  • ソースデータベースが ClickHouse Managed Postgres からアクセス可能である必要があります。この接続を許可するために必要なファイアウォールルールまたはセキュリティグループの設定を確認してください。Managed Postgres インスタンスの送信元 IP は、次のように確認できます。
dig +short <your-managed-postgres-hostname>

セットアップ

論理レプリケーションを機能させるには、ソースデータベースが正しく設定されていることを確認する必要があります。主な要件は次のとおりです。
  • ソースデータベースでは、wal_levellogical に設定する必要があります。
  • ソースデータベースでは、max_replication_slots を少なくとも 1 に設定する必要があります。
  • RDS (このガイドでは例として使用) では、パラメータグループで rds.logical_replication1 に設定されていることを確認する必要があります。
  • ソースデータベースのユーザーには、REPLICATION 権限が必要です。RDS の場合は、次を実行します。
    GRANT rds_replication TO <your-username>;
    
  • 移行先データベースに使用するロールには、移行先データベースのオブジェクトに対する書き込み権限が必要です。
    GRANT USAGE ON SCHEMA <schema_i> TO subscriber_user;
    GRANT CREATE ON DATABASE destination_db TO subscriber_user;
    GRANT pg_create_subscription TO subscriber_user;
    
    -- テーブル権限を付与
    GRANT INSERT, UPDATE, DELETE, TRUNCATE ON ALL TABLES IN SCHEMA <schema_i> TO subscriber_user;
    
ソースデータベースが次のように設定されていることを確認してください。

ソースデータベースのスキーマのみをダンプする

論理レプリケーションを設定する前に、移行先データベースの ClickHouse Managed Postgres データベースにスキーマを作成する必要があります。これには、pg_dump を使用してソースデータベースのスキーマのみのダンプを作成します。
pg_dump \
    -d 'postgresql://<user>:<password>@<host>:<port>/<database>' \
    -s \
    --format directory \
    -f rds-dump
ここでの各項目は次のとおりです。
  • <user><password><host><port><database> は、ソースデータベースの認証情報に置き換えてください。
  • -s は、スキーマのみのダンプを取得することを指定します。
  • --format directory は、ダンプをディレクトリフォーマットで出力することを指定します。これは pg_restore に適しています。
  • -f rds-dump は、ダンプファイルの出力先ディレクトリを指定します。このディレクトリは自動的に作成されるため、事前に存在していない必要があります。
この例では、eventsusers の 2 つのテーブルがあります。events には 100 万行、users には 1,000 行あります。

Managed Postgres インスタンスを作成する

まず、Managed Postgres インスタンスが用意されていることを確認してください。可能であれば、ソースと同じリージョンに配置することをおすすめします。手順については、こちらのクイックガイドを参照してください。このガイドでは、次の構成を作成します。

スキーマを ClickHouse Managed Postgres に復元する

スキーマダンプの準備ができたので、pg_restore を使ってこれを ClickHouse Managed Postgres インスタンスに復元できます。
pg_restore \
    -d 'postgresql://<user>:<password>@<host>:<port>/<database>' \
    --verbose \
    rds-dump
ここでは:
  • <user><password><host><port><database> を、移行先の ClickHouse Managed Postgres データベースの認証情報に置き換えます。
  • --verbose は、restore 処理中の詳細な出力を表示します。 このコマンドは、データを含めずに、移行先データベース内にすべてのテーブル、索引、ビュー、その他のスキーマオブジェクトを作成します。
この例では、このコマンドを実行すると 2 つのテーブルが作成され、どちらも空の状態になります:

論理レプリケーションを設定する

スキーマの準備が整ったら、ソースデータベースから移行先の ClickHouse Managed Postgres データベースへの論理レプリケーションを設定します。これには、ソースデータベースで publication を作成し、移行先データベースで subscription を作成します。

ソースデータベースで publication を作成する

ソースの PostgreSQL データベースに接続し、複製するテーブルを含む publication を作成します。
CREATE PUBLICATION <pub_name> FOR TABLE table1, table2...;
publication を FOR ALL TABLES で作成すると、テーブル数が多い場合にネットワーク負荷が生じることがあります。レプリケートするテーブルだけを指定することをお勧めします。

移行先データベースのClickHouse Managed Postgresデータベースにsubscriptionを作成する

次に、移行先データベースのClickHouse Managed Postgresデータベースに接続し、ソースデータベースのpublicationに接続するsubscriptionを作成します。
CREATE SUBSCRIPTION demo_rds_subscription
CONNECTION 'postgresql://<user>:<password>@<host>:<port>/<database>'
PUBLICATION <pub_name_you_entered_above>;
これにより、ソースデータベース上にレプリケーションスロットが自動的に自動作成され、指定したテーブルから移行先データベースへのデータのレプリケーションが開始されます。データ量によっては、この処理に時間がかかる場合があります。 この例では、subscriptionの設定後、データが流入しました。 以降、ソースデータベースに新たに挿入された行は、ほぼリアルタイムで移行先データベースの ClickHouse Managed Postgres データベースにレプリケートされます。

注意事項と考慮点

  • 論理レプリケーションで複製されるのは、データの変更 (INSERT、UPDATE、DELETE) のみです。スキーマの変更 (ALTER TABLE など) は別途対応する必要があります。
  • レプリケーションの中断を避けるため、ソースデータベースと移行先データベース間のネットワーク接続が安定していることを確認してください。
  • 移行先データベースがソースデータベースに追従できていることを確認するため、レプリケーションの遅延を監視してください。ソースデータベースで max_slot_wal_keep_size に適切な値を設定すると、増大するレプリケーションスロットを管理しやすくなり、ディスク容量の過剰な消費を防げます。
  • ユースケースによっては、レプリケーション処理に対する監視やアラートを設定するとよいでしょう。

次のステップ

おめでとうございます。pg_dump と pg_restore を使用して、PostgreSQL データベースを ClickHouse Managed Postgres へ正常に移行できました。これで、Managed Postgres の機能や ClickHouse とのインテグレーションを試す準備は万全です。まずは 10 分で始められるクイックスタートをご覧ください。
最終更新日 2026年6月10日