pg_dump と pg_restore を使用して Managed Postgres に移行する
このガイドでは、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テーブルの上に VIEW が定義されています。- 複数のシーケンス
移行元データベースのダンプを作成する
ここでは、上記のオブジェクトのダンプファイルを作成するために pg_dump を使用します。コマンドはシンプルで、次のとおりです:
ここでは、次のようにします:
<user>、<password>、<host>、<port>、<database>を、ソースデータベースの認証情報に置き換えます。ほとんどの Postgres プロバイダーは、そのまま利用できる接続文字列を提供します。--format directoryは、ダンプをディレクトリ形式で取得することを指定します。これはpg_restoreに適した形式です。-f rds-dumpは、ダンプファイルの出力ディレクトリを指定します。このディレクトリは自動的に作成されるため、事前に存在していてはいけません。--jobsフラグを追加し、その後ろに実行したい並列ジョブ数を指定することで、ダンプ処理を並列化することもできます。詳細については pg_dump のドキュメント を参照してください。
この手順を一度試してみて、処理にかかる時間とダンプファイルのサイズの感覚をつかんでおくとよいでしょう。
このコマンドを実行すると、次のようなイメージになります:

ダンプを ClickHouse Managed Postgres に移行する
ダンプファイルが用意できたので、pg_restore を使用して ClickHouse Managed Postgres インスタンスに復元します。
Managed Postgres インスタンスを作成する
まず、Managed Postgres インスタンスがセットアップ済みであることを確認します。可能であれば、ソースと同じリージョンに配置してください。クイックガイドは こちら を参照してください。このガイドで作成するインスタンスは次のとおりです:

ダンプを復元する
ローカルマシンに戻ったら、pg_restore コマンドを使用してダンプを Managed Postgres インスタンスに復元します。
Managed Postgres インスタンスの接続文字列は、ClickHouse Cloud コンソールから取得できます。取得方法についてはこちらで簡潔に説明しています。
ここでも、いくつか注意すべきフラグがあります。
--verboseは、復元処理中の詳細な出力を提供します。--jobsフラグを使用して、復元処理を並列化することもできます。詳しくは pg_restore のドキュメントを参照してください。
この例では、次のようになります。

移行の検証
リストア処理が完了したら、Managed Postgres インスタンスに接続し、すべてのデータとオブジェクトが正常に移行されていることを確認できます。接続してクエリを実行するには、任意の PostgreSQL クライアントを使用できます。 移行後の 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 へ正常に移行できました。これで、Managed Postgres の各種機能や ClickHouse との連携を活用する準備が整いました。10 分で完了するクイックスタートはこちらです。