えいのうにっき

a-knowの日記です

heroku の PostgreSQL アドオンをダウングレードする

ぼくの、とある Web アプリの DB・PostgreSQL のプランを、そのアプリのリリースのタイミングで Hobby Dev から Hobby Basic にアップグレードした。別に、Hobby Basic でないと捌けなくなるという確証がそのときにあったわけではなく(むしろ全く無かった。ホントだよ!(`;ω;´))、単純に、アップグレードという手順を踏んだことがなかったのでやってみたかった、という理由が大きい。

アプリのリリースから約一ヶ月、無事 Hobby Dev に戻しても問題なさそう、という確信を得た(`;ω;´) ので、今回はそのダウングレードをやってみた。そのときの手順をここにもメモ。ダウングレード手順、意外に見つからなかったので。

...といっても、基本的にはアップグレード手順の逆を踏めばいいかんじ。だからみんな書いてないんだね。作業前の状態としては、Hobby Dev な PostgreSQL アドオン Heroku Postgres :: Rose と Hobby Basic な PostgreSQL アドオン Heroku Postgres :: Silver のふたつが存在していて(↓の画像)、アプリケーションは後者を使用している、という状態からのスタートになる。

f:id:a-know:20150804132134p:plain

Hobby Dev の方に Hobby Basic の内容をコピーする

の、前に、メンテナンスモードを on にする。

$ heroku maintenance:on
$ heroku ps:scale worker=0

その後、下記コマンドによりコピーを実施する。HEROKU_POSTGRESQL_SILVER_URL の DB の内容を、 HEROKU_POSTGRESQL_ROSE_URL にコピー。

$ heroku pg:copy HEROKU_POSTGRESQL_SILVER_URL HEROKU_POSTGRESQL_ROSE_URL

このコマンドを叩くと、「ほんとにやっていい?やっていいなら heroku-app name を入力してね」、と聞かれるので、ほんとにやっていいかもう一度よく考えた上で、 app-name を入力。

Copy completed

コピー完了。

アプリケーションの参照先を切り替える

下記コマンドで切り替え可能。これにより、 HEROKU_POSTGRESQL_ROSE_URL で示される DB に切り替える。

$ heroku pg:promote HEROKU_POSTGRESQL_ROSE_URL
Ensuring an alternate alias for existing DATABASE... done, HEROKU_POSTGRESQL_SILVER
Promoting reading-slyly-6016 to DATABASE_URL on xxxxx-prod... done

切り替え完了。

メンテナンスモードを off にするまえに、 heroku pg:info コマンドで DB の状況を確認する。

$ heroku pg:info
=== HEROKU_POSTGRESQL_ROSE_URL, DATABASE_URL
Plan:        Hobby-dev
Status:      Available
Connections: 0/20
PG Version:  9.4.4
Created:     2015-06-23 12:53 UTC
Data Size:   7.1 MB
Tables:      7
Rows:        48/10000 (In compliance)
Fork/Follow: Unsupported
Rollback:    Unsupported
Add-on:      reading-slyly-6016

=== HEROKU_POSTGRESQL_SILVER_URL
Plan:        Hobby-basic
Status:      Available
Connections: 1/20
PG Version:  9.4.4
Created:     2015-06-25 10:09 UTC
Data Size:   6.9 MB
Tables:      7
Rows:        18/10000000 (In compliance) - refreshing
Fork/Follow: Unsupported
Rollback:    Unsupported
Add-on:      living-vastly-1230

HEROKU_POSTGRESQL_ROSE_URL, DATABASE_URL となっていて、アプリケーションが参照する DB を指す DATABASE_URLHEROKU_POSTGRESQL_ROSE_URL と同列に指定されていることがわかる。

...でも、 Rows の数が違うのはなんでやろ......(´・ω・`)?

メンテナンスモードを off にする

メンテナンスモードを on にした手順の逆。

$ heroku ps:scale worker=1
$ heroku maintenance:off

その後、アプリケーションの表示・動作などから問題がないことを確認。

有料の DB アドオンの削除

ダウングレード・切り替え作業的には以上なんだけど、アドオンの削除もやっておかないと、おこづかいから毎月 $9 が徴収されてしまう状況は変わらない。ので、削除する。

heroku のコンソールのアドオンのところにある Edit ボタンを押して...

f:id:a-know:20150804132521p:plain

各アドオンに廃止マークが表示されるので、Hobby Basic なアドオンの廃止を選択し、

f:id:a-know:20150804132848p:plain

廃止対象を確認した上で、 Save

f:id:a-know:20150804132825p:plain

いじょう!



follow us in feedly