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

前編から読む

こんにちは。エンジニアの中井です。

前編に続き、本記事では、AWS Database Migration Service(AWS DMS)についてご紹介します。

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

目次
  1. AWS Database Migration Service(AWS DMS)のセットアップ(続き)
  2. まとめ

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

3.エンドポイントの作成(ソースエンドポイント)

次に、エンドポイントを作成します。

まずは移行元のエンドポイントを作成します。

  • エンドポイントタイプ:ソースエンドポイント
  • ソースエンジン:MySQL
  • エンドポイントデータベースへのアクセス:アクセス情報を手動で提供する。
    サーバ名(今回は対象サーバのグローバルIP)、ポート、ユーザ名、パスワードは移行元のデータベースの値を入力します

エンドポイント接続のテストで、ステータスが「successful」になれば成功です。
エンドポイントの作成をクリックし、少し待つと完了します。

テストが成功しない場合は、以下を確認します。検証中、何度かハマりました……。

  • レプリケーションインスタンスはパブリックサブネットに作成されているか
  • レプリケーションインスタンスのセキュリティグループでアウトバウンドルールが許可されているか
  • 接続しようとしているサーバのFW(AWSの場合はセキュリティグループ)で、レプリケーションインスタンスからのアクセスが許可されているか
    • (これはなかなか気付けなかったんですが)
      マルチAZで構築した場合、許可するグローバルIPは、DMSコンソールに表示されているものだけでなく、スタンバイインスタンス用のグローバルIPも許可しましょう。
      ネットワークインターフェイスのコンソールから、説明欄に「DMSNetworkInterface」と書かれているものがDMS用のものです

4.エンドポイントの作成(ターゲットエンドポイント)

次に、ターゲットエンドポイントを作成します。

  • エンドポイントタイプ:ソースエンドポイント
  • RDS DBインスタンスの選択:チェックします
  • エンドポイント識別子、ターゲットエンジン:自動的にRDSの情報が選択されます
  • エンドポイントデータベースへのアクセス:アクセス情報を手動で提供する。
    サーバ名、ポート、ユーザ名、は自動的にRDSの情報が選択されます。
    パスワードはRDS作成時に指定したものを入力します

エンドポイント接続のテストで、ステータスが「successful」になれば成功です。
エンドポイントの作成をクリックし、少し待つと完了します。

ターゲットエンドポイントについては、今回はレプリケーションインスタンスと同じVPCにある想定ですので、RDSのセキュリティグループで、レプリケーションインスタンスのプライベートIPが許可されていればテストは成功すると思います。

5.データベース移行タスクの作成

次に、データベース移行タスクを作成します。

データベース移行タスクが、実際のデータ移行を行う設定となります。

タスク設定の続きです。

  • ターゲットテーブル作成モード:ターゲット上のテーブルを削除。
    このモードについては、さきほどの移行タイプによって、推奨されるモードが異なります
    タスクの作成 – AWS Database Migration Service
  • 検証の有効化:チェックします
  • CloudWatch ログを有効化:チェックします

その他、デフォルトのままとします。

テーブルマッピングの設定です。移行元のMySQLには、「mydb」というデータベースを作成してあります。

  • スキーマ名:mydb
  • テーブル名:%(ワイルドカードです)

残りの設定は、デフォルトのままとします。

タスクの作成をクリックすると、データ移行が始まります。

……と思ったら、開始されなかったので、手動で開始します。

6.確認

移行データ次第ですが、少し待つとタスクが完了します。

テーブルごとのロード行数なども確認できます。

CloudWatch Logsにも、詳細なログが記録されます。

まとめ

本記事ではAWS Database Migration Service(AWS DMS)を実際に利用し、オンプレミスに見立てたEC2からRDSへのデータ移行の手順をご紹介しました。

今回は移行元・先が同種類のデータベースエンジンにてデータ移行を行いました。
従来、MySQL同士であればmysqldumpを使ったデータ移行を行うパターンが多かったかと思います。

AWS DMSを利用すると本記事の通り、対象データベースに直接ログインすることなく、AWSのコンソールにてデータ移行作業を行えます。
データ移行の設定についても、DBAでなくとも設定できる内容でしたので、簡単にデータ移行を行えました。

ただ、やはり、事前にVPCやRDSなどはAWS側へ作成する必要がありますし、データベースを使うサーバも何らかの手段で作成/移行する必要があります。
あくまでもシステム全体を移行する中で、1つのパーツとして利用するサービスであると感じました。

<参考リンク>
AWS Database Migration Service とは – AWS Database Migration Service
20210216 AWS Black Belt Online Seminar AWS Database Migration Service