MySQL から Amazon Aurora のリードレプリカを作成して移行してみた
Posted on
- #aws
RDS for MySQL から Amazon Aurora への移行を検討していたら、タイミングよく便利な機能がリリースされました。
いま稼働している MySQL から Aurora のリードレプリカを作成し、そのリードレプリカを昇格させることで簡単に MySQL から Aurora へ移行できるという機能です。
これまでも MySQL のスナップショットから Aurora クラスタを起動することはできましたが、今回のリードレプリカを使えば移行時のダウンタイムを最小化できます。
リードレプリカの作成と昇格
対象となる MySQL を選択して "Create Aurora Read Replica" をクリックするだけ。拍子抜けするくらい簡単です。
ドキュメントに "Be prepared for migration to take a while, roughly several hours per terabyte (TB) of data." とあるように、マイグレーションには時間がかかります。実際に試したところ 1 TB / 3,000 IOPS のインスタンスで半日程度かかりました。
最初に MySQL のスナップショットが取られるので、おそらく次のような仕組みだと思います。
- MySQL のスナップショットを取得
- スナップショットから Aurora クラスタを起動
- マイグレーションしながらレプリケーションの差分を適用
今回できるようになったのは 3 番です(2 番は以前からできた)。どういう仕組みで差分を適用しているのか分かりませんが、数時間に渡るマイグレーションでもレプリケーション遅延 (Replica Rag) はまったく発生しませんでした。
Aurora リードレプリカの昇格も試してみましたが 1 分程度で完了しました。これならメンテナンス時間も最小化できます。
まとめ
Amazon Aurora が登場してから時間も経ち、他社の事例を見ても移行しない理由は見当たりません。移行手順も以前に比べれば圧倒的に簡単になったので、AWS で RDS for MySQL を使っている人は移行を検討してみてはいかがでしょうか。