Posted at

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

More than 3 years have passed since last update.


Heroku の Postgres アドオンプラン

Heroku で Postgres を使いたい時はアドオンとしてデータベースを追加します。

https://addons.heroku.com/heroku-postgresql

無料プラン(Hobby Dev) では 10,000 レコードまで保存できます。

サービスの内容によってはリリース後のユーザー増によっては 10,000 レコードでは足りなくなってきます。

そんな時はアップグレードしましょう。一番安いプランは Hobby Basic で $9/月 です。


アップグレード手順

Heroku での DB のアップグレード手順は、

1. 新しいプラン(ここでは Hobby Basic)のデータベースを追加

2. 新しいデータベースに既存のデータベースの内容をコピー

3. アプリケーションサーバの参照先に設定

になります。


1.新しいプラン(ここでは Hobby Basic)のデータベースを追加

コマンドでも追加できますがアドオンのページからも追加できます。

https://addons.heroku.com/heroku-postgresql

作成すると新規のデータベースを表す環境変数(HEROKU_POSTGRESQL_PINK_URL や HEROKU_POSTGRESQL_GREEN_URL などの色の名前がついた変数)が定義されます。


2. 新しいデータベースに既存のデータベースの内容をコピー

データベースをコピーする前にメンテナンスモードを on にして既存データベースをロックします。

heroku maintenance:on

heroku ps:scale worker=0

pg:copy を使って新しいデータベースにコピーをします。

heroku pg:copy DATABASE_URL HEROKU_POSTGRESQL_COLOR_URL --app APP_NAME


3. アプリケーションサーバの参照先に設定

データベースのコピーが終わったら新しいデータベースをアプリサーバの参照先に設定します。

heroku pg:promote HEROKU_POSTGRESQL_COLOR_URL

その後メンテナンスモードを off にして作業終了です。

heroku ps:scale worker=1

heroku maintenance:off


実行後

heroku pg:info でデータベースの状況が確認できます。

takecian$ heroku pg:info

=== HEROKU_POSTGRESQL_AMBER_URL
Plan: Hobby-dev
Status: Available
Connections: 0/20
PG Version: 9.3.6
Created: 2014-08-29 06:49 UTC
Data Size: 10.7 MB
Tables: 8
Rows: 8440/10000 (In compliance, close to row limit)
Fork/Follow: Unsupported
Rollback: Unsupported

=== HEROKU_POSTGRESQL_GREEN_URL (DATABASE_URL)
Plan: Hobby-basic
Status: Available
Connections: 1/20
PG Version: 9.4.1
Created: 2015-04-25 00:21 UTC
Data Size: 9.1 MB
Tables: 8
Rows: 8852/10000000 (In compliance)
Fork/Follow: Unsupported
Rollback: Unsupported


参考

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