本家の公式資料は、こちら。
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
ウェブからポチっとやることもできます。
pg backup add onも追加する
データのエクスポート・インポートに使うためにpg backup add onを追加します。
コマンドラインなら、以下。
heroku addons:add pgbackups --app app_name
ポチっとやりたい人は、ポチっとする
メンテナンスモードを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