こんにちは。フロムスクラッチのインフラチームに所属している山崎です。
今回は「Amazon RDSでMySQLからAuroraへの移行」について投稿させて頂きます。
AWSの運用管理者の方の中には、「MySQLをAuroraに移行したい」という思いを抱いている方もいるのではないでしょうか?私もそのうちの1人でした。結局、移行を実施したのですが、移行の方法についてまとまっている手順がAWSドキュメントやネット記事に無かったので、断片的なドキュメントをまとめつつ、検証を行い完成させました。今回は、その手順について共有させて頂きます。
結論から言うと、「Auroraリードレプリカを作成後、移行対象MySQLの更新を止め(Read-onlyにする)、Auroraリードレプリカを昇格、その後アプリの接続をMySQLからAuroraに切り替える」という方法をとります。簡単なイメージ図は次の通りです。
こちらが手順の目次になります。以降、手順を解説していきます。
-----------------------------------------------------------------------
◆事前作業
1.移行対象MySQL専用のパラメータグループを作成
2.Auroraリードレプリカを作成
◆移行作業
1.移行対象MySQLのパラメータグループを変更して、Read-onlyにする
2.レプリカラグが無いことを確認
3.Auroraリードレプリカの昇格
4.アプリの切り替え(移行対象MySQL→昇格したAurora)
5.事後確認
6.移行対象MySQLの削除
-----------------------------------------------------------------------
<手順の解説>
◆事前作業
本番の移行作業では、「移行対象MySQLの更新を止める(Read-only)」、「Auroraリードレプリカが作成されている」の2点が必要です。そのための準備をここで実施します。
1.移行対象MySQL専用のパラメータグループを作成
Read-onlyはRDSのパラメータグループを用いて実現します。
(1)移行対象MySQLのパラメータグループをコピーして、ユニークなパラメータグループを作成
(2)(1)で作成したパラメータグループを編集、read_onlyの値を1にする
2.Auroraリードレプリカを作成
移行作業前に作成します。作成時間は環境によるので、事前検証を行い作成時間を見積もっておいて下さい。
(1)Auroraリードレプリカを作成
(2)作成完了の確認
◆移行作業
移行作業では、Read-only、接続断がそれぞれ数分発生するので、サービス影響が最も無い時間帯に実施します。
1.移行対象MySQLのパラメータグループを変更して、Read-onlyにする
(1)移行対象MySQLのパラメータグループを、事前準備の1で作成したものに変更
(2)移行対象MySQLを再起動する
(3)移行対象MySQLでRead-onlyであることを確認
mysql> create table hogehoge;
次のエラーが出ること。
ERROR 1290 (HY000): The MySQL server is running with the --read-only option so it cannot execute this statement
2.レプリカラグが無いことを確認
mysql> show slave status\G
(`Seconds_Behind_Master: 0`)を確認する。
3.Auroraリードレプリカの昇格
(1)昇格を実行する
(2)昇格完了を確認する
4.アプリの切り替え(移行対象MySQL→昇格したAurora)
アプリの接続先(エンドポイント)を「移行対象MySQL」から「昇格したAurora」に切り替えます。切り替えは、ご自身の環境に応じて実行して下さい。
なお、この方法では移行対象MySQL(インスタンス名をAとする)を別名の昇格したAurora(インスタンス名をBとする)に変える形なります。インスタンス名が変わるので、それを避けたい場合は、次の手順でインスタンス名の入れ替えを行って下さい。
5.事後確認
ご自身の環境に応じて、適切に正常性を確認して下さい。
6.移行対象MySQLの削除
不要な移行対象MySQLを削除します。
以上です。作業実施前は、必ず作業の検証(リハーサル)を実施して下さい。
ご覧頂きありがとうございました。