Closed3

PostgreSQLでdumpをエクスポートして新しいDBにインポートする

mom0tomomom0tomo

HerokuからRender.comにアプリを移そうと思っていて、RenderにPostgreSQLでDBを作成した。画面ぽちぽちでできた。接続元IP制限も簡単にできる。

mom0tomomom0tomo

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
mom0tomomom0tomo

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にクローズされました