setoya-blog

システム開発技術、データ分析関連でお勉強したことや、山奥生活を綴る、テンション低めなブログです。

HerokuのShared DBをDev PlanのHeroku Postgresに移行する手順

本家の公式資料は、こちら。
Migrating from a Shared Database to Heroku Postgres | Heroku Dev Center


shared dbを8月9日までにHeroku PostgresのDevプランに自分で移行すると、通常10,000rowまでの制限があるDevプランを14,000まで使えるそうです。


heroku postgresのDEVプランのadd onを追加する。

コマンドラインなら以下のようにする。アプリを複数持っている人は、--appオプションもお忘れなく。

heroku addons:add heroku-postgresql:dev --app app_name

ウェブからポチっとやることもできます。

f:id:sessan:20120803163658p:plain


pg backup add onも追加する

データのエクスポート・インポートに使うためにpg backup add onを追加します。

コマンドラインなら、以下。

heroku addons:add pgbackups --app app_name

ポチっとやりたい人は、ポチっとする

f:id:sessan:20120803164056p:plain



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

DBの移行中に、ユーザーに新しくデータを追加されたりしたくないので、先にメンテナンスモードをONにします。こうするとWebからアプリを表示しても、メンテナンスページが表示されます。

heroku maintenance:on --app app_name

コマンドラインからしかできません。



現在参照しているDB(shared db)を、移行のためにバックアップをとる

heroku pgbackups:capture --expire --app app_name

このコマンドは、アプリが参照しているDB(DATABASE_URL)のバックアップを取るコマンドで、--expireオプションで最も古いバックアップが消されます。




移行先のDB (Postgres Dev Plan)にバックアップしたデータをリストア

heroku pgbackups:restore HEROKU_POSTGRESQL_COLOR  --app app_name

この最後のHEROKU_POSTGRESQL_COLORの部分は人によって違うので、事前に
以下のコマンドでDev planがどういう名前になっているか確かめておくこと。

heroku pg:info --app app_name

 
 

アプリの参照するデータベースをHeroku PostgresのDevプランに変更する

これをやらないとshared dbのままで動いてしまう。忘れがち。

heroku pg:promote HEROKU_POSTGRESQL_COLOR  --app app_name


 
 

メンテナンスモードを解除する

heroku maintenance:off --app app_name


このあと必要なら、shared_dbを削除します。

heroku addons:remove shared-database --app app_name