RDS MySQL 5.7 から Aurora MySQL 8.0 への簡単移行ガイド
イントロダクション
本記事では、RDS MySQL5.7から Aurora MySQL8.0.xx への移行するための手順を記載します。他の移行方法と比較しても、おそらく本方法がダウンタイムを1番短くすることが可能かと思います。
移行の目的
RDS 5.7系が、2024/2/29で標準サポート終了日を迎えてしまうため、自社で運用しているRDSもMySQL8.0系への移行を行う必要がありました。それに併せて、以前から検討していた Aurora MySQL への移行も併せて行うこととしました。
手順の流れ
- 移行元のRDSからBlue/Green Deploymentを作成する
- 1で作成したBlue/Green Deployment用のRDSインスタンスからAurora read replicaを作成
- 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