Early Accessからのアップグレード
このガイドでは、Prisma Postgres Early Access (EA) データベースを、正式版であるPrisma Postgres General Availability (GA) データベースに移行する方法を説明します。Prisma Postgres Early Access は、初期採用者がPrismaの新しいマネージドPostgreSQLサービスをテストできるように導入されました。GAへの移行に伴い、EAデータベースから新しいGAデータベースへデータを安全に移行することが重要です。
Prismaはデータの整合性を確保するため、自動的にデータを移行しません。代わりに、このプロセスは手動で行う必要があります。これは主に3つのステップで完了できます
pg_dump
を使用してEAデータベースをバックアップします。- 新しいGAデータベースを作成します。
pg_restore
を使用してバックアップをGAデータベースにインポートします。
両方のデータベースに安全に接続するために、@prisma/ppg-tunnel
パッケージを使用します。このツールは安全なプロキシトンネルを設定し、手動での認証情報処理の必要性を排除します。
Prisma Postgresについてはこちらのページで詳しく学べます。
前提条件
始める前に、以下の準備が整っていることを確認してください
- Node.jsがインストールされていること (バージョン16以上)。
- バックアップの作成と復元のためのPostgreSQL CLIツール (
pg_dump
,pg_restore
)。 - Prisma Postgresデータベース用のデータベース接続文字列。
バックアップを作成および復元するには、PostgreSQLコマンドラインツールがインストールされていることを確認してください。お使いのオペレーティングシステムに基づいて、以下のコマンドを実行します
- macOS
- Windows
- Linux
brew install postgresql@16
which pg_dump
which pg_restore
# Download from the official PostgreSQL website:
# https://www.postgresql.org/download/windows/
# During installation, select "Command Line Tools".
# Then verify with:
where pg_dump
where pg_restore
sudo apt-get update
sudo apt-get install postgresql-client-16
which pg_dump
which pg_restore
PostgreSQLをインストールしたにもかかわらず、pg_dumpまたはpg_restoreで「command not found」エラーが表示される場合は、インストールディレクトリがシステムPATH環境変数に含まれていることを確認してください。
Postgresqlバージョン16をインストールしていることを確認してください。他のバージョンでは、バックアップおよび復元プロセス中にエラーが発生する可能性があります。
オプションA:対話型アプローチ
ガイド付きのワンコマンドソリューションを好む場合は、このアプローチが推奨されます。このモードでは、@prisma/ppg-tunnel
CLIが
- Early Access (EA) データベースのAPIキー(または
DATABASE_URL
)の入力を求めます。 - 内部で
pg_dump
を使用して、EAデータベースを現在のディレクトリ内のファイルにバックアップします。 - 新しいGAデータベースのURLまたはAPIキーの入力を求めます。
pg_restore
を使用して、バックアップファイルをGAデータベースにインポートします。
対話モードでは、CLI引数を受け入れたり、環境からAPIキーを読み取ったりすることはありません。それらは対話的に提供する必要があります。
ステップ
- ターミナルを開き、以下を実行します
npx @prisma/ppg-tunnel migrate-from-ea
-
プロンプトが表示されたら、Early Accessデータベースキーまたは接続文字列を貼り付けます。CLIは現在のディレクトリに
.bak
ファイルを作成します。 -
再度プロンプトが表示されたら、GAデータベースキーまたは接続文字列を貼り付けます。CLIは自動的に.bakファイルを新しいGAデータベースに復元します。
-
完了したら、お気に入りのデータベースIDEで接続し、GAデータベースのデータを検証してください。
オプションB:手動バックアップ・リストアアプローチ
移行プロセスをより細かく制御したい場合(または環境変数を直接渡したい場合)は、これらの手動手順に従ってください。移行は主に3つのパートで構成されます
pg_dump
を使用してEAデータベースをバックアップします。- 新しいGAデータベースを作成します。
pg_restore
を使用してバックアップをGAデータベースにインポートします。
引き続き@prisma/ppg-tunnel
パッケージを使用して、両方のデータベースに安全に接続します。
1. EAデータベースをバックアップする
1.1. @prisma/ppg-tunnel
でEAデータベースに直接接続する
ターミナルでnpx @prisma/ppg-tunnel
を実行し、Early Accessデータベースへのセキュアトンネルを確立します。
現在のディレクトリにDATABASE_URL
が設定された.env
ファイルが既にある場合、トンネルCLIはそれを自動的に認識するため、手動でエクスポートする必要はありません。ただし、.env
ファイルを設定していない場合は、DATABASE_URL
環境変数を明示的に設定する必要があります。
環境変数を設定するには(実際のEAデータベースURLを使用)
export DATABASE_URL="prisma+postgres://accelerate.prisma-data.net/?api_key=eyJhbGciOiJIUzI..."
ターミナルでDATABASE_URL
を明示的に設定した場合、その値が.env
ファイルの値よりも優先されます。
トンネルを実行します
npx @prisma/ppg-tunnel --host 127.0.0.1 --port 5432
次のような出力が表示されるはずです
Prisma Postgres auth proxy listening on 127.0.0.1:5432 🚀
Your connection is authenticated using your Prisma Postgres API key.
...
==============================
hostname: 127.0.0.1
port: 5432
username: <anything>
password: <none>
==============================
出力に表示されるポートはランダムに割り当てられたポートであり、ここに記載されているものとは異なる場合がありますのでご注意ください。また、トンネルをアクティブな状態に保つため、このターミナルウィンドウは開いたままにしてください!閉じるとトンネルが切断されます。
ターミナル出力からポート番号をコピーしてください。次のステップでpg_dump
コマンドに必要になります。
1.2. pg_dump
でバックアップを作成する
トンネルが実行されている状態で、次のコマンドを実行してEAデータベースをダンプできます
PGSSLMODE=disable \
pg_dump \
-h 127.0.0.1 \
-p 5432 \
-Fc \
-v \
-d postgres \
-f ./mydatabase.bak \
&& echo "-complete-"
PGSSLMODE=disable
は、トンネルがすでに接続を暗号化しているため、ローカルでSSLが不要であることを示します。
`-h` is the host (127.0.0.1)
`-p` is the port, which should match the one from the tunnel output.
`-Fc` uses the custom format for backups, recommended for pg_restore.
`-d` postgres is the default database name used in Prisma Postgres.
`-f` ./mydatabase.bak specifies the backup file name and location.
`-v` runs pg_dump in verbose mode.
これにより、現在のディレクトリにmydatabase.bak
という名前のバックアップファイルが作成されます。このバックアップファイルは、次のステップでのインポートに使用します。
2. 新しいGAデータベースを作成する
次に、GA (General Availability) データベースを作成します
- アクセス先でサインインします(またはアカウントを作成します)。
- お好みのリージョンにPrisma Postgresデータベースを作成します。
- 後で使用するために、データベースURLをコピーします。
Prisma Postgres GAはPostgreSQL 17を使用するため、EAバックアップをこの新しい環境に復元することになります。
3. バックアップをGAデータベースにインポートする
3.1. @prisma/ppg-tunnel
でGAデータベースに接続する
新しいターミナルを開く(または以前のトンネルを停止する)か、GAデータベースに接続します
新しいGAデータベースの環境変数を設定します
export DATABASE_URL="prisma+postgres://accelerate.prisma-data.net/?api_key=eyJhbGciOiJIUzI..."
トンネルを実行します
npx @prisma/ppg-tunnel --host 127.0.0.1 --port 5432
次のような出力が表示されるはずです
Prisma Postgres auth proxy listening on 127.0.0.1:52604 🚀
Your connection is authenticated using your Prisma Postgres API key.
...
==============================
hostname: 127.0.0.1
port: 52604
username: <anything>
password: <none>
==============================
繰り返しになりますが、接続を維持するためにこのトンネルプロセスを実行し続けてください!
3.2. pg_restore
でバックアップを復元する
ステップ1で作成したバックアップファイルを使用して、このコマンドを実行することでpg_restore
でGAデータベースにデータを復元します
PGSSLMODE=disable \
pg_restore \
-h 127.0.0.1 \
-p 5432 \
-v \
-d postgres \
./mydatabase.bak \
&& echo "-complete-"
また、この場合のデータベース名はpostgres
です。これを希望するデータベース名に置き換えることができます。データベース名を何にしても、通常通りPrisma Postgresを使用できます。バックアップファイル名(この例ではmydatabase.bak)は、ステップ1で作成したものと一致している必要があります。
このコマンドはバックアップをGAデータベースに復元します。成功すると、ターミナルに-complete-
と表示されるはずです。
次のステップ
お気に入りのデータベースIDEまたはPrismaクライアントで接続し、すべてのテーブル、行、スキーマが古いEA環境と一致することを確認します。
おめでとうございます!Prisma Postgres Early AccessデータベースからPrisma Postgres GAへの移行に成功しました。何か問題が発生した場合は、弊社のサポートチームにご連絡ください。