AWS DMS Serverless を使ってみた

この記事は公開されてから半年以上経過しています。情報が古い可能性がありますので、ご注意ください。

はじめに

AWS Database Migration Service (AWS DMS)にServerlessが登場しました。
今回は通常のDMS利用の仕方との違いをお伝えできればと思います。

検証準備

今回は下記内容を事前に準備しておきました。

  • ソースデータベース(MySQL)
  • ターゲットデータベース(Aurora MySQL)
  • DMS ソースエンドポイントの作成
  • DMS ターゲットエンドポイントの作成
  • 負荷エミュレーションツールでのデータ更新

検証準備については、「AWS Database Migration Service (AWS DMS) の CDC レプリケーションを使ってみた」という記事を参考にして頂けると幸いです。
負荷エミュレーションツールについては今回はsysbenchを利用してみました。(内容は割愛します。)

検証

  • サーバーレスレプリケーションの作成
    「レプリケーションの作成」をクリックする。
  • 設定
    名前を入力し、「ソースデータベースエンドポイント」と「ターゲットデータベースエンドポイント」を選択する。
    今回は「フルロードと変更データキャプチャ(CDC)」を選択する。

    「ターゲットテーブル準備モード」は「ターゲット上のテーブルを削除」を選択する。
    「フルロードの完了後にタスクを停止する」は「停止しない」を選択する。
    「レプリケーションに LOB 列を含める」は「制限付き LOB モード」を選択する。
    「最大 LOB サイズ (KB)」は 32 を入力する。
    「検証の有効化」「CloudWatch ログの有効化」「詳細設定」は設定無しで行きます。
  • テーブルマッピング
    「スキーマ」から「スキーマ と入力」を選択し、「スキーマ の名前」にレプリケーション対象のスキーマ名を入力する。
    テーブルについては全てレプリケーションするので「テーブル の名前」に「%」を入力する。
    「アクション」は「含む」を選択する。
  • コンピューティング設定
    「VPC」「サブネットグループ」「VPC セキュリティグループ」「AWS KMS キー」を選択する。

    「デプロイ」については検証なので「シングルAZ」を選択する。
    「アベイラビリティゾーン」は「指定なし」を選択する。
    「キャパシティ」の「最小 DMS キャパシティユニット (DCU) – 任意」と「最大 DMS キャパシティユニット (DCU)」については最小1 DCU、最大4 DCUを選択する。
    「メンテナンスウィンドウ」を設定し、「レプリケーションの作成」をクリックする。
  • レプリケーションの開始
    対象のレプリケーションを選択し、「アクション」から「開始」をクリックする。

    「停止モード」は「CDC を停止しないでください」を選択し、「レプリケーションを開始」をクリックする。

    レプリケーションを開始すると下記の様にステータスが更新されていきます。
    ・メタデータリソースを準備しています
    ・接続をテストしています
    ・メタデータを取得しています
    ・キャパシティを計算しています
    ・キャパシティをプロビジョニングしています
    ・起動中
    ・ロードが完了し、レプリケーション進行中

    私の環境だとレプリケーション開始してからおよそ50分程度してフルロードが開始されました。今回検証用のデータ量も少ないのでフルロード自体も一瞬で終わりました。
  • CDCレプリケーション
    負荷エミュレーションツールでのデータinsertを開始します。
    insertを開始してしばらくして「テーブル統計」を確認するとレプリケーションによってレコードが挿入されている事がわかります。

    またServerless独自のメトリクス「キャパシティの使用率」を確認すると下記のように表示されてました。

    今回フルロード時に「プロビジョニングされた DMS キャパシティユニット」は 4 DCU でした。1 DCUで 2GBのメモリが割り当てられるので、自動的なキャパシティ割当によって 8GBメモリが割り当てられた事になります。おそらくフルロードに必要なキャパシティが 4DCUで、CDCレプリケーションに移行した後は、トランザクションの大きさなどに比例して割り当てられるDCUが増減すると思います。
    ただし、今回は検証なので最大を4DCUとしましたが、推奨としてはMAXである384を選択しておくのが良いようです。
    参考 : AWS DMSサーバーレスレプリケーションの監視  サーバーレスの料金

まとめ

通常のDMSレプリケーションインスタンスについてはEC2のようにオンデマンドインスタンス料金が発生しますが、ServerlessではDMSレプリケーションインスタンス自体が不要となり、キャパシティプロビジョニング自動化によるコストメリットが受けられます。
通常のDMSは、動かしてみないとわからないイメージが強く、事前にレプリケーションインスタンスのインスタンスタイプを選定するのが難しいですよね。
Serverlessであれば、そういったキャパシティプランニングが不要となり、利用した分のみ料金が発生します。一番手間な部分をマネージドして貰えるのはありがたいですね。

投稿者プロフィール

Rito
Rito
AWS認定12冠
趣味 : スプラトゥーン