こんにちは、インフラのテックリードをしている沼沢です。
この記事は、株式会社asken (あすけん) Advent Calendar 2024 の23日目の記事です。 また、「あすけんの Aurora 2 → Aurora 3 へのメジャーバージョンアップ軌跡」の第2弾です。
第1弾「絶望篇」はこちらからお読みください。
あすけんの Aurora 2 → Aurora 3 へのメジャーバージョンアップ軌跡 (1) 絶望篇
さて、前回「データ移行+レプリケーションを数ヶ月単位の長期戦覚悟でやるしかない状況」に追い込まれた私でしたが、その後の軌跡をお伝えしていきたいと思います。
絶望は続く
2024年7月
あすけんの Aurora メジャーバージョンアップを完了させるには、長期戦覚悟でデータ移行+レプリケーションでやるしかないことが見えたため、覚悟を決めて取り組むことにしました。
DMS の検証
AWS サポートから提示いただいた案の中で、自身では過去に RDS Aurora クラスタ同士のレプリケーションは経験があったため、経験の無かった DMS (Database Migration Service) がどのようなものなのか調査・検証してみることにしました。
単純なバイナリログレプリケーションよりも有用であれば DMS を採用しようという考えです。
まずは以下の資料を読み、理解を深めることにしました。
- DMS サービスページ
- Black Belt 資料
- AWS DMS を使用してソース RDS MySQL データベースをターゲット RDS MySQL データベースに移行する際に従うべきベストプラクティスは何ですか?
- Limitations on using a MySQL database as a source for AWS DMS
その後、実際にステージングのデータを用いて DMS の検証を行いました。
検証した結果、ややクセが強い印象を持ちましたが、なんとか使えそうだというのはわかったため、次に本番データで検証してみることにしました。
しかし、やはりデータ量の多さに苦労することになります。
最初、対象データベース内のテーブルを全て移行する設定でフルロードを走らせましたが、何時間待っても一向に終わる気配がありません。3日ほど放置しても終わらなかったため、途中で停止しました。
ここから、フルロードを効率的に実行する方法を調査し、検証を進めることに。
https://aws.amazon.com/jp/blogs/news/introducing-aws-dms-replication-engine-version-3-1-2/
などを参考に、並列度を高める方法を検証しフルロードの並列度は上げることはできたのですが、巨大テーブル1つを移行するのに15時間かかることがわかりました。
全てのデータを移行し、その後の差分も追いつかせるのに一体どれだけの時間がかかるのか…。
絶望感はまだ拭えません。
しかしここで転機が訪れます。
希望の光
転機となったのは、AWS 社の DMS スペシャリストとのミーティングでした。
実は DMS の検証を実施している裏で、弊社担当の AWS ソリューションアーキテクトの方にも DMS についての相談を持ちかけていて、AWS 社の DMS スペシャリストの方を交えてディスカッションさせていただける機会を設けていただきました。
2024年8月
DMS スペシャリストとの方とのミーティングでは主に DMS の質問(使い方、効率的なフルロードの方法など)を行うことで DMS による移行をいかに短縮できるかを相談する予定でした。
実際にそのような内容でミーティングを進めていきましたが、その中で DMS スペシャリストから放たれた一言で希望が見えてきます。
「データディクショナリ不整合は、お客様での対処が難しい場合はサポートケースに依頼すれば AWS 側で解消できる可能性がある」*1
なん…だと…?
ここまで1ヶ月半ほど、DMS の調査や検証に費用と時間を費やしてきたことなどどうでも良くなるほどの希望の光が見えました。
AWS 側でデータディクショナリ不整合の解消が可能であれば、以下の手順でスムーズな移行が可能だからです。
- 本番環境の Aurora クローンを作成
- クローンされた Aurora クラスタに対して、AWS にてデータディクショナリ不整合を解消
- クローンされた Aurora クラスタをインプレースアップグレード
- 本番稼働中の Aurora とインプレースアップグレード済みのクラスタ間でレプリケーションを設定
- レプリカが追いつき次第、サービス停止のメンテナンスにて切り替えを実施
そこで、助言通りクローン作成後、そのクローンに対して AWS サポートにデータディクショナリ不整合を依頼し、無事に不整合は解消されました。*1
あとは不整合解消済みのクラスタを使って前述の手順で事を進めれば良い状態になりました。
2024年9月 上旬 〜 中旬
ここまで既に2ヶ月ほどメジャーバージョンアップ関連のことに時間を費やしていますが、ようやくバージョンアップ実施の目処が見えてきたため、ビジネスサイドとメンテナンス日の調整を始めます。
そして、9月中旬頃に日程が決まり、いよいよゴールが見えてきました。
並行してインプレースアップグレード、レプリケーション等の作業が完了し、いよいよメンテナンス日を待つのみとなりました。
しかし、ここでまたもや困難に遭遇します。
第3弾へ続く。
We are hiring !
このようなカオスを楽しめる仲間を絶賛募集中です!
https://www.asken.inc/recruit
*1:公式情報やサポートから提案してもらった方法では困難であると認められた場合に限り実施いただけるものであり、どのような状況でも実施いただけるものではありませんのでご注意ください