AWS Database Migration Service(AWS DMS)を使ったデータ移行(前編)

IIJ クラウド本部 クラウドソリューション部 ソリューション1課

中井 英臣

金融システムの運用保守や情報システム部門のIT支援などを経て、現在は顧客へのAWS導入・移行の提案、構築などを担当。社内向けの勉強会、技術支援などを実施し、AWSエンジニアの育成にも挑戦中。好きな食べ物はカレーと餃子。

執筆・監修者ページ/掲載記事:6件

こんにちは。エンジニアの中井です。
最近、メガネを買い換えました。乱視が進んでいたようで、ずいぶんとスッキリ見えるようになりました。
何事も測ってみないとわかりませんね。

本記事では、AWS Database Migration Service(AWS DMS)についてご紹介します。
少し長くなってしまったため、前編と後編の2回に分けてご紹介します。

目次
  1. AWS Database Migration Service(AWS DMS)とは
  2. DMSでの移行手順
  3. AWS Database Migration Service(AWS DMS)のセットアップ
  4. まとめ

AWS Database Migration Service(AWS DMS)とは

AWS Database Migration Service(AWS DMS)は、その名前のとおりデータベースをAWSに移行するためのサービスです。
特徴としては以下のとおりです。

  • 簡単に、データベースのデータをAWSへ移行するマネージドサービス
  • 同種類のデータベースエンジンに加え、異なる種類間のデータ移行にも対応
  • 移行元はRDBMSだけでなく、NoSQLデータベースも利用可能

他の移行ツールとの違い

AWS DMSの他に、AWSではサーバーの移行サービスとして、AWS Server Migration Service(AWS SMS)やAWS Application Migration Service(AWS MGN)などがあります。
簡単に違いをまとめると以下のとおりです。

  • AWS Server Migration Service(AWS SMS)
    主なユースケースとしては、オンプレミスのVMware、Hyper-Vからの大規模移行。
    仮想アプライアンスを使用したエージェントレスのサーバー移行サービス
  • AWS Application Migration Service(AWS MGN)
    シンプルな移行プロセスで、AWSへの移行をサポートする移行サービス。
    AWS MGNエージェントをサーバーにインストールするのが必要
    (2021年11月のアップデートで一部、エージェントレスにも対応)
  • AWS Database Migration Service(AWS DMS)
    あらかじめRDSやAuroraなどのマネージドデータベースサービスを用意した上で、AWS DMSを利用してデータを移行するサービス。
    移行元・移行先データベースは、AWS DMSからインターネット/閉域での接続が必要

DMSでの移行手順

本記事ではAWS DMSを実際に利用し、オンプレミスに見立てたEC2からRDSへのデータ移行の手順をご紹介します。
データベースエンジンはどちらもMySQLを利用し、バージョンについてはEC2側は5.7、RDS側は8.0としました。

なお、異なるデータベースエンジン間では、AWS Schema Conversion Tool(SCT)を利用することにより移行を実現しますが、今回は利用しません。
SCTについて詳しくは、下記のドキュメントをご参照ください。

AWS Schema Conversion Tool とは – AWS Schema Conversion Tool

また、本記事ではAWS DMSの利用イメージを掴んでいただくために、例としてMySQLからMySQLへのデータ移行を実施しております。
移行元・移行先のデータベースが同種類の場合、まずはデータベースエンジンが提供する移行ツールを利用検討いただく方が、実際のデータ移行に対しては有効な選択肢となります。

Using a MySQL-compatible database as a source for AWS DMS – AWS Database Migration Service

構成イメージ

以下が今回の構成イメージです。
オンプレミスのサーバー想定で、AWS上にEC2(Amazon Linux 2)を用意し、MySQL 5.7をセットアップします。
ターゲットとなるRDSも、MySQL 8.0を起動しておきます。
インターネット経由でのデータ転送を行い、移行先のRDSへデータ移行を行います。

なお、インターネット経由で移行元データベースへ接続する際、MySQLの場合はデータベースへのアクセス権限の付与が必要ですが、本記事では説明を割愛します。DBAなどへ確認の上、許可設定をしておきます。

AWS Database Migration Service(AWS DMS)のセットアップ

AWS Database Migration Service(AWS DMS)のセットアップを行います。

DMS用に作成するVPC設定については説明を割愛しますが、基本的なパブリックサブネットとプライベートサブネットを用意します。
詳細は公式ドキュメントをご参照ください。

Prerequisites for AWS Database Migration Service – AWS Database Migration Service

1.セキュリティグループの作成

レプリケーションインスタンスに設定するセキュリティグループを事前に作成しておきます。

  • インバウンドルール:ルール無しのままで作成します
  • アウトバウンドルール:レプリケーションインスタンスから接続する、移行元のデータベースへのルールを追加します。
    今回はMySQLなので、TCP3306 送信先0.0.0.0/0としました

2.レプリケーションインスタンスの作成

AWS DMSのコンソールに初めてアクセスすると、レプリケーションインスタンスを作成するように案内されますが、後述するサブネットグループの設定から始めます。

右上「サブネットグループの作成」をクリックします

サブネットグループを作成します。

  • サブネットの追加:今回は、パブリックサブネットのみを追加します。
    このサブネットグループですが、デフォルトのままだとVPCにあるすべてのサブネットを追加するようです。
    検証中それに気付かずに、レプリケーションインスタンスが意図せずプライベートサブネットに作成され、NW疎通がとれないことがあり、困りました……
  • タグ:コストタグなどを設定します

次に、レプリケーションインスタンスを作成します。

レプリケーションインスタンスの設定を行います。

  • インスタンスクラス/ストレージ
    今回はテスト用途のため、インスタンスクラスはdms.t3.medium、ストレージは50GiBのデフォルトのままとしています。
    このメモリとディスクの割り当て量が移行スピードに影響してくるようです。詳細は公式ドキュメントをご参照ください
    (データがメモリに乗り切らない場合、ディスクへの書き込みが発生するので、遅くなる)
    Choosing the best size for a replication instance – AWS Database Migration Service

ネットワーク関連の設定です。

  • マルチAZ:本番稼働では有効にしておいた方が良いでしょう。
    今回も有効にしておきますが、その分コストがかかりますのでご注意ください
  • パブリックアクセス可能:こちらも有効にしておきます
  • レプリケーションサブネットグループ:先ほど作成したものを選択します
  • VPCセキュリティグループ:先ほど作成したものを選択します。
    移行元データベースへのアウトバウンドルールが許可されている必要があります

メンテナンスとタグの設定です。

  • メンテナンスウィンドウ:UTC表記なので、時差に気をつけましょう。ここではUTC土曜日20時=JST日曜日05時としています
  • タグ:コストタグなどを設定します

少し待つと、レプリケーションインタンスの作成が完了します。

まとめ

前編では、AWS DMSの簡単な説明とレプリケーションインスタンスの作成までを実施しました。
後編では、エンドポイントの作成と実際のデータ移行をご紹介します。

後編を読む