- AWSのDB移行サービスであるAWS Data Migration Serviceについて個人用にメモする。
概要
- DB移行に利用するAWSサービス
特徴
- セットアップ・利用が容易
- 異種データベース間の連携に対応
- テーブル定義を補助するツールの提供
- 継続的なレプリケーション
ユースケース
- 同種/異種のデータベース間での移行
- クロスリージョンリードレプリカの作成
- メジャー/マイナーバージョンアップグレード
- S3へのデータアーカイブ
- NoSQL→SQL、SQL→NoSQLへの移行
アーキテクチャ
-
論理レプリケーション
- 移行元DBで作成されたトランザクションログファイルからDMLを作成し、移行先DBに適用する。
- MySQLの場合:binlog_format=ROWのバイナリログ
- 連携単位:テーブル単位
- DMSで作成されるオブジェクトはテーブルと主キーなどの一部の制約のみ
- インデックスやプロシージャ、ビューは移行先に手動で反映する必要がある
- 移行元DBで作成されたトランザクションログファイルからDMLを作成し、移行先DBに適用する。
FULL Load方式
- SOURCE_UNLOADを実行する。
- 移行元データベースに対してselect 文を1万件ずつ実行する。
- 複数テーブルに対して同時に実施する(デフォルト8テーブル)。
- 移行元データベースに対してselect 文を1万件ずつ実行する。
- TARGET_LOADを実行する。
- 移行先データベースに対してデータをロードする。
- ロード方法はターゲットのエンジンにより異なる。
- フルロード実施中発生した更新差分データは受信バッファで保持する。
- 移行先データベースに対してデータをロードする。
Change Data Capture(CDC)方式
- SOURCE_CAPTUREを実行する。
- 移行元で発生したデータ変更を受信バッファにキャプチャする。
- SORTERを実行する。
- キャプチャされたデータ変更を移行元から移行先へ仲介するバッファ
- データ変更:コミット順にソート、コミット済みデータのみ送信バッファへ移動など
- キャプチャされたデータ変更を移行元から移行先へ仲介するバッファ
- TARGET_APPLYを実行する
- 送信バッファにキャプチャされたデータ変更を移行先へ適用する。