25
25

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

HerokuのDBプランをあげる流れ

Last updated at Posted at 2013-02-13

Heroku Postgresの
Plan: Kappa (HEROKU_POSTGRESQL_BRONZE) から
Plan: Ronin (HEROKU_POSTGRESQL_COPPER) に
あげる例で書きます。適宜読み替えて下さい。

まずは現状の確認

$ heroku pg:info
=== HEROKU_POSTGRESQL_BRONZE (DATABASE_URL)
Plan:        Kappa
Status:      available
Data Size:   10.00 GB
Tables:      50
PG Version:  9.1.4
Connections: 10
Fork/Follow: Available
Created:     2013-01-01 12:34 UTC
Maintenance: not required

これでデータサイズやテーブル数、コネクション数はわかる。
なお、dbnameやpasswordなども知りたい場合は

$ heroku pg:credentials HEROKU_POSTGRESQL_BRONZE

を叩けばOK。

ただ、Herokuはプランをあげてもキャッシュ用メモリやCPU性能しか上がらないので、本当に必要な情報はキャッシュヒット率だったりする。

それを調べるには

$ heroku pg:psql

と打ってから

SELECT 
  sum(heap_blks_read) as heap_read,
  sum(heap_blks_hit)  as heap_hit,
  (sum(heap_blks_hit) - sum(heap_blks_read)) / sum(heap_blks_hit) as ratio
FROM 
  pg_statio_user_tables;

と打てば、テーブルのキャッシュヒット率

SELECT 
  sum(idx_blks_read) as idx_read,
  sum(idx_blks_hit)  as idx_hit,
  (sum(idx_blks_hit) - sum(idx_blks_read)) / sum(idx_blks_hit) as ratio
FROM 
  pg_statio_user_indexes;

と打てば、Indexのキャッシュヒット率がわかる。

このことは以下のページに書いてある。
https://devcenter.heroku.com/articles/heroku-postgres-plans#determining-required-cachesize

DBプランをあげる一連の流れ

DBプランをあげることを決断したら、後は以下の流れでUpgradeできる

heroku maintenance:on
heroku pgbackups:capture --expire (最新のDBの状態をバックアップとして取得)
heroku addons:add heroku-postgresql:ronin (新しいDBはHEROKU_POSTGRESQL_COPPERだと取得)
heroku pg:wait (新しいDBができるまで待つ)
heroku pg:info (DBができているか確認)
heroku pgbackups:restore HEROKU_POSTGRESQL_COPPER (バックアップからDB状態をコピー)
heroku pg:promote HEROKU_POSTGRESQL_COPPER (新しいDBに繋ぎ変え)
heroku restart
--- 確認作業 ---
heroku maintenance:off

確認作業の部分はStagingを持っている人の場合、

heroku config | grep DATABASE_URL (DATABASE_URLをstaging用にコピー)
heroku config:set DATABASE_URL=postgres://xxxxxx --app your-staging-app
heroku restart --app your-staging-app

とやって、Staging環境から本番DBにつなぐことで行える。

数日運用してもう問題が無いと自信がついた頃、以下のコマンドで元のDBを削除する。

heroku addons:remove HEROKU_POSTGRESQL_BRONZE

公式ドキュメント

25
25
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
25
25

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?