【heroku】herokuのpostgresqlをhobby-devからhobby-basicにupgradeする【rails5】
先日herokuから突然以下のメールが届きました。
[warning] Database disruption imminent, row limit exceeded for hobby-dev database on Heroku app APP名 heroku The database DATABASE_URL on Heroku app APP名has exceeded its allocated storage capacity. Immediate action is required. The database contains 10,551 rows, exceeding the Hobby-dev plan limit of 10,000. INSERT privileges to the database will be automatically revoked in 7 days. This will cause service failures in most applications dependent on this database.
要するにDBのレコード数が1万レコードを超過したから、
DBを有料プランに移行するかレコードを削除してくれ!
って事ですね。
今回は有料プランであるhobby-basicのDBを作成し、データを移行したいと思います。
今回は海外ドラマの視聴記録サービス mitano
のDBをhobby-devからhobby-basicにupgradeしたいと思います。
mitano - あなたが見ている海外ドラマの視聴記録を簡単に | mitano
STEP1. hobby-basicのDB作成
$ heroku addons:create heroku-postgresql:hobby-basic Creating heroku-postgresql:hobby-basic on ⬢ infinite-mountain-○○○○... $9/month Database has been created and is available ! This database is empty. If upgrading, you can transfer ! data from another database with pg:copy Created postgresql-flat-46737 as HEROKU_POSTGRESQL_AQUA_URL Use heroku addons:docs heroku-postgresql to view documentation
STEP2. フォロワーがリーダー・データベースに追いつくのを待ちます。
$ heroku pg:wait
STEP3. データベースへの書き込み防止のためメンテナンスモードに!
$ heroku maintenance:on Enabling maintenance mode for ⬢ infinite-mountain-92961... done
上記コマンドを実行するとサービスの画面が以下から
以下のメンテナンス画面に自動で切り替わっていました。
素敵です!さすがheroku!
STEP4. DB移行
旧DBから新DBにデータを移行します!
$ heroku pg:copy 旧URL 新URL ▸ WARNING: Destructive action ▸ This command will remove all data from AQUA ▸ Data from DATABASE will then be transferred to AQUA ▸ To proceed, type infinite-mountain-92961 or re-run this command with ▸ --confirm infinite-mountain-○○○○ > infinite-mountain-○○○○ Starting copy of DATABASE to AQUA... done Copying... done
STEP5. DBの向き先を新DBに変更
$ heroku pg:promote HEROKU_POSTGRESQL_AQUA_URL Ensuring an alternate alias for existing DATABASE_URL... HEROKU_POSTGRESQL_PINK_URL Promoting postgresql-flat-46737 to DATABASE_URL on ⬢ infinite-mountain-○○○○... done
STEP6. メンテナンスモードを解除!
$ heroku maintenance:off Disabling maintenance mode for ⬢ infinite-mountain-○○○○.. done
10分程で新DBに移行が完了しました!
緊張しましたがheroku はやはりなんでも手軽にできて便利ですねっ!
プロフェッショナルのための 実践Heroku入門 プラットフォーム・クラウドを活用したアプリケーション開発と運用 (書籍) |