AWSのCloudFormationで管理しているRDS for MySQLのリソースがあり、それをAurora MySQLに移行する手順を記載しておく。また、それに伴い、今回はRubyのアプリの更新(データベースの接続先の切替)までを行います。
参考サイト
いつもお世話になっているクラスメソッドの記事:
AWS CloudFormationで管理しているAmazon RDS for MySQLからAmazon Aurora MySQLに移行する手順を整理した
流れとしては、
DB Cluster Parameterグループを作成する
RDS for MySQLのAuroraのリードレプリカを作成する
Auroraのリソースをインポートする
リードレプリカを昇格する
CloudFormationの更新を行う
アプリのデータベース接続を更新する
といった内容となる。
以下、CloudFormation=CFnと略する。
DB Cluster Parameterグループを作成する
文字コード関連を「utf8mb4」、タイムゾーンを「Asia/Tokyo」に設定するためのauroraのパラメータグループの作成を行う。
タイプ:DB Cluster Parameter Group
グループ名:aurora-cluster-param(自分で決める)
タイムゾーンをAsia/Tokyo
タイムゾーンをAsia/Tokyo
に変更する。
文字コード関連をutf8mb4
文字コード関連6つをutf8mb4
に変更する。
character_set_client
character_set_connection
character_set_database
character_set_filesystem
character_set_results
character_set_server
以上のような設定を行い、パラメータグループを作成しておく。
RDS for MySQLのAuroraのリードレプリカを作成する
RDSのスナップショットを作成し、作成後にそのスナップショットをベースに作成するといったことは必要なく、ここではRDSのAuroraリードレプリカを作成することで目的が達成できる。しかもボタン1つでOK。
Auroraリードレプリカを作成する
RDSの[アクション] > [Auroraリードレプリカの作成]を行う。各設定は要件に合わせて選択する。
そうすると既存のRDSのリードレプリカとしてAuroraが作成され、自動的にデータが同期されるようになる。便利すぎる。さっそくAuroraリードレプリカを作成する。
インスタンスを選択する:
ネットワーク&セキュリティは環境に合わせる:
データベースの設定する:
DBクラスターのパラメータグループは、最初作成したものを設定する。
暗号化は有効にする:
今回暗号の有効化はしておく。
バックアップ:
1日の保存期間としているが、要件に応じて7日などに変更するとOK。
今回は以上の内容で作成した。
データベースの一覧に戻ると「作成中」となった。
約10分後「Preparing-data-migration」、約20分後「移行中」となり
約23分後クラスターが「利用可能」となった。
約35分後すべて「利用可能」になった。