MySQL から Amazon Aurora のリードレプリカを作成して移行してみた

Posted on

RDS for MySQL から Amazon Aurora への移行を検討していたら、タイミングよく便利な機能がリリースされました。

いま稼働している MySQL から Aurora のリードレプリカを作成し、そのリードレプリカを昇格させることで簡単に MySQL から Aurora へ移行できるという機能です。

これまでも MySQL のスナップショットから Aurora クラスタを起動することはできましたが、今回のリードレプリカを使えば移行時のダウンタイムを最小化できます。

リードレプリカの作成と昇格

Create Aurora Read Replica

対象となる 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 のスナップショットが取られるので、おそらく次のような仕組みだと思います。

  1. MySQL のスナップショットを取得
  2. スナップショットから Aurora クラスタを起動
  3. マイグレーションしながらレプリケーションの差分を適用

今回できるようになったのは 3 番です(2 番は以前からできた)。どういう仕組みで差分を適用しているのか分かりませんが、数時間に渡るマイグレーションでもレプリケーション遅延 (Replica Rag) はまったく発生しませんでした。

Aurora リードレプリカの昇格も試してみましたが 1 分程度で完了しました。これならメンテナンス時間も最小化できます。

まとめ

Amazon Aurora が登場してから時間も経ち、他社の事例を見ても移行しない理由は見当たりません。移行手順も以前に比べれば圧倒的に簡単になったので、AWS で RDS for MySQL を使っている人は移行を検討してみてはいかがでしょうか。