【Heroku】PostgreSQLのプランを変更する方法
こんにちは、okutani(@okutani_t)です。本記事では、「Herokuで利用しているPostgreSQLのDBのプランを変更する方法」について解説しています。
今回はコスト削減のため、Hobby Basic(有料プラン)からHobby Dev(無料プラン)に変更する手順について記述しています。
ほぼ同じ手順でHobby Dev -> Hobby Basicのアップグレードもおこなえるかと思います。
それでは、PostgreSQLのプランを変更する方法について見ていきましょう。
参考Upgrading the Version of a Heroku Postgres Database | Heroku Dev Center
スポンサーリンク
新しいDBを追加
今回は無料プランに移行するので、Heroku管理画面から「Hobby Dev」を追加します。
「Overview」→「Configure Add-ons」を選択。
「postgres」などで検索して、追加したいプランを選択し「Provision」をクリック。
もしくは、以下のコマンドを入力して追加してもOKです。
$ heroku addons:create heroku-postgresql:hobby-dev --app アプリ名
これで新規DBが追加されました。
DB情報の確認
以下のコマンドで既存のDBと新規のDBの詳細を表示できます。
$ heroku pg:info --app アプリ名
今回は「HEROKU_POSTGRESQL_BROWN_URL(Hobby Basic, 既存のDB)」と「HEROKU_POSTGRESQL_YELLOW_URL(Hobby Dev, 新規のDB)」が確認できました。
こちらのURLをそれぞれメモしておきます(環境によって、URL名は違う場合があるのでそれぞれ読み替えてください)。
メンテナンスON
以下のコマンドでアプリケーションをメンテナンス画面に変更。
$ heroku maintenance:on --app アプリ名
以下のようにメンテナンス状態に切り替わりました。
DBの移行作業を進めていきます。
旧DBから新DBにデータ移行
旧DBから新DBにデータを流し込みます。
一応、現在のDBのバックアップを取っておきましょう。
$ heroku pg:backups capture --app アプリ名
もしくは、Heroku管理画面上で「Heroku Postgres」→「Durability」→「Create Manual Backup」から手動でバックアップを取ることもできます。
それでは、以下のコマンドで旧DBのデータを新DBにコピーします。「DATABASE_URL」の箇所は置換せずそのまま利用してください。
$ heroku pg:copy DATABASE_URL 新DB --app アプリ名
実際には以下のようなコマンドになります。適宜「HEROKU_POSTGRESQL_YELLOW」の箇所を適宜書き換えてください
$ heroku pg:copy DATABASE_URL HEROKU_POSTGRESQL_YELLOW --app アプリ名
上記のコマンドを実行すると、アプリ名を入力するように促されるので、入力してEnter。
実際にコピーできているか、Heroku管理画面、もしくは先ほどのpg:infoコマンドで確認しておきましょう。
$ heroku pg:info --app アプリ名
次に、実際にアプリが参照するDBを変更します。
新規DBに切り替え
アプリケーションがアクセスするDBを新規のDBに変更します。「HEROKU_POSTGRESQL_YELLOW」の箇所は適宜書き換えてください。
$ heroku pg:promote HEROKU_POSTGRESQL_YELLOW --app アプリ名
pg:infoコマンドで確認。利用したいDB(新規のDB)に「DATABASE_URL」と書いてあることを確認できればOKです。
$ heroku pg:info --app アプリ名
これで参照するDBが切り替わりました。
メンテナンスOFF
メンテナンスをOFFにします。
$ heroku maintenance:off --app アプリ名
これでメンテナンスを解除できます。
あとは何かしらDBに書き込む処理をおこなってみて、新プランの方のDBに書き込まれているのを確認できればOKですね。
参考になれば幸いです。
Web開発のお仕事を募集しています
フリーランスのエンジニアとして、Webシステム開発のお仕事依頼を随時募集しています(現在の業務量によってお受けできない場合もあります)。
「Ruby on Rails」「JavaScript(jQuery, Reactなど)」「HTML + CSS」を用いたシステム開発、「Heroku」等を用いたサーバー構築・運用、「Git」や「GitHub」を利用したソーシャルコーディングなどに対応しています。
ご依頼を検討している方は、下記リンク本ブログからのお問い合わせ、もしくはokutaniのポートフォリオからご連絡ください。
LINKお問い合わせ
スポンサーリンク