このガイドでは、pg_dump および pg_restore ユーティリティを使用して PostgreSQL データベースを ClickHouse Managed Postgres に移行する方法を、順を追って説明します。
前提条件
- 移行元の PostgreSQL データベースにアクセスできること。
- ローカルマシンに
pg_dumpとpg_restoreがインストールされていること。通常、これらは PostgreSQL のインストールに含まれています。含まれていない場合は、PostgreSQL 公式サイト からダウンロードできます。
セットアップ
以降の手順では、ソースデータベースとしてサンプルの RDS Postgres データベースを使用します。次のような構成です。

今回扱う構成は次のとおりです。
- 2 つのテーブル
eventsとusersがあります。eventsには 100 万行、usersには 1,000 行あります。 eventsには索引があります。eventsテーブルの上にビューがあります。- シーケンスがいくつかあります。
移行元データベースのダンプを作成する
それでは、pg_dump を使って上記のオブジェクトのダンプファイルを作成します。コマンドはシンプルです。
pg_dump \
-d 'postgresql://<user>:<password>@<host>:<port>/<database>' \
--format directory \
-f rds-dump以下のとおりです。
<user>、<password>、<host>、<port>、<database>は、ソースデータベースの認証情報に置き換えてください。ほとんどの Postgres プロバイダーでは、そのまま使える接続文字列が提供されます。--format directoryは、ダンプをディレクトリ形式で出力することを指定します。これはpg_restoreに適した形式です。-f rds-dumpは、ダンプファイルの出力先ディレクトリを指定します。このディレクトリは自動的に作成されるため、事前に存在していてはいけません。--jobsフラグの後に実行する並列ジョブ数を指定すると、ダンプ処理を並列化することもできます。詳細は pg_dump documentation を参照してください。
このコマンドを実行すると、次のようになります。

ダンプを ClickHouse Managed Postgres に移行する
ダンプファイルの準備ができたので、pg_restore を使用して ClickHouse Managed Postgres インスタンスに復元できます。
ClickHouse Managed Postgres インスタンスを作成する
まず、ClickHouse Managed Postgres インスタンスを用意しておいてください。できれば、ソースと同じリージョンに配置することをおすすめします。こちらのクイックガイドを参照してください。このガイドでは、次の構成を立ち上げます。

ダンプを復元する
それではローカルマシンに戻って、pg_restore コマンドを使用し、ダンプを ClickHouse Managed Postgres インスタンスに復元します。
pg_restore \
-d 'postgresql://<user>:<password>@<pg_clickhouse_host>:5432/<database>' \
--verbose \
rds-dumpClickHouse Managed Postgres インスタンスの接続文字列は、ClickHouse Cloud コンソールから取得できます。非常にわかりやすく説明したこちらもご覧ください。
ここでも、いくつか確認しておきたいフラグがあります。
--verboseは、復元処理中に詳細な出力を表示します。- ここでも
--jobsフラグを使用して、復元処理を並列化できます。詳細は、pg_restore documentationを参照してください。
この例では、次のようになります。

移行を確認する
復元プロセスが完了したら、ClickHouse Managed Postgres インスタンスに接続し、すべてのデータとオブジェクトが正常に移行されたことを確認できます。接続してクエリを実行するには、任意の PostgreSQL クライアントを使用できます。 移行後の ClickHouse Managed Postgres のセットアップは次のようになります。

すべてのテーブル、索引、ビュー、シーケンスがそのまま維持されており、データ件数も一致していることがわかります。
考慮事項
- 移行元と移行先のデータベースで使用している PostgreSQL のバージョンに互換性があることを確認してください。
ソースサーバーより古いバージョンの
pg_dumpを使用すると、一部の機能が含まれなかったり、復元時に問題が発生したりする可能性があります。理想的には、ソースデータベースと同じ、またはそれより新しいメジャーバージョンのpg_dumpを使用してください。 - 大規模なデータベースでは、ダンプと復元にかなりの時間がかかることがあります。
ダウンタイムを最小限に抑えられるよう事前に計画し、サポートされている場合は並列ダンプ / 復元 (
--jobs) の使用を検討してください。 pg_dump/pg_restoreでは、データベースに関連するすべてのオブジェクトや実行時の状態を再現できるわけではない点に注意してください。 これには、ロールとロールメンバーシップ、レプリケーションスロット、サーバーレベルの構成 (例:postgresql.conf、pg_hba.conf) 、テーブルスペース、および実行時統計が含まれます。
次のステップ
おめでとうございます。pg_dump と pg_restore を使用して、PostgreSQL データベースを ClickHouse Managed Postgres へ正常に移行できました。これで、ClickHouse Managed Postgres の機能や ClickHouse とのインテグレーションを確認する準備は完了です。さっそく使い始めるには、以下の 10 分間のクイックスタートガイドをご覧ください。