2021年4月5日月曜日

Heroku の Redis Addon が End of Life になったのでアップグレードしてみた

Heroku の Redis Addon が End of Life になったのでアップグレードしてみた

概要

Heroku から連絡があり使っている redis-addon のバージョンが古いからバージョンアップしてくれとの連絡が来ました
なのでアップグレードしてみました

環境

  • macOS 11.2.3
  • heroku 7.51.0
  • redis 4.0.14 -> 6.0

現状の確認

まずは現在使っている redis の情報を確認しましょう
Version が 4.0.14 で End of Life になっているのが確認できます

  • heroku redis:info -a your-app-name
=== redis-silhouetted-79757 (REDIS_URL)
Plan:                   Hobby Dev
Status:                 available
Created:                2019-06-28 03:22 
Version:                4.0.14 (End of Life)
Timeout:                300
Maxmemory:              noeviction
Maintenance:            not required
Maintenance window:     Mondays 20:30 to Tuesdays 00:30 UTC
Persistence:            None
HA Status:              Unavailable
Requires TLS:           No
Keyspace Notifications: Disabled

REDIS_URL の確認

上記の REDIS_URL を確認します
今回は新しい redis にデータを移行する方式を取ります

  • heroku config:get REDIS_URL -a your-app-name

ここで表示される URL はメモしておきましょう

既存の redis のデータを元に新規で redis を作成する

先程確認した REDIS_URL を元に新規で redis を作成します
addons:create--fork オプションを使います

  • heroku addons:create heroku-redis:hobby-dev --fork redis://h:xxxxxxxxx@ec2-xxxxxxxxx:12345 -a your-app-name
Creating heroku-redis:hobby-dev on ⬢ your-app-name... free
Your add-on should be available in a few minutes.
! WARNING: Data stored in hobby plans on Heroku Redis are not persisted.
redis-silhouetted-79757 is being created in the background. The app will restart when complete...
Use heroku addons:info redis-silhouetted-79757 to check creation progress
Use heroku addons:docs heroku-redis to view documentation

作成状況の確認

すぐに新規の redis は払い出されないので状況を逐一確認しましょう
Status: available になれば新規作成+データの移行が完了しています
fork in progress になっている場合はまだデータの移行中になるので古い redis など削除しないようにしましょう

  • heroku redis:info redis-silhouetted-79757 -a your-app-name

アプリが使用する redis を変更する

作成が完了したら使用する redis を変更します
redis:promote を使います
新規で作成された redis を指定しましょう

  • heroku redis:promote redis-amorphous-58530 -a your-app-name

動作確認

アプリにアクセスして正常に動作する確認しましょう

古い redis を削除する

古いバージョンの redis は削除しましょう
addons:destroy で古い redis を指定すれば OK です

  • heroku addons:destroy redis-silhouetted-79757

おまけ: データを移行しないでアップグレードする場合は

いきなり destroy しても良いですが丁寧なのは create -> promote -> destroy かなと思います

  • heroku addons:create heroku-redis:hobby-dev -a your-app-name2
  • heroku redis:promote redis-yyyy-12345 -a your-app-name2
  • heroku addons:destroy redis-xxxxx-12345

参考サイト

0 件のコメント:

コメントを投稿