AWS DMSがAzure SQL Databaseからのデータ移行をサポートしました

ウィスキー、シガー、パイプをこよなく愛する大栗です。

本日DMSでアップデートがありAzure SQL Databaseをソースとしたデータ移行をサポートしたため試してみました。

AWS Database Migration Service Adds Amazon S3 and Azure SQL Database as Sources

概要

一言で言うと、AWS DMSでのデータ移行元としてAzure SQL Databaseをサポートしたということです。ただし、制限もあります。

  • Azure SQL Databaseでは変更データキャプチャ (CDC) をサポートしていません。

ドキュメントを見る限りは、その他について通常のSQL Serverと変わらないようです。

試してみる

下図のようにAzure上のSQL DatabaseにDMSがアクセスして、Amazon Auroraへデータを移行するというシナリオを考えます。本来AzureとAWSの間の通信はスループットやセキュリティを考える必要がありますが、簡素化するためにインターネット経由でDMSからSQL Databaseへアクセスします。SQL Databaseへのアクセスは全て暗号化されるようですので大丈夫でしょう。また、Auroraのテーブル構造はDMSが自動で作成する設定を使用しましたが、通常はSchema Conversion Toolを使用してテーブル構造を変換したテーブルに対して移行しましょう。

azure-to-aws3

DMSのレプリケーションインスタンスの構築

DMSのレプリケーションインスタンスを構築します。詳細な手順は、以下の記事を参考にしてください。

AWS Database Migration Serviceを試してみた

レプロケーションサブネットグループ作成

今回はDMSが直接インターネットに出ていくことを想定しているため、パブリックなサブネットをサブネットグループとします。

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

レプリケーションインスタンスを作成します。パラメータ

  • レプリケーションエンジンのバージョン:2.3.0
  • マルチAZ:いいえ(本番移行では「はい」にしてください)
  • パブリックアクセス可能:チェック

Database_Migration_Service

移行先のAuroraの構築

データの移行先であるAuroraを構築します。この記事この記事を参照して構築してください。ポイントはDMSのレプリケーションインスタンスからアクセスできる場所に配置することです。

SQL Databaseの構築

AzureでSQL Databaseを構築します。Azureは慣れていないため作法がわからなかったので適当に構築してしまっています。

今回は東日本リージョンに作成しました。また、データ移行を試すためにソースの選択でサンプルデータを使用しています。

SQL_Database_-_Microsoft_Azure

SQL Databaseの作成が完了したらファイアウォールの設定をします。

DMS-TEST_-_Microsoft_Azure

DMSのIPアドレスを許可します。

ファイアウォール設定_-_Microsoft_Azure

DMSのエンドポイントの作成

AWS DMSのエンドポイントを作成します。

移行元のSQL Databaseのエンドポイントです。SQL Databaseを作成した時の設定内容を記載します。'ソースエンジン'にazuredbが追加されていますので、これを選択します。SSLモードは選択肢がないためnoneを設定します。

Database_Migration_Service

作成したてプリケーションインスタンスを選択してテストの実行をクリックします。接続のテストに成功したらSaveをクリックしてSQL Databaseのエンドポイントを作成します。

Database_Migration_Service

次は移行先のAuroraのエンドポイントです。SQL Databaseと同様にAuroraを作成した時の設定内容を記載します。'ソースエンジン'はauroraを選択します。

Database_Migration_Service

テストの実行をして、接続のテストに成功したらSaveをクリックしてAuroraのエンドポイントを作成します。

タスクの作成と移行

これからは実際にデータを移行するためにタスクを作成していきます。

SQL Databaseでは変更データキャプチャ (CDC) をサポートしていないため、移行タイプで既存のデータを移行するを選択します。他は今まで作成したものを選択してください。

Database_Migration_Service

テーブルマッピングでは、スキーマ名をSalesLT、テーブル名の例は%(全て)mアクションは含めるとして、SalesLTスキーマ全てを移行対象としました。選択ルールの追加をクリックしてテーブルマッピングを確定します。

作成すると、タスクが開始されます。

Database_Migration_Service

しばらくすると全テーブルで移行が完了します。

Database_Migration_Service

さいごに

2017年時点でクラウド間のデータ移行は一般的ではありません。しかしDMSによるSQL Databaseサポートは覚えておくと良いでしょう。今後必要になった時に選択肢が広がるかと思います。