Rails
Heroku

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

More than 5 years have passed since last update.

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がらみで数ドルの請求が来るようになったが、

東京リージョンのための寄付のつもりで特に対策しないでいる。