Help us understand the problem. What is going on with this article?

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

More than 5 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

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away