Aurora とのレプリケーション

このハンズオンでは RDBMS として Amazon RDS for MySQL を利用してきました。

アプリケーションの規模が大きくなったり、高度な機能を利用したい場合、Amazon Aurora (Aurora)を利用することでコストパフォーマンス向上の可能性があります。

Aurora は AWSが提供する独自のDBエンジンですが、MySQL と PostgreSQL と互換性を持ちます。 そのため、既存のツールやアプリケーションへの書き換えの必要性などの影響を可能な限り抑えつつ、移行が可能です。

Aurora は高いスループットと可用性を実現するために、独自のアーキテクチャを採用しています。 もしご興味がある場合は、関連する記事を検索したり、論文 もありますのでご覧下さい。

変更方法の検討

それでは最初に、WordPressアプリケーションが利用する DBMS (MySQL) を Aurora MySQL に変更してみましょう。 よく利用される 移行方法 として、次の2種類があります。

  1. 既存DBの dump を取得し、新しく作成した Auroraクラスター(データベース) にデータをロードする。ロードの完了後にアプリケーション側でのDB接続先を切り替える
  2. 新しく作成した Auroraクラスター(データベース) へレプリケーション設定を行う。同期の完了後に、一定の停止時間の中で 接続先を切り替える

1つ目の方法は分かりやすく設定も簡単ですが、dumpの生成後に元DBへ書き込みが行われるとデータに差分が発生してしまいます。 また、データ量が大きいと、dumpを出力する処理自体 と その復元 の両方で長時間を要します。 そのため、長いメンテナンス時間を確保可能な場合に適した移行方法であるといえます。

可能な限りダウンタイムを短縮したい場合、2つ目の移行方法を検討します。 これは新旧のDBでエンジンの互換性がある場合に採用が可能であり、切り替えに要する時間のみのダウンタイムを確保すれば移行が可能です。

このセクションでは、2番目の移行方法 (レプリケーション) を採用してみましょう。

AWS Database Migration Service (DMS)を利用すると、様々なDB間での移行が容易になります。詳細はドキュメントをご覧ください。

移行手順

レプリカの作成

00

  • RDS コンソールを表示します。

  • 左メニューの データベース を選択します

  • 一覧内の DB識別子列にある WordPress用 に作成した DB (wp-user1) の名前をクリックします(ラジオボタンでの選択ではありません)

  • 表示されるデータベース詳細画面の「アクション」から「Aurora リードレプリカの作成」をクリックします。

  • 以下のように設定を行います。指定がない項目はデフォルト値を受け入れて下さい。

  1. DB エンジンのバージョン: Aurora (MySQL 5.7) 2.07.2 を選択 (初期選択を利用)
  2. DB インスタンスのクラス: db.t2.small を選択
    • ドロップダウンを開き、他にどのようなインスタンスタイプがあるかも眺めてみましょう
  3. DB インスタンス識別子: aurora-user1
  4. Virtual Private Cloud (VPC): handson-user1 を選択
  5. アベイラビリティゾーンap-northeast-1a を選択
  6. VPC セキュリティグループ: 既存の db-user1 のみを選択するように変更します (defaultは削除)
  7. ログのエクスポート: 4つの項目の全てで チェックをオン にします
    • 本ハンズオンでは、各種ログを利用するためチェックをオンにします
    • パフォーマンスへの影響があるため、実際には必要なものに絞って選択することを推奨します
  • 設定が完了したら「リードレプリカの作成」をクリックします。
  • 10分〜15分ほど待機し、図のようにAuroraクラスター(複数のインスタンス群)が出来上がっていることを確認します。

初期化が完了するまで 約15〜20分 を要するので、ここで休憩をお取りください。

Aurora Read Replica

参考資料

DB スナップショットを使用した MySQL DB インスタンスから Amazon Aurora MySQL DB クラスターへのデータ移行