[AWS] CloudFormationで管理しているRDS for MySQLからAurora MySQLに移行する手順

AWSのCloudFormationで管理しているRDS for MySQLのリソースがあり、それをAurora MySQLに移行する手順を記載しておく。また、それに伴い、今回はRubyのアプリの更新(データベースの接続先の切替)までを行います。

参考サイト

いつもお世話になっているクラスメソッドの記事:
AWS CloudFormationで管理しているAmazon RDS for MySQLからAmazon Aurora MySQLに移行する手順を整理した

流れとしては、

  1. DB Cluster Parameterグループを作成する

  2. RDS for MySQLのAuroraのリードレプリカを作成する

  3. Auroraのリソースをインポートする

  4. リードレプリカを昇格する

  5. CloudFormationの更新を行う

  6. アプリのデータベース接続を更新する

といった内容となる。
以下、CloudFormation=CFnと略する。

DB Cluster Parameterグループを作成する

文字コード関連を「utf8mb4」、タイムゾーンを「Asia/Tokyo」に設定するためのauroraのパラメータグループの作成を行う。

タイプ:DB Cluster Parameter Group
グループ名:aurora-cluster-param(自分で決める)

aurora-cluster-param

タイムゾーンをAsia/Tokyo

タイムゾーンをAsia/Tokyo に変更する。

タイムゾーン

文字コード関連をutf8mb4

文字コード関連6つをutf8mb4 に変更する。

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リードレプリカの作成]を行う。各設定は要件に合わせて選択する。

Auroraリードレプリカを作成

そうすると既存のRDSのリードレプリカとしてAuroraが作成され、自動的にデータが同期されるようになる。便利すぎる。さっそくAuroraリードレプリカを作成する。

インスタンスを選択する

インスタンスを選択

ネットワーク&セキュリティは環境に合わせる

ネットワーク&セキュリティ

データベースの設定する
DBクラスターのパラメータグループは、最初作成したものを設定する。

DBクラスターのパラメータグループ

暗号化は有効にする
今回暗号の有効化はしておく。

Alt text

バックアップ
1日の保存期間としているが、要件に応じて7日などに変更するとOK。

バックアップ

モニタリング

Alt text

Alt text

今回は以上の内容で作成した。

データベースの一覧に戻ると「作成中」となった。

Alt text

約10分後「Preparing-data-migration」、約20分後「移行中」となり

Alt text

約23分後クラスターが「利用可能」となった。

Alt text

約35分後すべて「利用可能」になった。

Alt text

同期するデータの量にもよると思うけど、リードレプリカの作成完了までは少なくとも30分は見込んでおいた方が良さそう。

CFnスタックにインポートする

[CloudFormation]>[スタック]>[スタックアクション:スタックへのリソースのインポート]で作成したリードレプリカを現状のCFnで認識できるようにインポートする。