AWS Database Migration Service(1)DMSの概要

Database Migration Service

DMSは、2つのデータストア(データエンドポイント)間のデータ移行を行うツールであり、オンプレミスからAWSへのデータ移行を実現できる。データエンドポイントのうちの1つはAWS上にある必要があるため、 オンプレ間のデータ移行には利用できない 。このサービスを利用することで、1回限りの移行と、それ以降の継続的な変更のレプリケートを実現できる。DMSは、 ハードウェアのデプロイ管理(パッチの適用、エラーレポート)モニタリング を自動で管理し、設定プロセス開始後わずか数分で使用で使用を開始することができる。また、ワークロードに応じて移行先のリソースをスケールアップ/スケールダウンさせることもできる。

DMSは様々なデータベースに対応しており、 AWS Schema Conversion Tool (AWS SCT) を利用することで、データベーススキーマを新しいプラットフォームに変換できる。

また、フェールオーバ機能も提供しており、プライマリレプリケーションサーバが停止した場合、最小のダウンタイムで、バックアップレプリケーションサーバに処理を引き継ぐことが出来る。

DMSの動作

DMSはソースデータストアに接続した上でデータを読み取り、ターゲットスタオが利用できるように データのフォーマット を行う。その後、ターゲットストアにデータのロードを行う。 この処理は通常メモリ内で行われるが、大きなトランザクションの場合は、ディスクへのバッファリングが必要となる場合もある 。操作としては、

  1. レプリケーションサーバを作成
  2. データエンドポイントの作成
  3. 移行タスクの作成

の順で行う。

レプリケーションインスタンス

レプリケーションサーバは、レプリケーションタスクを実行するEC2インスタンスを指す。レプリケーションサーバ1台で複数の処理を行うことが可能である。 DMSはCPUとメモリを大量に消費するため、多数のテーブルが関与する場合や複数のレプリケーションタスクを実行する場合には、大きなインスタンスを使用することが望ましい 。マルチAZ配置にすることで、高可用性ならびにフェールオーバ機能が提供される。この場合、レプリケーションインスタンスのスタンバイレプリカに常時データがレプリケートされる。Microsoftのライセンスを使用する場合には、 ライセンス込みのインスタンスを利用することも、ライセンス持ち込み(BYOL)することも可能 である。

また、移行タスクは、

  1. 既存データの全ロード
  2. キャッシュされた変更の適用
  3. 継続的なレプリケーション

というフェーズで構成される。なお、全ロード処理が開始された時点から、データベースの変更を検知し始めるので、 テーブル毎にロード処理開始時刻が異なると、変更検知を行うポイントも異なることに注意が必要 である。また、レプリケーション時にはデータの同期にはいくらかの遅延が発生する。このレプリケーションタスクは、「全ロード」「全ロード+CDC」「CDCのみ」から選択することが可能である。

同じエンジン間の以降の場合は、エンジンのネイティブツールにより、スキーマのインポート/エクスポートが行われる。異なるエンジン間の場合には、AWS Schema Conversion Tool (AWS SCT)が使用される。なお、効率的にデータ移行するために、 セカンダリインデックス , 非プライマリキーの制約 , データデフォルト は作成されない。

また、様々なデータベースをサポートしているが、サポート対象のバージョンに制約がある場合があるので確認が必要。

ベストプラクティス

DMSのパフォーマンスは、ネットワークスループットなどのいくつかの要因に影響される。パフォーマンスを向上させるためには、以下の手法を用いることができるかどうかの検討を行う。

  • 適切なインスタンスサイズ(CPU,メモリ等を含む)の決定
  • マルチAZインスタンスの使用
  • 複数テーブルの並列ロード(標準では 8テーブルを同時にロード
  • バックアップとトランザクションログ記録の無効化
  • 複数タスクの使用

なお、移行処理がソースデータベースに負荷を与えている場合には、移行するタスク数やテーブル数を減らす必要が生じる。また、ターゲットデータベースのボトルネックを減らすためには、以下の手法の検討を行う。

  • 不要なトリガの無効化
  • 初期ロード時はセカンダリインデックスを無効化
  • RDSの場合、バックアップとマルチAZを一時的に無効化
  • RDS以外の場合、ログ記録の一時的な無効化

また、これ以外にもDMSを利用される際の奨励される作業として、

  • Amazon CloudWatchを使用したメトリクスのモニタリング
  • Amazon SNSを介したイベントの通知

などが存在する。

レプリケーションインスタンス

DMSは、東京リージョン(ap-northeast-1), 大阪リージョン(ap-southeast-1)共に使用可能。 開発やプロトタイプにはT系インスタンス、異なるエンジン間の移行など負荷の高いワークロードが想定される場合にはC系インスタンスを、高スループットのトランザクションが想定されるシステムの移行には、R系インスタンスの利用が望ましい 。T系インスタンスで無制限モードを有効化すると、長時間に渡ってCPU使用率が高い状態が継続した場合でも、追加の費用が課金されて作業を継続できる。レプリケーションインスタンス内のエンジンは、手動でアップグレードすることができる。ただし、 ダウングレードは出来ない

インスタンスサイズの決定に際しては、使用可能なメモリ量の合計が重要 な考慮事項となる。また、キャッシュとログを格納するスディスク容量を十分確保しておくと、パフォーマンスも向上する。ディスクストレージの決定に際しては以下の項目を考慮する。

  • テーブルサイズ
  • DMLのアクティビティ
  • トランザクションサイズ
  • 移行の合計サイズ
  • タスクの数
  • ラージオブジェクト

なお、一般的には、 デフォルトのストレージ設定で問題が生じることはない

すべてのレプリケーションインスタンスには、週次のメンテナンスウインドウが用意されており、その期間内に利用可能なシステムの変更が適用される。ほとんどのメンテナンスは、 設定した30分のメンテナンスウインドウ期間中に終了 する。 メンテナンスウインドウを設定しなかった場合は、ランダムに指定した曜日にメンテナンスが実行 される。