LoginSignup
3
3

More than 5 years have passed since last update.

herokuでDB壊しちゃったときにリカバったはなし

Last updated at Posted at 2016-02-25

この記事は何?

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すると死亡するので気をつけて!

管理コンソールから試す

なぜか怒られる・・・なぜ?
理由誰かおしえてください。。。
image

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」でスナップショットを作る

image

スナップショットから戻す

作ったスナップショットを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が過去に戻ったよ!
皆さんもデータふっとんだ時は慌てず試してください。

3
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
3