8
4

RDS Blue/Green DeploymentsでMySQL 5.7->8 へアップグレードした話

Last updated at Posted at 2024-07-19

背景

Webサービスを運用していくにあたり、RDBのアップグレードに迫られる場合があります。ありますよね?

弊社のあるプロダクトのバックエンドについても Aurora MySQL 2.11.1(MySQL 5.7系) で稼働しておりましたが、Aurora MySQL v2系は 2024/10/31 を以って標準サポートが終了します。

Aurora MySQL v3 で現時点で利用可能な最新LTSバージョンは 3.04.2 (MySQL 8.0.28) になるため、MySQL 5.7 から MySQL8へのアップグレードが必要になってしまいました。

今回はそんなDBアップグレードを「RDS Blue/Green Deployments」でやってみた、という記事になります。

RDS Blue/Green Deploymentsって?

以下はAWSの公式Docです

ざっくりと言うと、現行DB環境(Blue)に対し、論理レプリケーションされたステージング環境(Green)を作成してくれるものです。
Green環境はBlue環境と異なるバージョンのインスタンスで作成することができるため、今回はGreen環境をAurora MySQL 3.04.2 (MySQL 8.0.28) で作成しています。

どうやったか

今回行ったアップグレード手順をざっくりと記載していきます。

現行DBのバイナリログを出力する

Blue/Green構成を作成するにあたり、Blue環境のバイナリログ (binlog_format) をオンにする必要があります。
BlueのDBクラスターパラメータのbinlog_formatROWにしてDBを再起動します。

Blue/Green環境の作成

AWS マネージメントコンソールから、該当のAurora クラスターを選択し、 Blue Green Deployment を作成します。
作成時にGreen環境のバージョンを指定できるため、今回は「Aurora MySQL 3.04.2 (compatible with MySQL 8.0.28) 」を選択しました。
Blue/Green構成の作成には弊社環境で60分程度かかります。作成中もBlue環境は特段停止しないためサービスを止めずに作成可能です。

Green環境でテスト

Green環境が作成されたら、テストを行います。

検証環境をGreen環境のエンドポイントに向け、各種テストを行います。
ここでは主にmysq5.7->8にアップグレードすることによりアプリケーションの振る舞いに影響がないかどうかを確認しました。

Blue/Greenの切り替え

テストが完了したら、Blue/Greenの切り替えを行います。

1~2分程度DBが停止したのち、BlueとGreenが切り替わります。

Blue/Green構成の削除

その後しばらく運用してみて動作に問題がなさそうであれば、Blue/Green環境を削除します。
Blue/Green環境を削除すると、旧Blue環境が個別のDBクラスタとして残るため、こちらも任意のタイミングで削除します。

やってみての所感

上記手順で特に不具合もなくアップデートを完了することができました。
以下の点が特に嬉しかったです。

  • レプリケーションを簡単に構築てきる
  • Green環境上で思う存分テストできる
  • 1~2分程度の停止時間で新DBへの切り替えが完了する(これがすごく嬉しい!)

最後に

弊社CBcloudではバックエンドエンジニアを募集しています!!
Railsでのアプリケーション構築がメインになりますが、本記事のようにAWSをはじめとしたクラウドインフラに触れる機会も多くあり、スキルアップを狙える環境だと思います。ご興味があれば以下からエントリーください!

8
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
8
4