[PR] あなたが Kindle で読みたいその本、Kindle に対応したら Twitter でお知らせします。

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 を使っている人は移行を検討してみてはいかがでしょうか。