【Heroku】PostgreSQLのプランを変更する方法
2019/3/11
2025/8/2
こんにちは、okutani(@okutani_t)です。本記事では、「Herokuで利用しているPostgreSQLのDBのプランを変更する方法」について解説しています。
今回はコスト削減のため、**Hobby Basic(有料プラン)からHobby Dev(無料プラン)**に変更する手順について記述しています。
ほぼ同じ手順でHobby Dev -> Hobby Basicのアップグレードもおこなえるかと思います。
それでは、PostgreSQLのプランを変更する方法について見ていきましょう。
新しい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ですね。
参考になれば幸いです。