この記事は何?
HerokuのBackupとかrecoveryってどうやって使うのかをまとめます。
今更こんな当たり前なことを書いた理由
ミスでテスト環境のDBをdrop&createで殲滅。
藁にもすがる思いでこの機能を試した所見事復活。
これは「Heroku様のお力を広めなければ!」思いたち記事書きました。
コンテンツ
データベースの状態を確認
とりあえずDBのステータスを確認する
データが無くなってしまったことを確信・・・。
bat
>heroku pg:info --app "XXXXXXXXX"
=== DATABASE_URL
Plan: Standard 0
Status: Available
Data Size: 14.4 MB
Tables: 83
PG Version: 9.4.4
Connections: 4/120
Fork/Follow: Available
Rollback: earliest from 2016-02-13 08:14 UTC
Created: 2015-09-13 16:31 UTC
Region: virginia
Maintenance: not required
Maintenance window: Wednesdays 19:00 to 23:00 UTC
Add-on: postgresql-animated-3037
ん?
Rollback: earliest from 2016-02-13 08:14 UTC
なんか1週間前から戻せるとか言ってませんか?
DBのRestoreをしてみる
Restoreすると新しいDBが作られます。
あまり高いプランでRestoreすると死亡するので気をつけて!
管理コンソールから試す
cliから試す
仕方ないのでcli・・・成功・・・なぜ?
bat
>heroku addons:create heroku-postgresql:standard-0 --rollback postgres://xxxxxxx:xxxxxxx@XXXXXX.compute-1.amazonaws.com:9999/xxxxxx --to '2016-02-17 16:00:00+09' --app "XXXXXXX"
Creating postgresql-parallel-32612... done, ($50.00/month)
Adding postgresql-parallel-32612 to XXXXXXX... done
Setting HEROKU_POSTGRESQL_COBALT_URL and XXXXXXX... done, v1009
Database will become available after it completes rolling back
to 2016-02-17 07:00:00 +0000 (01:18:36 ago)
Use `heroku pg:wait` to track status
Use `heroku addons:docs heroku-postgresql` to view documentation.
スナップショット作る
Restoreした過去のDBから「New PG Backup」でスナップショットを作る
スナップショットから戻す
作ったスナップショットをAPのメインDB(ぶっ壊しちゃったやつ。。。)に反映!
bat
>heroku pg:backups restore XXXXXXXXX::b006 DATABASE_URL --app XXXXXXXXX
! WARNING: Destructive Action
! This command will affect the app: XXXXXXXXX
! To proceed, type "XXXXXXXXX" or re-run this command with --confirm XXXXXXXXX
> XXXXXXXXX
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.
r007 ---restore---> DATABASE
Restore completed
ミッションコンプリート!
戻った!DBが過去に戻ったよ!
皆さんもデータふっとんだ時は慌てず試してください。