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

pg_dump と pg_restore を使用して Managed Postgres に移行する

このガイドでは、pg_dumppg_restore ユーティリティを使用して、PostgreSQL データベースを ClickHouse Managed Postgres へ移行する手順をステップバイステップで説明します。

Private preview in ClickHouse Cloud

前提条件

  • 移行元の PostgreSQL データベースにアクセスできること。
  • ローカルマシンに pg_dumppg_restore がインストールされていること。これらは通常、PostgreSQL のインストールに含まれています。インストールされていない場合は、PostgreSQL 公式サイト からダウンロードできます。

セットアップ

手順を説明するために、サンプルの RDS Postgres データベースをソースデータベースとして使用します。次のような構成です:

ソース PostgreSQL データベースのセットアップ

ここでは次のような構成を対象とします:

  • 2 つのテーブル eventsusersevents は 100 万行、users は 1,000 行あります。
  • events には索引があります。
  • events テーブルの上に VIEW が定義されています。
  • 複数のシーケンス

移行元データベースのダンプを作成する

ここでは、上記のオブジェクトのダンプファイルを作成するために 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 のドキュメント を参照してください。
ヒント

この手順を一度試してみて、処理にかかる時間とダンプファイルのサイズの感覚をつかんでおくとよいでしょう。

このコマンドを実行すると、次のようなイメージになります:

pg_dump Command Execution

ダンプを ClickHouse Managed Postgres に移行する

ダンプファイルが用意できたので、pg_restore を使用して ClickHouse Managed Postgres インスタンスに復元します。

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

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

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

ダンプを復元する

ローカルマシンに戻ったら、pg_restore コマンドを使用してダンプを Managed Postgres インスタンスに復元します。

pg_restore \
  -d 'postgresql://<user>:<password>@<pg_clickhouse_host>:5432/<database>' \
  --verbose \
  rds-dump

Managed Postgres インスタンスの接続文字列は、ClickHouse Cloud コンソールから取得できます。取得方法についてはこちらで簡潔に説明しています。

ここでも、いくつか注意すべきフラグがあります。

  • --verbose は、復元処理中の詳細な出力を提供します。
  • --jobs フラグを使用して、復元処理を並列化することもできます。詳しくは pg_restore のドキュメントを参照してください。

この例では、次のようになります。

pg_restore コマンドの実行

移行の検証

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

移行先の 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 分で完了するクイックスタートはこちらです。