HerokuのPostgreSQLのプラン変更に伴いデータ移行したときのメモ
無料枠で使っていたHerokuのPostgreSQLを有料枠に変更して使う必要が出て移行したときのメモ
背景
- HerokuのPostgreSQLの無料枠のレコード上限の10,000件に近づいていたため
hobby-basic
プランを契約して10,000,000まで保存できるようにしたかった。
前提
- 有料プランを課金すると新規DBのURLとしてHEROKU_POSTGRESQL_AMBER_URLが追加された。
- {HEROKU_POSTGRESQL_COLOR_URL}は新DBのURL(私が対応した際はHEROKU_POSTGRESQL_AMBER_URLを利用)
- {APP_NAME}はアプリ名
作業
ログイン
heroku login
メンテナンスモードON
heroku maintenance:on --app {APP_NAME}
バックアップ
Heroku管理画面上から「Heroku Postgres」→「Durability」→「Create Manual Backup」ボタンを押してバックアップを取ることができる
DBのデータコピー
heroku pg:copy DATABASE_URL {HEROKU_POSTGRESQL_COLOR_URL} --app {APP_NAME}
確認を求められるので {APP_NAME} を入力 ※DATABASE_URLは旧DBのURLとなります。環境
DBの切り替え
heroku pg:promote {HEROKU_POSTGRESQL_COLOR_URL} --app {APP_NAME}
- 切り替わっていることを確認
heroku pg:info --app {APP_NAME}
メンテナンスモードOFF
heroku maintenance:off --app {APP_NAME}