Neon という Serverless PostgreSQL サービスがあるのですが、 24/365 で起動するアプリケーションでは無料枠では収まらない、かつ、 PlanetScale PostgreSQL の最低プラン (15USD/mo) よりも高く付きそうかつ、 PlanetScale は Tokyo リージョンがあるのでレイテンシー的にもよい、という感じだったので、 PlanetScale へ移行したログです。
まず、 Neon から pg_dump を用いて、データベースをまるごとエクスポートします。 pg_dump が入っていない場合は、 Homebrew などから導入しましょう:
$ brew install postgresql@17 $ which pg_dump /opt/homebrew/opt/postgresql@17/bin/pg_dump
次に、データベースをエクスポートします。
--no-owner かつ --no-privileges が重要です。付けないと、インポート時にそんなユーザーいないよ、とエラーになります。
$ pg_dump --dbname=neondb --file=~/NeonDB_shilink-2025_12_31_18_20_46-dump.sql --if-exists --clean --username=neondb_owner --host=xxx.us-east-1.aws.neon.tech --port=5432 --no-owner --no-privileges
エクスポートしたら、 PlanetScale へインポートします。こちらは psql コマンドを使います。 データベースは事前に作成しておきましょう。
$ psql --file=~/NeonDB_shilink-2025_12_31_18_20_46-dump.sql --single-transaction --username=pscale_api_xxx.xxx --dbname=shlink --host=xxx.pg.psdb.cloud --port=5432
しばらくすると、インポート完了です。あとは動作確認すれば、移行完了です。お疲れさまでした。
参考: