ぼくの、とある Web アプリの DB・PostgreSQL のプランを、そのアプリのリリースのタイミングで Hobby Dev から Hobby Basic にアップグレードした。別に、Hobby Basic でないと捌けなくなるという確証がそのときにあったわけではなく(むしろ全く無かった。ホントだよ!(`;ω;´))、単純に、アップグレードという手順を踏んだことがなかったのでやってみたかった、という理由が大きい。
アプリのリリースから約一ヶ月、無事 Hobby Dev に戻しても問題なさそう、という確信を得た(`;ω;´) ので、今回はそのダウングレードをやってみた。そのときの手順をここにもメモ。ダウングレード手順、意外に見つからなかったので。
...といっても、基本的にはアップグレード手順の逆を踏めばいいかんじ。だからみんな書いてないんだね。作業前の状態としては、Hobby Dev な PostgreSQL アドオン Heroku Postgres :: Rose
と Hobby Basic な PostgreSQL アドオン Heroku Postgres :: Silver
のふたつが存在していて(↓の画像)、アプリケーションは後者を使用している、という状態からのスタートになる。
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_URL
が HEROKU_POSTGRESQL_ROSE_URL
と同列に指定されていることがわかる。
...でも、 Rows
の数が違うのはなんでやろ......(´・ω・`)?
メンテナンスモードを off にする
メンテナンスモードを on にした手順の逆。
$ heroku ps:scale worker=1 $ heroku maintenance:off
その後、アプリケーションの表示・動作などから問題がないことを確認。
有料の DB アドオンの削除
ダウングレード・切り替え作業的には以上なんだけど、アドオンの削除もやっておかないと、おこづかいから毎月 $9 が徴収されてしまう状況は変わらない。ので、削除する。
heroku のコンソールのアドオンのところにある Edit
ボタンを押して...
各アドオンに廃止マークが表示されるので、Hobby Basic なアドオンの廃止を選択し、
廃止対象を確認した上で、 Save
。
いじょう!