導入(1行サマリー & つかみ)
「システム移行の成否は、コンピュートの載せ替えではなく、データの重力(Data Gravity)をいかに無停止で制御できるかで決まる」
オンプレミスのレガシーシステムをクラウドへ刷新するプロジェクトにおいて、誰もが直面する最大の難所が「データの移行」です。業務を数日間止めてバッチでダンプ&リストアを行うという古典的手法は、24時間365日稼働が前提となった現代のデジタルサービスでは許容されません。
今回取り上げるドキュメント『AWS Database Migration Service (DMS) と移行・転送サービス(章テーマ:10.12 AWS Database Migration Service)』は、まさにこの「データ移行のダウンタイムを極小化する」ための標準コンポーネント群を網羅しています。
しかし、カタログスペックを眺めるだけでは、本番環境の巨大なデータトラフィックに耐えうる設計は組めません。DMSのChange Data Capture(CDC)が内部で何を監視しているのか、AWS Schema Conversion Tool(SCT)が担う境界領域、そしてDataSyncやAWS Transfer Familyをどのように組み合わせるべきなのか。現場で泥を啜ってきたアーキテクトの視点から、その本質を解き明かします。
アーキテクチャの課題と設計の壁
データベース移行における最大の壁は、「データの整合性担保」と「業務継続性(RPO/RTOの最小化)」のトレードオフにあります。
従来のダンプ&リストア方式では、移行元DBへの書き込みを完全に遮断(静止点の確保)しなければ整合性が保てません。テラバイト級のデータベースであれば、エクスポート・ネットワーク転送・インポート・インデックス再構築だけで数十時間から数日を要し、サービス停止時間は肥大化します。
一方で、異種DB間(例: オンプレミスのOracleやSQL ServerからAmazon Aurora PostgreSQL/MySQLなど)のマイグレーションでは、スキーマ定義、データ型、ストアドプロシージャの非互換性という「方言の壁」が立ちはだかります。これらを手作業でマッピングし直す作業は工数を爆発させ、ヒューマンエラーの温床となっていました。
さらに、DBだけでなく周辺の非構造化データ(ファイルサーバやNAS)の移行も同時に発生します。数億個の極小ファイルや数十テラバイトの共有ストレージを単純な rsync やスクリプトで転送しようとすると、OSのリソース枯渇、ネットワーク切断時のリトライ不能、帯域飽和による基幹業務圧迫といった問題が頻発します。
これらの課題を「マネージドな分散レプリケーション機構」として抽象化・解決したのが、AWS DMS、AWS DataSync、AWS Transfer Familyのトリオです。
核心メカニズムと実装パターン
1. AWS DMSの内部アーキテクチャとレプリケーションタスク
AWS DMSの真価は、「全件ロード(Full Load)」と「継続的レプリケーション(Change Data Capture: CDC)」のシームレスな統合にあります。
DMSは、移行専用のマネージドなAmazon EC2インスタンス(レプリケーションインスタンス)をプロビジョニングし、ソースとターゲット双方のエンドポイントに接続してデータを中継します。
DMSのタスクタイプには以下の3つが存在し、要件に応じて選択します:
- 既存データを移行(Full Load): ソースDBのテーブルからデータを読み出し、ターゲットに初期作成・ロードする。
- 既存データを移行して、継続的な変更をレプリケート(Full Load + CDC): 初期ロード中および完了後に、ソースDB側で発生した更新(INSERT/UPDATE/DELETE)を継続的にターゲットへ反映する。
- 変更データのみをレプリケート(CDCのみ): 別途ダンプツール等で初期データを流し込んだ後、特定のログシーケンス番号(LSNやSCN)以降の差分のみを追従させる。
CDCの内部メカニズムにおいて、DMSはソースDBに対して定期的に SELECT クエリを投げるポーリング方式を採りません。Oracleのリドゥログ(Redo Log)、SQL Serverのトランザクションログ、MySQLのバイナリログ(binlog)、PostgreSQLの先行書き込みログ(WAL)といったトランザクションログを直接パース・抽出します。これにより、移行元DBのクエリ実行エンジンに負荷をかけることなく、ミリ秒単位の低レイテンシで差分イベントをキャプチャし続けます。
異種DB移行の要:AWS Schema Conversion Tool (SCT)
同種DB間(MySQL to RDS MySQLなど)であればネイティブなダンプツールやDMS単体で十分ですが、OracleからAuroraへの移行といった「異種DB移行」では、AWS Schema Conversion Tool (SCT) の併用が必須となります。
DMS単体ではテーブルの枠組み(基本的なデータ型変換)しか移行せず、セカンダリインデックス、ビュー、トリガー、ストアドプロシージャなどは作成されません。SCTはクライアントマシン上で動作し、ソースDBのスキーマやコードオブジェクトを解析、ターゲットDBと互換性のあるDDLに自動変換します。自動変換できない複雑なPL/SQL等のオブジェクトは「アクションアイテム」としてレポート出力されるため、エンジニアは差分のみを手動修正してターゲットに先行適用します。
【定石ワークフロー】
- SCTでスキーマ・オブジェクトを変換し、ターゲットDBに空のスキーマを作成
- DMSタスク(ターゲットテーブル準備モード: 「何もしない / Do nothing」)でデータとCDCを流し込む
- レプリケーション遅延がゼロに近づいたタイミングで、アプリケーションの接続先を切り替える(カットオーバー)
2. AWS DataSyncによるファイルストレージの高速同期
DB移行と並行して課題となるのが、NAS(NFS/SMB)やオブジェクトストレージの移行です。これを自動化するのが AWS DataSync です。
DataSyncはオンプレミス側にデプロイした専用の「DataSyncエージェント」(仮想アプライアンス)と、AWS側のマネージドサービスが通信します。独自の転送プロトコルにより、以下の高速化と安全性を提供します:
- マルチスレッド・並列処理: 複数のTCPセッションを並列確立し、広帯域ネットワークを限界まで活用。
- インライン圧縮と暗号化: データ転送経路をTLSで暗号化しつつ、転送データ量を圧縮。
- メタデータの保持と整合性検証: ファイルの所有者、タイムスタンプ、パーミッション属性を完全維持し、転送中および転送完了時にブロックレベルのハッシュ検証を自動実行。
なお、オンプレミスとAWS間をセキュアに結ぶ回線設計については、過去記事の 【AWS SAA対策】Direct ConnectとVPNの併用!専用線の暗号化を実現するセキュアハイブリッド接続を徹底解説 で詳しく解説している通り、Direct Connect上にIPsec VPNをオーバーレイさせた暗号化経路を引くことで、エンタープライズのコンプライアンス要件を完全に満たすデータ同期パイプラインが構築できます。
3. AWS Transfer Familyによるセキュアなエンドポイント露出
既存の業務システムがSFTP、FTPS、FTP、AS2といったレガシープロトコルに依存している場合、ストレージをAmazon S3やAmazon EFSへ移行しても、プロトコル仕様の変更を外部取引先に強いることは困難です。
AWS Transfer Family は、クライアントから見ると完全なSFTP/FTPSサーバとして振る舞いながら、バックエンドの保存先をシームレスにAmazon S3やEFSへとルーティングします。
上図のように、VPCエンドポイントを介してパブリックサブネットにElastic IPをアタッチしたENIを配置することで、固定IPアドレスによるIPホワイトリスト制限を要求する外部クライアントからのアクセス要件を満たしつつ、高可用性・オートスケーリングなマネージド基盤を運用できます。
外部連携におけるアクセス権限の制御には、AWSセキュリティの要!「AWS IAM」とは?初心者向けに概念から設定方法まで図解でわかりやすく解説 で紹介したIAMロールとバケットポリシーによる最小権限の原則がそのまま適用されます。
で、私(筆者)はどう考えるか?
AWSの公式ドキュメントやホワイトペーパーを読むと、「DMSを使えばボタン数クリックで無停止移行が完了する」かのようなバラ色の世界が描かれています。しかし、実案件でDMSを設計してきたアーキテクトとして断言しますが、DMSは「魔法の杖」ではなく「非常に繊細なインメモリ・データパイプライン」です。
現場で直面する3つの現実的トラップ
-
LOB(Large Object)の扱いに起因するメモリ枯渇: DMSにおける最大の鬼門は画像や巨大テキストなどのLOB列です。デフォルトの「制限付きLOBモード(Limited LOB Mode)」では、指定したサイズ(例: 32KB)を超えるデータが切り捨てられるか、大きな性能劣化を引き起こします。かといって安易に「完全LOBモード(Full LOB Mode)」を選ぶと、LOB列を1行ずつ取得するため転送速度が絶望的に低下し、CDCのレプリケーション遅延(Replication Latency)が爆発します。現場では、インラインLOBモードを活用するか、LOB列の最大値を事前プロファイリングして適切なバッファサイズを見極める泥臭いチューニングが不可欠です。
-
ターゲットDBのインデックス負荷とメモリ競合: Full Load実行中にターゲットDB側でセカンダリインデックスや外部キー制約が有効になっていると、書き込みのスループットが激減します。初期ロード時はインデックスを落とし、ロード完了後にインデックスを作成してからCDCを開始する、という順序制御を設計に組み込まなければ、DMSインスタンスとターゲットDB双方が高負荷でハングします。
-
スキーマとデータ型のマッピングの罠: 例えばPostgreSQLの
TIMESTAMP WITH TIME ZONEとMySQLのDATETIMEでは挙動が根本的に異なります。DMSが透過的に変換してくれると信じ込んでいると、カットオーバー後にタイムゾーンがずれてデータが破壊される悲劇が起きます。
代替アプローチとの比較と技術選定
すべての移行にDMSが最適解とは限りません。アーキテクトは以下のトレードオフを常に天秤にかける必要があります:
- 同種DB間の移行であれば、ネイティブツールを最優先すべき: 例えば PostgreSQLからAmazon Aurora PostgreSQLへの移行であれば、pg_dump/pg_restore、あるいはAuroraリードレプリカのプロモーションや論理レプリケーション(Logical Replication)を用いる方が、ネイティブのデータ型完全互換性やパフォーマンスの観点で圧倒的に安定します。DMSはあくまで「異種DB間」や「Auroraリードレプリカが組めない別クラウド・オンプレミス間」でこそ真価を発揮します。
- データレイク構築ツールとしてのDMSの有用性: 移行(Migration)と名が付いていますが、DMSの極めて強力なユースケースは「RDBMSからAmazon S3 / Kinesisへの継続的レプリケーションによるCDCストリーミング基盤」です。RDBMSの更新イベントをリアルタイムにParquet形式でS3に書き出し、データ分析基盤(AthenaやRedshift)へと流し込むパイプラインの構築において、DMSは非常にコスト効率の高いETLエンジンとして機能します。
まとめ & 実装・検証指針
データ移行アーキテクチャの成否は、机上の空論ではなく「事前検証(PoC)の深さ」で決まります。本番移行で冷や汗をかかないために、以下のステップで設計と検証を進めることを強く推奨します。
- SCTを用いた事前アセスメントの実施: 移行計画の初期フェーズでSCTを実行し、「移行容易性レポート(Database Migration Assessment Report)」を出力してください。スキーマの自動変換率が何%か、手動修正が必要なストアドプロシージャの工数がどの程度かを定量化することが、プロジェクトの成否を分けます。
- LOBサイズの徹底的なプロファイリング: ソースDBのテーブル群に対してクエリを実行し、LOB列の最大サイズと平均サイズを把握してください。これをもとにDMSのLOBモード(Limited LOBの閾値指定)を最適化します。
- 本番相当トラフィック下でのCDC追従テスト:
静止状態でのテストは意味をなしません。本番ピーク時の書き込み負荷をソースDBに再現ツール等でかけた状態で、DMSのレプリケーション遅延(
CDCLatencySourceおよびCDCLatencyTargetメトリクス)が許容時間内に収まるかを必ず検証してください。 - ストレージ・ファイル移行の自動化と暗号化: ファイルサーバの移行にはスクリプト自作を避け、DataSyncを採用してネットワーク帯域制限(Bandwidth Limit)と整合性チェックをマネージドに任せるのが鉄則です。
クラウドへの移行は、レガシーな技術的負債を一掃し、ビジネスのアジリティを獲得するための跳躍台です。適切なツール選定と綿密なパイプライン設計を通じて、安全で確実なデータマイグレーションを完遂しましょう。
🔗 あわせて読みたい当ブログの関連記事
- 【AWS SAA対策】Direct ConnectとVPNの併用!専用線の暗号化を実現するセキュアハイブリッド接続を徹底解説 - AWS SAA試験でよく問われるハイブリッドネットワーク設計!「Direct Connectを使っているのに通信の暗号化が必要な場合はどう構成する?」という疑問に答え、Direct…
- AWSセキュリティの要!「AWS IAM」とは?初心者向けに概念から設定方法まで図解でわかりやすく解説 - AWSを利用する上で避けて通れない最重要サービス「AWS IAM」を初心者向けに解説。認証・認可の違いから、ユーザー、グループ、ロール、ポリシーの4大要素、JSONによるポリシーの…
- 【AWS SAA対策】マルチアカウント環境でのクロスアカウントアクセスとSCP(サービスコントロールポリシー)による安全なベンダーアクセス設計 - AWS認定 ソリューションアーキテクト(SAA)で頻出のマルチアカウント設計!AWS Organizations環境において、外部ベンダーなどに対して「最小権限の原則」と「一時的な…
📊 本日の自律型 AI ドキュメント解析レポート
- 解析対象:
AWS教科書_SAA_C03.pdf(p.402-412 (計 11 ページ / 全 475 ページ)) - 判定ジャンル:
tech - 対象章・セクション: 10.12 AWS Database Migration Service (DMS)
- Jev 記事品質推敲(Evaluator-Optimizer):
- 最終品質スコア:
11.48 / 12.0(判定:合格 (最高品質クリア)) - 技術・アーキテクチャの具体性:
2.99 / 3.0 - 構成の明快さ:
2.84 / 3.0 - 筆者オピニオン度:
2.98 / 3.0 - 知的好奇心刺激度:
2.67 / 3.0 - 「で、あなたの意見は?」リスク:
23.0% - 自律推敲・改善プロセス (計 1 回):
第1稿: 11.48点 [合格 (最高品質)]
- 最終品質スコア: