メインコンテンツまでスキップ

Postgres pg_dump と pg_restore

備考

ベータ版

Lakebase Postgres (オートスケール Beta) は、 Lakebase の次のバージョンであり、評価のみに利用できます。 本番運用ワークロードの場合は、 Lakebase Public Previewを使用します。 どのバージョンが適しているかを判断するには、バージョンの選択を参照してください。

このトピックでは、Postgres pg_dumpユーティリティを使用して Lakebase データベースのバックアップを作成する方法と、 pg_restoreを使用してバックアップを復元する方法について説明します。

pg_dumpとpg_restoreを使用する場合

ディザスタリカバリおよびビジネス継続性の要件の場合、または Lakebase の外部に完全バックアップを保存する必要がある場合は、 pg_dumppg_restoreを使用します。 この方法では、独立して保存し、任意の Postgres 互換システムに復元できる完全なデータベース エクスポートが提供されます。

前提条件

始める前に、次の点を確認してください。

  • pg_dump pg_restoreがインストールされています。pg_dump -Vを実行して確認できます。
  • 最新バージョンのpg_dumppg_restoreを使用しています。
  • クライアントのバージョンは、Lakebase プロジェクトの Postgres バージョンと一致します。
  • Postgres ロールが構成された Lakebase データベース プロジェクト
注記

pg_dumpおよびpg_restoreを使用する場合は、 ネイティブの Postgres パスワード認証 を使用することをお勧めします。ネイティブ Postgres パスワードは、OAuth トークンのように 1 時間ごとに期限切れにならないため、バックアップおよび復元操作に適しています。認証方法の詳細については、 「認証の概要」を参照してください。

pg_dumpとpg_restoreをインストールする

pg_dumpおよびpg_restoreユーティリティがローカルにインストールされていない場合は、優先プラットフォームにインストールしてください。

Windows : postgresql.orgの公式インストーラーを使用してPostgreSQLインストールします。 pg_dumpおよびpg_restoreユーティリティはデフォルトでインストールされており、PostgreSQL の bin ディレクトリにあります。

macOS: Homebrew を使用して PostgreSQL をインストールします。

Bash
brew install postgresql

Linux (Ubuntu/Debian):

Bash
sudo apt-get install postgresql-client

Docker : Postgres Dockerコンテナを使用して実行pg_dump :

Bash
docker run --rm postgres:15 pg_dump --version

pg_dumpでバックアップを作成する

ローカルでデータベースのバックアップを作成するには:

  1. ワークスペースの右上隅にあるアプリスイッチャーをクリックして、Lakebase アプリに移動します。

  2. データベース プロジェクトを選択します。

  3. 「接続」を クリックすると、データベース接続モーダルが開きます。

  4. ドロップダウンから Postgres ロールを選択します (パスワード認証を備えたネイティブの Postgres ロールを使用することをお勧めします)。

  5. 接続プール オプションの選択を解除します。プールされた接続文字列ではなく、直接の接続文字列が必要です。

    接続文字列は次のようになります。

    postgresql://role_name:password@ep-source-abc-123.databricks.com/databricks_postgres?sslmode=require
  6. 次のpg_dumpコマンドを実行して、Lakebase データベースのバックアップを作成します。

    Bash
    pg_dump -Fc -v -d "<lakebase_database_connection_string>" -f <dump_file_name>

    Lakebase データベース接続文字列とダンプ ファイル名を追加すると、コマンドは次のようになります。

    Bash
    pg_dump -Fc -v -d "postgresql://role_name:password@ep-source-abc-123.databricks.com/databricks_postgres?sslmode=require" -f mydatabase.bak

pg_dump コマンド引数

pg_dumpコマンドには次の引数が含まれます:

  • -Fc: 出力をpg_restoreへの入力に適したカスタム形式のアーカイブに送信します。
  • -v: pg_dump詳細モードで実行し、ダンプ操作中に何が起こるかを監視できます。
  • -d: Lakebase データベースの接続文字列を指定します。
  • -f <dump_file_name>: ダンプ ファイル名。任意の名前を選択できます (例: mydumpfile.bak )。

pg_restoreでバックアップを復元する

pg_dumpを使用して作成されたバックアップ ファイルからpg_restoreユーティリティを使用してデータベースを復元するには:

  1. 新しい Lakebase プロジェクトを作成します。

  2. バックアップしたデータベースと同じ名前のデータベースを作成します。

  3. ワークスペースの右上隅にあるアプリスイッチャーをクリックして、Lakebase アプリに移動します。

  4. データベース プロジェクトを選択し、 [接続] をクリックしてデータベース接続モーダルを開きます。

  5. ドロップダウンから Postgres ロールを選択します (パスワード認証を備えたネイティブの Postgres ロールを使用することをお勧めします)。

  6. 接続プール オプションの選択を解除します。プールされた接続文字列ではなく、直接の接続文字列が必要です。

    接続文字列は次のようになります。

    postgresql://role_name:password@ep-destination-xyz-456.databricks.com/databricks_postgres?sslmode=require
  7. pg_restoreを使用して、Lakebase のターゲット データベースにデータを復元します。

    Bash
    pg_restore -v -d "<lakebase_database_connection_string>" <dump_file_name>

    Lakebase データベース接続文字列とダンプ ファイル名を追加すると、コマンドは次のようになります。

    Bash
    pg_restore -v -d "postgresql://role_name:password@ep-destination-xyz-456.databricks.com/databricks_postgres?sslmode=require" mydatabase.bak

pg_restore コマンド引数

pg_restoreコマンドには次の引数が含まれます:

  • -v: pg_restore詳細モードで実行し、復元操作中に何が起こるかを監視できます。
  • -d: 接続する Lakebase データベースを指定します。値は Lakebase データベース接続文字列です。
  • <dump_file_name>: pg_dumpで作成したダンプ ファイルの名前。

完全な例

次の例は、ある Lakebase プロジェクトのdatabricks_postgresという名前のソース データベースからデータをダンプし、別の Lakebase プロジェクトのdatabricks_postgresデータベースに復元する方法を示しています。

この手順を実行する前に:

  • 宛先データベース(デフォルトのdatabricks_postgresデータベースを含む)用に新しい Lakebase プロジェクトが作成されました
  • ソース データベースと宛先データベースの接続文字列が収集されました。
    • ソース: postgresql://role_name:password@ep-source-abc-123.databricks.com/databricks_postgres?sslmode=require
    • 配信先: postgresql://role_name:password@ep-destination-xyz-456.databricks.com/databricks_postgres?sslmode=require

バックアップと復元の手順:

Bash
# Create a directory for the dump
mkdir mydump && cd mydump

# Create the backup
pg_dump -Fc -v -d "postgresql://role_name:password@ep-source-abc-123.databricks.com/databricks_postgres?sslmode=require" -f mydatabase.bak

# Verify the backup file was created
ls
mydatabase.bak

# Restore the backup to the destination database
pg_restore -v -d "postgresql://role_name:password@ep-destination-xyz-456.databricks.com/databricks_postgres?sslmode=require" mydatabase.bak