LoginSignup
168

More than 5 years have passed since last update.

herokuのデータベースをリセット/リストア/再構築する

Posted at

herokuのデータベースは $ rake db:drop では再構築できない

データベースのリセット

$ heroku pg:reset DATABASE

必要なら --app your_app_name を追加

バックアップ/リストア (PG Backups add-on)

PG Backups

# アドオン追加
heroku addons:add pgbackups

# マニュアルバックアップ
heroku pgbackups:capture

# バックアップの一覧
heroku pgbackups

# バックアップからデータをリストア
heroku pgbackups:restore HEROKU_POSTGRESQL_BLACK b251

データベースをローカルで再構築

Importing/Exporting Heroku Postgres

# バックアップのダウンロード(URL
# URLを取得し、URLにアクセスしダウンロード
heroku pgbackups
heroku pgbackups:url b004

# ローカルのデータベースにリストア
rake db:create
pg_restore --verbose --clean --no-acl --no-owner -h localhost -U myuser -d mydb latest.dump

heroku pgbackups:url では一時的に公開URLが作成され、しばらく後破棄されるみたい。
データの中身次第では注意が必要。

公開URLにさらされたdumpのURLがどのくらいの時間有効か1度実験したら、
約10分後にはAccessDeniedになった

同様の内容 http://qiita.com/awakia/items/b68acc78afad68a9dc8b

その他関連コマンド

# pgコマンドヘルプ
heroku help pg

# データベースの情報確認
# 書き込み行数の確認など
# Rows:        10235/10000
heroku pg:info

# 環境の確認 (ENVの値など)
heroku config

# データベースマイグレーション
heroku run rake db:migrate
heroku run rake db:seed

# railsコンソール
heroku run console
> JunkData.delete_all

# ログ確認
heroku logs -t

無料データベースの制限・課金

herokuの無料データベースは10000件の書き込みが許されている。heroku pg:info
容量が超えると通知が来る。
超えたままだと、約一週間後にINSERT(行の追加)が出来なくなる。

行の削除、またはデータベースのリセット・再構築等をすれば継続して利用できるっぽい。

個人のテストアプリなどで、ログとしての役しかしていないデータなどがあれば、
ローカルにbackupして、heroku上のものを消すなどすれば継続して使い続けられる。


最近、テストのアプリに対してSchedulerがらみで数ドルの請求が来るようになったが、
東京リージョンのための寄付のつもりで特に対策しないでいる。

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
168