データベース移行パターン — AWS DMSとSchema Conversion Tool
異種DB間移行時のスキーマ変換、継続的レプリケーションによるカットオーバー、CDC(変更データキャプチャ)を解説します。
新規ソリューション設計の一環として、既存データベースを新しい環境(別エンジン、AWSサービス)に 移行するケースは頻繁に発生します。本記事ではAWS DMSと**Schema Conversion Tool (SCT)**の 基本を解説します。
SAA レベル:基礎概念
AWS DMSの基本
- ソースデータベースからターゲットデータベースへ、ほぼ無停止でデータを移行するマネージドサービス
- 同種(Homogeneous、例: MySQL→MySQL)・異種(Heterogeneous、例: Oracle→Aurora PostgreSQL)どちらの移行にも対応
SAA 試験のポイント
DMSは基本的にデータそのものの移行を担当します。テーブル構造や、ストアドプロシージャ、トリガーといったスキーマ・コードオブジェクトの変換は別のツール(SCT)の役割である、という分担がSAAで問われます。
Schema Conversion Tool (SCT) の基本
- 異なるデータベースエンジン間で、スキーマ定義・ストアドプロシージャ・関数などのコードオブジェクトを自動変換するツール
- 自動変換できない複雑なロジックは、手動での対応が必要な箇所としてレポートされる
SAP レベル:高度な設計シナリオ
異種DB間移行時のスキーマ変換ワークフロー
SAP 試験のポイント
Oracle からAurora PostgreSQLのような異種移行では、まずSCTでスキーマとコードオブジェクトを変換し、変換率(自動変換できた割合)のレポートを確認します。自動変換できない複雑なストアドプロシージャ等は、手動でリファクタリングするか、Lambda等アプリケーション側のロジックに置き換える判断が必要です。スキーマ変換が完了して初めて、DMSによるデータ移行フェーズに進むという順序がSAPで問われます。
Step 1: SCTでスキーマ・コードオブジェクトを変換(手動対応箇所を洗い出し)
Step 2: 変換後のスキーマをターゲットDBに適用
Step 3: DMSで初期データロード + 継続的レプリケーション(CDC)を開始
Step 4: カットオーバー(アプリケーションの接続先切り替え)
CDC(変更データキャプチャ)による継続的レプリケーション
SAP 試験のポイント
DMSは、初期の一括データロード後、ソース側のトランザクションログ(バイナリログ等)を継続的に読み取り、変更差分のみをリアルタイムに近い形でターゲットに反映するCDCをサポートします。これにより、長時間のダウンタイムを取らずに、初期ロード完了後もソースとターゲットのデータを同期し続け、業務影響の少ないタイミングで最終カットオーバーを行う、というダウンタイム最小化の移行戦略が実現できます。
ダウンタイム最小化のためのカットオーバー手順
- DMSで初期データロードを実施(この間もソースDBは稼働継続)
- CDCでソースとターゲットの差分を継続的に同期
- 業務影響の少ない時間帯に、アプリケーションの接続先を新DBへ切り替え(短時間の書き込み停止のみ)
- 切り替え後、旧DBへのCDCを停止し、旧環境を段階的に廃止
設計上の落とし穴
「DMSを使えば完全に無停止で移行できる」という理解は誤りです。CDCによって差分同期は継続できますが、最終的なアプリケーションの接続先切り替え(カットオーバー)の瞬間には、通常ごく短時間の書き込み停止が必要になります。この「ゼロではないが最小化されたダウンタイム」という現実的な理解がSAPで問われます。
大規模データセットの移行における考慮事項
- 初期データロードのボリュームが大きい場合、DMSのレプリケーションインスタンスのサイズ・並列タスク数を適切にチューニングする必要がある
- ネットワーク帯域が制約になる場合は、Snowball等のオフラインデータ転送との組み合わせ(4章の移行ドメインとも関連)も検討される
まとめ
- SAA: DMSがデータ移行、SCTがスキーマ変換という役割分担を理解する。
- SAP: 異種DB移行のワークフロー(SCT→DMS)、CDCによる差分同期とダウンタイム最小化のカットオーバー設計ができる。
ここまでで 2-3 データストレージ・データベース設計 の全5記事が完了しました。次は 2-4 セキュアなソリューション設計 に進みます。