Note

heroku: dbのbackupからMACへのリストアまで

概要

heroku pg を利用しているのでそのbackupをとって、ローカルのマックにリストアするところまで。
heroku コマンドで確認できます。

バックアップの確認

下記のコマンドで今アプリで使用しているデータベースのバックアップ一覧が確認できます。

$ heroku pg:backups -a APP_NAME

=== Backups ID Created at Status Size Database ──── ───────────────────────── ─────────────────────────────────── ─────── ──────── b001 2016-12-24 04:08:31 +0000 Completed 2016-12-24 04:08:34 +0000 10.77kB DATABASE

=== Restores No restores found. Use heroku pg:backups:restore to restore a backup

=== Copies No copies found. Use heroku pg:copy to copy a database to another

バックアップの作成

バックアップを作成するコマンド

heroku pg:backups capture -a APP_NAME

Starting backup of postgresql-tapered-96268... 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 b002... done

もう一度確認すると増えているのがわかるかと思います

$ heroku pg:backups -a APP_NAME === Backups ID Created at Status Size Database ──── ───────────────────────── ─────────────────────────────────── ─────── ──────── b002 2016-12-24 04:35:24 +0000 Completed 2016-12-24 04:35:25 +0000 10.77kB DATABASE b001 2016-12-24 04:08:31 +0000 Completed 2016-12-24 04:08:34 +0000 10.77kB DATABASE

=== Restores No restores found. Use heroku pg:backups:restore to restore a backup

=== Copies No copies found. Use heroku pg:copy to copy a database to another

ローカルにリストアする

バックアップをローカルにダウンロードする

$ curl -o DUMPNAME `heroku pg:backups public-url -a APP_NAME`

portgresqlにリストアする

取得したダンプファイルを読み込みます。

$ pg_restore --verbose --clean --no-acl --no-owner -h localhost -d DATABASE_NAME DUMPNAME

以上でできた。herokuお手軽です。