herokuのデータベースは $ rake db:drop
では再構築できない
データベースのリセット
$ heroku pg:reset DATABASE
必要なら --app your_app_name
を追加
バックアップ/リストア (PG Backups add-on)
# アドオン追加
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がらみで数ドルの請求が来るようになったが、
東京リージョンのための寄付のつもりで特に対策しないでいる。