AWS

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

aws-cloudformation
o_wani
この記事は作成から3年以上経過しているため、内容が古くなっている可能性があります。

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で認識できるようにインポートする。

Alt text

現状のCFnにAurora MySQLの記述を追記したテンプレートをインポートする。

CFnの更新

既存のテンプレートにAurora MySQLの記述を追記する。

※記載例:「DBSubnetGroup」「DBUser」「DBPassword」は別途定義しておく。DBInstanceClassものちのちは変数定義する。

....
....
DBCluster:
Type: AWS::RDS::DBCluster
DeletionPolicy: Retain
Properties:
DBClusterParameterGroupName: aurora-cluster-param
DBSubnetGroupName: !Ref DBSubnetGroup
Engine: aurora-mysql
EngineVersion: 5.7.mysql_aurora.2.07.2
MasterUsername: !Ref DBUser
MasterUserPassword: !Ref DBPassword
DBWriterInstance:
Type: AWS::RDS::DBInstance
DeletionPolicy: Retain
Properties:
DBClusterIdentifier: !Ref DBCluster
DBInstanceClass: db.t2.small
DBSubnetGroupName: !Ref DBSubnetGroup
Engine: aurora-mysql
DBReaderInstance:
Type: AWS::RDS::DBInstance
DeletionPolicy: Retain
Properties:
DBClusterIdentifier: !Ref DBCluster
DBInstanceClass: db.t2.small
DBSubnetGroupName: !Ref DBSubnetGroup
Engine: aurora-mysql
....
....

CFnファイルアップロード

[ファイルの選択]から選んでアップロードし、[次へ]

Alt text

インポートするリソース識別

Aurora MySQLのリソース3つを入力する。