😀

RDS MySQL 5.7 から Aurora MySQL 8.0 への簡単移行ガイド

2024/01/31に公開

イントロダクション

本記事では、RDS MySQL5.7から Aurora MySQL8.0.xx への移行するための手順を記載します。他の移行方法と比較しても、おそらく本方法がダウンタイムを1番短くすることが可能かと思います。

移行の目的

RDS 5.7系が、2024/2/29で標準サポート終了日を迎えてしまうため、自社で運用しているRDSもMySQL8.0系への移行を行う必要がありました。それに併せて、以前から検討していた Aurora MySQL への移行も併せて行うこととしました。

手順の流れ

  1. 移行元のRDSからBlue/Green Deploymentを作成する
  2. 1で作成したBlue/Green Deployment用のRDSインスタンスからAurora read replicaを作成
  3. Aurora replicaを昇格する

移行元のRDSからBlue/Green Deploymentを作成する

まずは、移行元のRDSから Blue/Green Deploymentを使用して、グリーン環境にコピーを作成します。その際に、グリーン環境では、MySQL8.0系を選択します。
※ 記事作成時は、AuroraがMySQL8.05に対応していないため、8.0.32を指定します。

作成したBlue/Green Deployment用のRDSインスタンスからAurora read replicaを作成

Green環境にあるインスタンスから、Aurora read replica を作成します。

こうすることで、準備段階で、サービスに影響を与えることなく、データの同期した Aurora環境を構築することができます。

Aurora read replicaを昇格する

あとは、Aurora read replica を昇格させます。この間は、エンドポイントの切り替え及び書き込みの検証のために、サービスのメンテナンスをとりました。昇格自体は数分程度で完結します。

本手法のメリット

Green環境作成からのAurora read replica作成と、準備段階で時間のかかる作業があるのですが、サービスを一切止めることなく、同期の取れた状態にまで構築できるのは、非常にありがたいです。

移行方法を検討していたときは、RDS MySQL 5.7にAurora MySQL 5.7のreplicaを追加し、プライマリ昇格後にAurora MySQL 8.0へのアップグレードという方法も記事としてあったのですが、Blue/Green Deploymentを使えば、RDS MySQL 8.0を作成できるというのがわかっていたので、アプローチとして、RDS MySQL8.0 -> Aurora replica を昇格という方法をとりました。これにより、ダウンタイムを短くできます。

まとめ

Blue/Green Deploymentを使った少し変わった移行の方法についてまとめました。今後も同じようなケースがあるかはわかりませんが、もし移行がまだの開発者の方は試してみていだければと思います。

Discussion