AWS Database Migration Service & AWS Schema Conversion Tool
# AWS Database Migration Service
https://d1.awsstatic.com/webinars/jp/pdf/services/20170919_AWS-BlackBelt-DMS.pdf
## AWS DMS の立ち位置
## AWS DMSとは
- 既存のデータベースを最小ダウンタイムでマイグレーションするサービス
- 異種プラットフォームへの移行にも対応
- アプリケーションを稼働したまま移行も可能
## AWS DMS 特徴
- 最小限のダウンタイム
- 簡単
- 豊富な対応プラットフォーム
- 高い信頼性
- コスト
## AWS DMS の使い方
- 移行元のDB -> レプリケーションインスタンス -> 移行先のAWS内のDB
- 移行元と移行先(レプリケーションインスタンスと移行先のDB)をネットワークでつなぐ(VPNでも、インターネット経由でも可)
- レプリケーションインスタンスのスペックやストレージはデータ量に合わせる。この設定はDMSから設定する
- データベースへの接続定義となる、Source Endpoint と Target Endpoint を設定する
- 移行するテーブルとレプリケーションプロセスを定義するタスクセットを構成
- 移行タイプを選択(Migrate existing data, Replicat edata changes only, Migrate existing data and replicate ongoing changes)
## AWS Schema Conversion Tool とは
ソースDBのスキーマ、ビュー、ファンクション、ストアドプロージャーの大部分を自動的にターゲットDB互換フォーマットに変換できるデスクトップアプリケーション
## AWS Schema Conversion Tool の特徴
- 手動変換の補助
- アクション可能なエラーメッセージ
- 評価レポートの作成
- 何割が自動変換可能なのかの見積もり
- 変換工数の事前見積もりが可能に
- アプリケーションSQLに対応
- アプリケーションコードをスキャンして変換
- 豊富な対応プラットフォーム
## 利用例
- Schema Conversion Tool でアプリケーションの変換と事前見積もりを行い、AWS DMS で移行
- 複数のDBをAWS DMS で統合
- 本番環境用のAurora から複数環境へデータレプリケーション
- DMSを脳死で使うのではなく、停止時間が取れるなどの理由でダンプなどからリストアした方がシンプルになることもある
## 利用の流れ
- SCT でテーブル定義とPK制約を移行
- DMSでFullLoad + CDC開始
- FullLoad 完了後にセカンダリインデックスを作成
- CDCLatency が小さくなったタイミングでアプリからの書き込みを停止(ダウンタイム開始)
- マーカーをソースDBにInsert
- マーカーのターゲットDB到着を確認
- アプリがターゲットDBに接続(ダウンタイム終了)
## AWS DMS の説明
- 移行タイプ
- 既存データを完全に移行(FullLoad)
- 並列に各テーブルから1万行ずつ変換&移行
- データ変更のみをレプリケートする(Change Data Capture)
- 既存のデータを移行して、継続的な変更をレプリケート
- 監視
- 移行時には監視をしておくことでパフォーマンス問題に対処しやすい(高い場合にはより大きいインスタンスへ)
- CPU
- メモリ
- ネットワーク帯域
- FullLoad やChange Data Capture の動作の概要を理解しておくことでチューニングが行いやすくなる
## AWS Schema Conversion Tool の説明
- Source と target のサポートしている組み合わせが存在
- データ変換時にマッピングルールをカスタムすることができる(e.g. データタイプの変更)
- データをCSV形式にアンロードするエージェントもある。出力したものはS3にUPしたり、Snowball 経由でS3にアップロードすることもできる
## 雑感
昨日学んだ、AWS Application Discovery Serviceで事前にアーキテクチャの概要を洗い出し、AWS Schema Conversion Tool を使い新DBへのアプリケーションコードの移行や、移行の際のデータの変換をおこないつつ、AWS DMS と AWS Server Migration Service でDBとAPの移行を行うといった感じになりそう。
リフト&シフト案件が多い世の中でこのサービスを使っているところも多そう(事例としてあまり耳にしたことがないけど)。
AWSが顧客を増やすためのサービスの一つとして考えられる位置付け。