3
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Blue/GreenデプロイでAuroraMySQL3にアップグレードしてみた

Posted at

はじめに

Amazon Aurora MySQL 2(MySQL5.7互換)が2024年10月31日にサポートが終了するので、Aurora MySQL 3(MySQL8互換)にバージョンアップしました。
手法は色々あるのですが、Amazon RDS がマネージドサービスとして提供するBlue/Greenデプロイメントが良さげでしたので手順を共有します。

手順

現状のバージョン確認

アプリケーションと同じルートからバージョンを確認します。

$ mysql -h foo-production.cluster-bar.ap-northeast-1.rds.amazonaws.com -u username -ppassword dbname

Server version: 5.7.12 MySQL Community Server (GPL)
Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.

MySQL5.7が動いていますね。

> select @@aurora_version;
+------------------+
| @@aurora_version |
+------------------+
| 2.11.5           |
+------------------+

Auroraのバージョンでいうと2でした。

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

現在の本番環境(Blue環境)から、ステージング環境(Green環境)に、論理レプリケーションするため、予めbinlog_formatMIXEDに変更しておきます。
(AWSはROWを推奨しているという情報もありますので公式で確認して下さい)

使用中のパラメータグループをコピー

image.png
image.png

コピーしたパラメータグループを編集

image.png
image.png

変更前と変更後を比較

余計な箇所を変えていないか念の為。
image.png
image.png

メジャーバージョンアップになるので、MySQL8用のパラメータグループも準備しておかないといけません。
デフォルトのdefault.aurora-mysql8.0を基に、カスタムで修正を加えます。
修正内容は、デフォルトのdefault.aurora-mysql5.7と、使用中のパラメータグループを比較し、差分をMySQL8用に置き換えます。

DBインスタンスを変更

作成したパラメータグループをDBインスタンスに割り当てます。
image.png
image.png

もし、DBインスタンスクラスにdb.t3.smallを使っている場合、Aurora MySQL 3ではサポートしませんので、併せてdb.t3.mediumにアップグレードしておきます。
image.png

DBインスタンスを再起動

変更したら、再起動して反映します。
image.png
再起動を忘れて次に進むと、デプロイで次のエラーになりますよ!

Blue Green Deployments requires writer instance to be in-sync with cluster parameter group.

ブルー/グリーンデプロイの作成

本番環境を基に、Aurora MySQL 3 のステージング環境(Green環境)を作ります。

対象のDB識別子を選択し、アクションメニューから「ブルー/グリーンデプロイの作成」を実行します。
image.png

ステージング環境(Green環境)の設定をします。
エンジンバージョンには、Aurora MySQL 3(MySQL 8互換)を選択します。リビジョンはAWSが推奨するもので良いと思います。
パラメータグループには、先ほど作成したMySQL8用のパラメータグループを選択します。
image.png

すべて良ければ「ステージング環境の作成」をクリックします。
image.png

作成中の画面になります。
複製後にバージョンアップも行うので、ここでは結構な時間がかかります。
image.png

終わったらエンドポイントを確認します。
この時点で、本番環境(Blue環境)からステージング環境(Green環境)へ、論理レプリケーションが始まっています。

image.png

Green環境のエンドポイントに接続し、バージョンを確認してみましょう。

$ mysql -h foo-production-green-xxx.cluster-bar.ap-northeast-1.rds.amazonaws.com -u username -ppassword dbname

Server version: 8.0.36 Source distribution
Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.

MySQL8で動いています。

> select @@aurora_version;
+------------------+
| @@aurora_version |
+------------------+
| 3.07.1           |
+------------------+

Auroraのバージョンでいうと3でした。

テスト

Green環境を使って、業務チームにがんがんテストしてもらいます。

切り替え(スイッチオーバー)

ステージング環境(Green環境)を、新しい本番環境にプロモート(昇格)させます。

ロール「ブルー/グリーンデプロイ」のDB識別子を選択し、アクションメニューから「切り替え」を実行します。
image.png
切り替えを指示すると、AWSは準備が整っているかチェックし、Blue/Green双方の書き込みをブロックしてデータ損失を防ぎます。
切り替えにかかる時間は1分程度ですが、この間、アプリがエラーを返すことがあるので、サービスの計画停止時間内に実施します。
CloudWatchがアラームを出すかもしれません。運用監視チームへの一報も忘れずに。

切り替えのタイムアウト(デフォルトは5分)より長くかかる場合、変更はすべてロールバックされ、どちらの環境にも変更は加えられません。

切り替え後、新しい本番環境に接続します。
エンドポイントは元の本番環境と同じです。

$ mysql -h foo-production.cluster-bar.ap-northeast-1.rds.amazonaws.com -u username -ppassword dbname
> select @@aurora_version;
+------------------+
| @@aurora_version |
+------------------+
| 3.07.1           |
+------------------+

アプリでも動作確認し、問題なければ古いBlue環境を削除します。

3
2
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
3
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?