🦄

HerokuのPostgresデータベースをアップグレードする方法

2021/12/04に公開

Heroku の Postgres データベースをアップグレードしていきます。

個人利用や開発段階では無料のデータベースでも十分ですが、本格的なアプリを運用しようとすると、アップグレードが必要になってきます。

コンテナ(Dyno)のアップグレードは、Heroku の画面で変更が可能なので、簡単にアップグレードできます。

しかし、無料の Postgres データベースから有料のデータベースに変更するには、コマンドで実行が必要になってきます。

すでに運用済みで、途中からアップグレードしたい方など、不安かと思いましたので、紹介します。

ぜひ参考にして下さい。

動画でも解説しています。

動画解説

https://youtu.be/Mqqfkbdp-uc

価格

本格的なアプリで運用すると、下記の価格になります。

Dyno: Standard 1X($25)

Postgres: Standard($50)

https://jp.heroku.com/pricing

アップグレード

基本的には公式ドキュメントを参考にして下さい。

https://devcenter.heroku.com/articles/upgrading-heroku-postgres-databases

スタンダードプランにアップグレードします。

// 現状確認
$ heroku pg:info -a アプリ名

// 新しいDBを作成
// Hobby Basicにしたい方
// heroku addons:create heroku-postgresql:hobby-basic -a アプリ名
$ heroku addons:create heroku-postgresql:standard-0 -a アプリ名

// DB停止
$ heroku pg:wait -a アプリ名

// メンテナンスモードON
$ heroku maintenance:on -a アプリ名

// カラー名を確認
$ heroku pg:info -a アプリ名

// DBをコピー
$ heroku pg:copy DATABASE_URL HEROKU_POSTGRESQL_カラー名 -a アプリ名

// DB参照先変更
$ heroku pg:promote HEROKU_POSTGRESQL_カラー名 -a アプリ名

// メンテナンスモードOFF
$ heroku maintenance:off -a アプリ名

// DATABASE_URLが新しいDBに代わっているか確認
$ heroku pg:info -a アプリ名

ダウングレード

ダウングレードもアップグレードと同じ方法ですることができます。

// 現状確認
$ heroku pg:info -a アプリ名

// DB停止
$ heroku pg:wait -a アプリ名

// メンテナンスモードON
$ heroku maintenance:on -a アプリ名

// DBをコピー
$ heroku pg:copy DATABASE_URL HEROKU_POSTGRESQL_カラー名 -a アプリ名

// DB参照先変更
$ heroku pg:promote HEROKU_POSTGRESQL_カラー名 -a アプリ名

// メンテナンスモードOFF
$ heroku maintenance:off -a アプリ名

// DATABASE_URLが新しいDBに代わっているか確認
$ heroku pg:info -a アプリ名

使用していた DB アドオンを削除する。

Heroku の画面からアドオンを消すことができます。

バックアップ

本格的なアプリの運営には、データベースのバックアップは必須になります。

公式ドキュメントを参考にして下さい。

https://devcenter.heroku.com/articles/heroku-postgres-backups#scheduling-backups

// 現在のバックアップ状況を確認
$ heroku pg:backups:schedules -a アプリ名

// スケジュール設定
$ heroku pg:backups:schedule DATABASE_URL --at '4:00 Asia/Tokyo' -a アプリ名

// スケジュール確認
$ heroku pg:backups:schedules -a アプリ名

毎日 4 時にバックアップするように設定しました。

Heroku を使用すると簡単に設定することができます。

Discussion