AWS RDSのBlue/Greenを使ってMySQLのアップグレードをやってみる~実践~

この記事は「ウィルゲート Advent Calendar 2023」の 6日目の記事です。

adventar.org

弊社で利用しているAWS RDS for MySQLのバージョンをMySQL5.7からMySQL8にアップグレードを行いました。 その際に Blue/Green Deploymentsを使って実施したので手順や実施結果を書いていきたいと思います。

Blue/Green環境を構築する為の事前準備

Green環境用の準備

オプショングループ作成

今回は

エンジン:MySQL

エンジンバージョン:8.0

を選択する。

パラメーターグループ作成

設定確認

既存(Blue環境)のcharactor_setを確認する。
nullならutf8mb4_general_ci
colletion_serverが別の値ならそちらに合わせる。

Blue環境の準備

パラメーターグループ設定確認

binlog_format:MIXEDになっているかを確認する。
なっていなければ変更する。
※変更時RDSの再起動が発生する。

自動バックアップの有効確認


なっていなければ有効にする。
※RDSの再起動が発生する。

Blue/Green環境を構築

①ブルー/グリーンデプロイの作成・新規を選択

②識別子、エンジンバージョン、パラメータグループを設定し作成する


※この際、Green環境のエンジンバージョン、パラメータグループをBlue環境と同じバージョンで作成し、後ほどGreen環境のみ変更することも可能。

Green環境のアップデート

①対象RDSを選択し「変更」をクリック

②アップデート適用するバージョンを選択

③追加設定にてパラメーター/オプショングループをそれぞれ選択する

④変更内容を確認し「DBインスタンス変更を選択」

※オプショングループのみGreen環境作成時にdefaultが割り当てられるため、作成後に変更する必要がある

ここまででBlue/Green環境を構築完了

Blue/Green環境を切り替え

①アクション⇒切替を選択する

②設定内容を確認し切替を選択

③切替が開始される

④完了したことを確認する

事後処理

①blue-green-deployを削除する

②旧RDSの削除

Blue環境だった物が「RDS:[環境名]-old」となっているはずなのでそれを削除する。

切戻し作業

今回は切り戻す必要が無かったのですが、念のために切り戻しの検証を行ったのでそれも書いておきます

①blue-green-deployを削除する

②パラメーターグループにて「read_only:TrueIfreplica⇒0」に変更すること

③切戻し先のRDSを再起動実施する

再起動を行う事によりReadOnly設定が解除される。

④エンドポイントの向き先を変更する

Blue環境だった物が「RDS:[環境名]-old」となっているはずなのでエンドポイント名が変更されているので、エンドポイントの変更を行う。

嵌ったポイント

MySQLではTLS のサポートが以下のようになっていて、弊社で使用していたRedashのバージョンが古くTLS1.1を使用していたためRDSとの接続ができなくなってしまいました。

Redashのバージョンアップを行い問題を解決しました。

まとめ

今回Blue/Green Deploymentsを使用することにより大幅にメンテナンス時間を短縮することができました。

また、エンドポイントを変更したりと言った作業も発生することなく最小限の工数でMySQLのバージョンアップを行う事が出来ました。

今後大きなアップデート際はBlue/Green Deploymentsを活用して行こうと思います。

ウィルゲート Advent Calendar 2023」、翌日は「UXリサーチについて」です。 お楽しみに!