herokuのpostgres dataのbackup/restore
今回は、herokuのpostgresからデータをbackup(export)して、
違うpostgresインスタンスにデータをrestore(import)したので、そのメモ。
まず、色んなとこに出てる、heroku pgbackups がなくなっている!
heroku pg:backupsを使えとのことでした。
ざっくりフロー
- backupする
- restoreする
- 確認する
です。
backupする
バックアップ取る側のアプリ名を、<backup_app_name>としてます。 リストアする側は、<restore_app_name>ね。
$ heroku pg:backups capture --app <backup_app_name> 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. HEROKU_POSTGRESQL_SILVER ---backup---> b002 Backup completed
これで、バックアップ完了。
heroku上でDBのバックアップを確認すると、
こんな感じにちゃんと取れてるのが見える。
b003があるのは、二回やってみたから。
restoreする
次は、リストア。
下記コマンドを実行する。
pgbackups時代に存在した、pgbackup urlはなくなって、pg:backups public-urlになったらしい。
DATABASE_URLは、たぶん、--app <restore_app_name>でもいけると思う。
$ heroku pg:backups restore `heroku pg:backups public-url --app <backup_app_name>` DATABASE_URL ! WARNING: Destructive Action ! This command will affect the app: cedar-14-app-root4 ! To proceed, type "cedar-14-app-root4" or re-run this command with --confirm cedar-14-app-root4 > cedar-14-app-root4 Use Ctrl-C at any time to stop monitoring progress; the backup will continue restoring. Use heroku pg:backups to check progress. Stop a running restore with heroku pg:backups cancel. r001 ---restore---> DATABASE Restore completed
これで無事データ移行完了!
確認する
一応ちゃんと確認したかったので、
$ heroku pg:psql $ heroku pg:psql --app <restore_app_name> ---> Connecting to HEROKU_POSTGRESQL_SILVER_URL (DATABASE_URL) psql (9.3.5, server 9.3.9) SSL connection (cipher: DHE-RSA-AES256-SHA, bits: 256) Type "help" for help. cravitee::SILVER=> \z Access privileges Schema | Name | Type | Access privileges | Column access privileges --------+-----------------------------+----------+-------------------+-------------------------- public | images | table | | .... .... 中略 .... .... public | users | table | | (27 rows)
これでテーブル確認できたので、移行完了!
終わり。