HerokuのPostgreSQLのアップグレード手順 #heroku #dev #postgresql version 5

2016/05/07 12:18 by hiro_y hiro_y
  :追加された部分   :削除された部分
(差分が大きい場合、文字単位では表示しません)
HerokuのPostgreSQLのアップグレード手順 #heroku #dev #postgresql
PostgreSQLのバージョンを上げるときとか、プランを変更する場合に。

## 公式のガイド

- [Upgrading Heroku Postgres Databases | Heroku Dev Center](https://devcenter.heroku.com/articles/upgrading-heroku-postgres-databases)
- [Heroku PGBackups | Heroku Dev Center](https://devcenter.heroku.com/articles/heroku-postgres-backups)

## 基本戦略

新規DBを作成し(その時点でのデフォルトバージョンになる、プラン変更すればそのプランのものができる)、そのDBに今使っているDBのデータをコピー。使うDBを、新しく作ったDBに向け直す。

## 手順

1. 新規DB作成 `heroku addons:create heroku-postgresql:hobby-basic -a sushi`
    - Standard以上のプランなら `heroku pg:wait -a sushi`
2. メンテナンスモードON `heroku maintenance:on -a sushi`
3. データコピー `heroku pg:copy DATABASE_URL {NEW_DB_NAME} -a sushi`
4. 新規DBを昇格 `heroku pg:promote {NEW_DB_NAME} -a sushi`
5. 昇格を確認 `heroku config -a sushi`
    - `DATABASE_URL` が変わったのを確認する
5. メンテナンスモードOFF `heroku maintenance:off -a sushi`
6. 動作確認いろいろ
7. バックアップ設定確認 `heroku pg:backups schedules -a sushi`
    - `DATABASE_URL` がバックアップ対象であることを確認する
8. 旧DBを破棄 `heroku addons:destroy {OLD_DB_NAME} -a sushi`
9. バックアップが正常に取れたのを確認 `heroku pg:backups -a sushi`

## 注意事項

- `sushi` はアプリケーションの名前
- アプリケーション側で `DATABASE_URL` に接続するようになっているのが前提
- `hobby-basic` の部分は新しく使うHeroku Postgresのプランによって変更すること
- 随時 `heroku pg:info -a sushi` でDBの状態を確認しつつ進むこと
- [Postico](https://eggerapps.at/postico/)などクライアントソフトを使っている場合は接続先のURLが変わるので変更を忘れないこと      

PostgreSQLのバージョンを上げるときとか、プランを変更する場合に。

公式のガイド

基本戦略

新規DBを作成し(その時点でのデフォルトバージョンになる、プラン変更すればそのプランのものができる)、そのDBに今使っているDBのデータをコピー。使うDBを、新しく作ったDBに向け直す。

手順

  1. 新規DB作成 heroku addons:create heroku-postgresql:hobby-basic -a sushi
    • Standard以上のプランなら heroku pg:wait -a sushi
  2. メンテナンスモードON heroku maintenance:on -a sushi
  3. データコピー heroku pg:copy DATABASE_URL {NEW_DB_NAME} -a sushi
  4. 新規DBを昇格 heroku pg:promote {NEW_DB_NAME} -a sushi
  5. 昇格を確認 heroku config -a sushi
    • DATABASE_URL が変わったのを確認する
  6. メンテナンスモードOFF heroku maintenance:off -a sushi
  7. 動作確認いろいろ
  8. バックアップ設定確認 heroku pg:backups schedules -a sushi
    • DATABASE_URL がバックアップ対象であることを確認する
  9. 旧DBを破棄 heroku addons:destroy {OLD_DB_NAME} -a sushi
  10. バックアップが正常に取れたのを確認 heroku pg:backups -a sushi

注意事項

  • sushi はアプリケーションの名前
  • アプリケーション側で DATABASE_URL に接続するようになっているのが前提
  • hobby-basic の部分は新しく使うHeroku Postgresのプランによって変更すること
  • 随時 heroku pg:info -a sushi でDBの状態を確認しつつ進むこと
  • Posticoなどクライアントソフトを使っている場合は接続先のURLが変わるので変更を忘れないこと