Closed3
PostgreSQLでdumpをエクスポートして新しいDBにインポートする
HerokuからRender.comにアプリを移そうと思っていて、RenderにPostgreSQLでDBを作成した。画面ぽちぽちでできた。接続元IP制限も簡単にできる。
Heroku PostgreSQLからデータをエクスポートする。heroku-cliにバックアップ機能があるので利用する。
# バックアップを実行する(S3に出力される)
$ heroku pg:backups -a {myapp}
Starting backup of postgresql-graceful-xxx... done
Use Ctrl-C at any time to stop monitoring progress; the backup will continue running.
Use heroku pg:backups:info to check progress.
Stop a running backup with heroku pg:backups:cancel.
Backing up DATABASE to {バックアップID}.. done
# バックアップを確認する
$ heroku pg:backups:capture -a {myapp}
=== Backups
ID Created at Status Size Database
──── ───────────────────────── ─────────────────────────────────── ────── ────────
{バックアップID} 2022-11-22 12:48:34 +0000 Completed 2022-11-22 12:48:35 +0000 9.18KB DATABASE
=== Restores
No restores found. Use heroku pg:backups:restore to restore a backup
=== Copies
ID Started at Status Size From To
──── ───────────────────────── ─────────────────────────────────── ────── ───────── ───────────
c001 2022-05-07 23:20:08 +0000 Completed 2022-05-07 23:20:51 +0000 6.80KB From Name Target Name
# バックアップを取得する
$ heroku pg:backups:download {バックアップのID} -a {myapp}
Getting backup from ⬢ my-app... done, #2
Downloading latest.dump... ████████████████████████▏ 100% 00:00 9.18KB
$ ls
latest.dump
Renderで作成したDBに、Herokuから取得したバックアップをリストアする。
$ pg_restore -h xxx.oregon-postgres.render.com -U {ユーザー名} -d {DB名} latest.dump
Password:
Renderは便利で、設定の「Connection」という項目にPSQL Commandが書いてあるので接続する際はそのまま使うとよい。
Herokuでは特権ユーザーの名前がランダムな文字列になるが、Renderでは好きな文字列を指定できる。
特権ユーザーの名前が違うことで ALTER TABLE xxx OWNER TO 特権ユーザー
の処理に失敗するので、必要に応じて修正する。
このスクラップは2022/11/22にクローズされました