RDSでMySQL5.6のエンジンが非対応になるとのことで、この際Auroraに変えるか、と思ったら、ちょっとハマったので備忘録として残します。
MySQLからAurora MySQLへの移行方法は、以下の公式ブログにベストプラクティスが記載されています。
簡単に手順を説明すると
- MySQLインスタンスからAuroraリードレプリカを作成
- インスタンスが立ち上がったら、ステータスを確認して、レプリケーションできてる事を確認
- (書いてないけど)WebアプリケーションのDBの向き先をAuroraに変更
- MySQL側のインスタンスを停止
親切に画面のスクリーンショットまで載っており、途中までは問題も起きずに進められたのですが、 レプリケーションのMasterとなっているMySQL側のインスタンスを停止ができなくて詰まりました。
アクションから停止を選択し、進めていくと、
"Cannot stop or start a Read-Replica instance"
というメッセージが出て、停止できない。
「いや、これリードレプリカじゃなくてMasterなんだが? Masterを停止したらリードレプリカが昇格するんちゃうんか? 話がちゃうで」
という疑問もありましたが、とにかく、レプリケーションの解除を行う必要がありそうです。
色々情報を彷徨ったのですが、ようやく見つけた方法がレプリカ側を昇格させるという方法。
RDSインスタンスの一覧から、リードレプリカとなっているのAurora クラスタ を選択し、アクションから 昇格 を選択する。
昇格自体は10秒程度で完了したと思います。恐らくダウンタイムも発生していないと思われます。多分...
昇格が完了後、無事MySQLインスタンスは停止できましたとさ。
めでたしめでたし。
追記
ほかの方法を記載している記事を発見しました。
上記の記事では、MySQLクライアントからコマンドをコールする事でレプリケーションを解除しています。
私は昇格によって解除したので、現在でもコマンドでの解除が有効かどうかは検証していません。
下記は上記記事からの引用です。
mysql> call mysql.rds_reset_external_master;
+----------------------+
| message |
+----------------------+
| Slave has been reset |
+----------------------+
1 row in set (0.01 sec)
Query OK, 0 rows affected (0.01 sec)