Heroku PostgresをHobby-tierから上のプランにアップグレードする
Hobby-tierから上のランクにあげる方法
アップグレードには2つの方法があるが、Hobby-tierからのupgradeは実質1択
pg:upgrade
しかしこちらはhobby-tierには使えない
follower DBにしか使えない
pg:copy
こちらを使う
10GBまで。無料枠10000レコードで10GBを超えたら自分でdumpして頑張れということみたい
100万レコードのhobby-basicだったら超える可能性あるのでそれより上にしたいときには要検討
手順
更新されるはずなので公式ドキュメントを毎回参照してください
ここには2019-02-03にやった際の差分だけ書く
月間9USDのhobby-basicを使う
オフィシャルの手順だと月間50USDのstandard-0になっているのでなにも考えずにコピペすると死ぬ
heroku addons:create heroku-postgresql:hobby-basicですぐできる
アプリをメンテナンスモードに入れると自動的にメンテ画面になる
heroku maintenance:on
WAFではなく、Heroku側で入れる(DBの接続もされたくないため)
メンテナンスモードにしても、schejuler jobsは実行される
一発で止める方法がなくてめんどくさい
commandをecho "command"とかにするみたいな運用でカバーしてる
こんな表示になる
https://gyazo.com/e899ed3d6975f79b3232485e27305a54
データを古いDBから新しいDBにコピーする
heroku pg:copy DATABASE_URL HEROKU_POSTGRESQL_BLUE_URL --app sushi
$ heroku pg:copy SOURCE TARGET
新旧DBのDATABASE_URLを確認する方法
heroku pg:info
app名を確認する方法
heroku apps
実行時間
hobby-devからの移行だと数秒程度だった(移行したアプリケーションはレコードにテキストしかない)
新しいDBを昇格する
heroku pg:promote HEROKU_POSTGRESQL_BLUE_URL --app sushi
ちなみにデプロイしてるアプリのリポジトリでコマンドを打つ場合、--appは不要
昇格するとDBのエイリアスが差し替わる(というメッセージがshellに表示される)。確認してみよう
code:bash
$ heroku pg:info
=== DATABASE_URL, HEROKU_POSTGRESQL_BLUE_URL # 新しい方がDATABASE_URLに差し替わった
(略)
=== HEROKU_POSTGRESQL_MAUVE_URL # もともとDATABASE_URLだったやつ
After the promotion, followers of your original primary database do not automatically start to follow your new primary.
もともとのDBが自動的にSlaveになるわけではない
お掃除
過去のを破壊
heroku addons:destroy 過去のDB
トラブル