AWS DMSとは?基本概念やメリット、特徴をわかりやすく解説
AWS DMS(Database Migration Service)とは?基本概念と特徴
「今動いているデータベースを、どうやって安全にAWSへ移せばいいのだろう?」 システム運用を担当していると、一度はこのような悩みに直面するはずです。データの移行は、一歩間違えるとサービス停止やデータ消失のリスクを伴う、非常に神経を使う作業です。
そんな時に頼りになるのが、AWS Database Migration Service(以下、AWS DMS)です。
Note
この記事では、移行元のデータベースを「ソース」、移行先のデータベースを「ターゲット」と呼びます。これらの用語は以降のセクションでも頻出するため、あらかじめ頭に入れておいてください。
AWS DMSとは?データベースの引っ越しを支援するサービス
一言で言えば、AWS DMSは「データベースの引っ越し作業を強力にサポートしてくれる専門業者」のようなサービスです。
具体的には、オンプレミス(自社運用)のサーバーや、他のクラウド環境にあるデータベースから、AWS上のデータベースへデータを移し替える役割を担います。ここで重要なのが、単にデータをコピーするだけでなく、「最小限のダウンタイム(システム停止時間)」で移行できるという点です。
通常、大量のデータを移行しようとすると、その間システムを止めておく必要が出てきます。しかし、AWS DMSはデータの移行中もソースのデータベースを動かし続け、変更された差分だけを後から追いかける仕組みを持っているため、サービスへの影響を極限まで抑えることができます。
AWS DMSのメリット:マネージドサービスだからできること
「自分で移行用のサーバーを用意して、複雑な設定をするのは大変そう」と感じるかもしれませんが、AWS DMSは完全なマネージドサービスです。インフラの面倒な管理をAWS側が肩代わりしてくれるため、以下のようなメリットがあります。
- 導入が圧倒的に早い: 自分でハードウェアを買ったり、OSやデータベースソフトをインストールしたりする必要はありません。数分で移行用の環境を立ち上げることができます。
- 運用の手間が省ける: 移行用サーバーのセキュリティパッチ適用や、エラーの監視といった「地味だけど重要な作業」をAWSが自動で行ってくれます。
- 柔軟なスケーリング: 「データの量が多いからもっとパワーが必要だ」となったときも、設定変更だけで簡単にリソース(処理能力)を増強できます。
Tip
移行作業は「一度きりのイベント」になりがちですが、AWS DMSを使えば、将来的なデータ連携やレプリケーション(複製)にもそのまま活用できるため、拡張性が高い状態を維持できます。
対応データベースの幅広さと異種間移行の可能性
AWS DMSのもう一つの強みは、対応しているデータベースの幅広さです。例えば、以下のようなケースでも活躍します。
- 商用DBからOSSへの移行: 高価なライセンス料がかかるOracleなどの商用データベースから、コストを抑えられるPostgreSQLなどのオープンソース系へ移す。
- リレーショナルからNoSQLへ: 構造が決まった「表形式」のデータ(SQL)から、柔軟な構造を持つDynamoDBのようなNoSQLへと形を変えて移行する。
- データ分析基盤への集約: 日々の業務データを、Amazon Redshiftのようなデータウェアハウス(大量のデータを高速に分析するための専用DB)へ流し込む。
このように、「Aという種類のデータベースから、Bという全く別の種類へ」といった異種間移行がスムーズに行えるのが大きな特徴です。
Important
異なる種類のデータベースへ移行する場合、データの持ち方(スキーマ)が変わるため、単純なコピーだけではエラーになることがあります。その場合は、後ほど解説する「スキーマ変換」の機能と組み合わせて使うのが定石です。
AWS DMSの全体アーキテクチャとデータ移行の仕組み
AWS DMSは、データを賢く効率的に転送するために、独自のアーキテクチャとプロセスを採用しています。ここでは「具体的にどうやってデータを運んでいるのか」という中身の部分を解説します。
データ移行の基本プロセス(抽出・変換・ロード)
AWS DMSがデータを動かす際、中心的な役割を果たすのが「レプリケーションインスタンス」というサーバーです。このインスタンスが司令塔となり、以下の3つのステップでデータを転送します。
- 抽出: ソースとなるデータベースから、必要なデータを読み取ります。
- 変換: 読み取ったデータを、ターゲットとなるデータベースの形式に合わせて整えます。データ型の微調整やフォーマットの変換が行われます。この処理の多くはメモリ上で実行されるため、非常にスピーディです。
- ロード: 整えられたデータを、ターゲットのデータベースへと書き込みます。
Tip
ターゲットにテーブルやプライマリキー(データの重複を防ぐ識別子)が存在しない場合、AWS DMSが自動的に作成してくれる設定もあります。スピード重視であれば、この機能を活用すると良いでしょう。
AWS DMSで採用される論理レプリケーション
データの読み取り方式には、大きく分けて「物理レプリケーション」と「論理レプリケーション」の2つがあります。物理レプリケーションはデータベースのファイルそのものをコピーする方式で高速ですが、同じ構造のデータベース間でしか使えません。
AWS DMSが採用しているのは論理レプリケーションです。これは、データベースの中身を「SQL文のようなデータの意味内容」として読み取る方法です。データを意味のある形で解釈し直して運ぶため、「オンプレミスのOracleからAWS上のAuroraへ」といった、異なるエンジン間(異種間)の移行を実現できます。
ダウンタイムを最小限に抑えるCDC(Change Data Capture)の仕組み
システムの移行において、エンジニアが最も恐れるのが「サービスを止める時間(ダウンタイム)」です。数テラバイトもある巨大なデータを一度にコピーしようとすれば、何時間もシステムを止め続けなければなりません。
AWS DMSは、この問題を解決するためにCDC(Change Data Capture:変更データキャプチャ)という仕組みを持っています。移行のプロセスは大きく2段階に分かれます。
- フルロード: 現時点にあるすべてのデータを一括でコピーします。
- 継続的レプリケーション(CDC): フルロードが終わった後、ソース側で発生した「新しい追加・更新データ」だけをリアルタイムで検知し、ターゲットへ送り続けます。
これにより、ソースとターゲットのデータがほぼ同期された状態を維持できます。最後にアプリケーションの接続先をパッと切り替えるだけで済むため、ユーザーへの影響を極限まで短くできるのです。
Important
CDCを利用する場合、ソース側のデータベースで「トランザクションログ」の出力設定を有効にしておく必要があります。この設定がないと、AWS DMSは「何が変更されたか」を追跡できません。
AWS DMS移行前の評価とスキーマ変換のアプローチ
データベースの移行を成功させるには、「今、どんなデータがどこにあるのか」を正確に把握し、新しい環境で動くための設計図(スキーマ)を整える準備が不可欠です。AWS DMSには、この「準備段階」を強力にサポートするツールが用意されています。
DMS Fleet Advisorによる移行前の検出と評価
大規模なシステム移行の際、最初に直面するのが「どのサーバーにどんなデータベースが入っているのか、正確なリストがない」という問題です。手作業での調査は時間がかかり、見落としのリスクも高いです。
そこで活躍するのが DMS Fleet Advisor です。オンプレミスの環境からデータを自動的に収集し、「移行候補となるサーバーやデータベースのインベントリ(目録)」を自動で作成してくれます。
- 現状の可視化: どのデータベースがどれくらいの容量を使っているのかを自動で把握します。
- 移行計画の策定: 収集したデータに基づき、「このサーバーはAWSに持っていける」「このスキーマは変換が必要だ」といった判断材料を提供します。
Tip
移行プロジェクトの初期段階では、いきなりデータを動かすのではなく、まずはFleet Advisorで「現状の棚卸し」を徹底するのが、後のトラブルを防ぐ一番の近道です。
DMS Schema Conversionを用いたスキーマの自動変換
異種間移行(例:OracleからAmazon Auroraへ移行する場合)では、データの形式や関数の書き方が異なるため、スキーマの書き換えが必要です。
現在は DMS Schema Conversion という機能により、AWSのマネジメントコンソール(ブラウザ上の操作画面)だけでスキーマ変換が完結します。
- 移行プロジェクトを作成し、ソースとなるデータベースを指定します。
- 自動評価を実行して、「どこが変換できないか」のレポートを確認します。
- スキーマの変換コードを生成し、ターゲットに適用します。
AWS SCT(Schema Conversion Tool)との使い分け
ブラウザ上で完結するDMS Schema Conversionが便利な一方で、AWS SCT (Schema Conversion Tool) という、ローカルPCにインストールして使う専用ツールも依然として重要な役割を持っています。
どちらを使うべきかは、プロジェクトの規模や複雑さによって判断します。
| 特徴 | DMS Schema Conversion | AWS SCT (Schema Conversion Tool) |
|---|---|---|
| 操作方法 | ブラウザ(マネジメントコンソール) | ローカルPCへのインストールが必要 |
| 主な用途 | 標準的なスキーマ変換、手軽な作業 | 非常に複雑な変換、大規模プロジェクト |
| 利便性 | 環境構築不要ですぐに始められる | 高度なカスタマイズや詳細な検証が可能 |
Important
基本的には「DMS Schema Conversion」で手軽に試し、どうしても自動変換できない複雑なロジックがある場合は「AWS SCT」に切り替えるというアプローチが効率的です。
Warning
スキーマの変換が100%完璧に自動で行われるわけではありません。変換後のレポートを必ず確認し、手動での修正が必要な箇所がないかチェックしてください。
AWS DMSで実現できる3つの主要ユースケース
AWS DMSは単なる「データの引っ越し屋さん」ではありません。用途に合わせて、大きく分けてMigrate(移行)、Replicate(複製)、Modernize(近代化)という3つの役割を使い分けることができます。
Migrate:データベースやDWHの確実な移行
「Migrate」は、既存のデータを新しい場所へ移し替える、最も標準的な使い方です。オンプレミスからAWSへの環境移行や、データベースのバージョンアップの際に力を発揮します。
- データの統合とアーカイブ: 複数の異なるデータベースにあるデータを一つにまとめたり、古いデータを安価なストレージへ移動して整理したりします。
- 異種間移行: SQL形式のデータベースからNoSQL形式へといった、データの構造が異なるもの同士の移行もサポートしています。
Replicate:継続的なデータ連携とレプリケーション
「Replicate」は、常にデータを同期させ続けることを目的とした使い方です。本番データベースに負荷をかけずに、別の場所にリアルタイムに近い形でコピーを提供し続けます。
- データレイク・DWHへの連携: 業務データをAmazon S3(データレイク)やAmazon Redshift(データウェアハウス)へ継続的に流し込み、分析専用の環境を安全に構築します。
- クロスリージョンでのディザスタリカバリ(DR)対策: 遠隔地へのデータ同期を行いたい場合、AWS DMSを用いて異なるリージョンのデータベースへ継続的にレプリケーションすることが可能です。(※同一エンジン間の読み取りレプリカ作成は、Amazon RDSの標準機能でも実現できます)
Modernize:モダンデータベースへのアップグレード
「Modernize」は、システムの構造そのものを進化させるための戦略的な使い方です。運用管理の手間がかかる独自構築のデータベースから、AWSのマネージドサービスへと切り替えます。
- Amazon Auroraへの移行: 高いパフォーマンスと可用性を備えたリレーショナルデータベースへ移行し、運用の負担を減らします。
- Amazon DynamoDBへの移行: 大量のリクエストを高速に処理する必要がある場合、NoSQLであるDynamoDBへ構造を変えて移行することで、スケーラビリティを手に入れます。
Important
Modernizeのようにデータベースエンジン自体が変わるケースでは、データ構造(スキーマ)も変わります。前節で紹介したスキーマ変換ツールを用いて、設計図を正しく作り変える工程が必須です。
AWS DMSのレプリケーションインスタンスとは?役割と高可用性設計
AWS DMSを実際に構築・運用する上で、避けて通れないのが「レプリケーションインスタンス」の存在です。ここでは、よりエンジニアリングに近い視点で、その役割と設計のポイントを深掘りします。
レプリケーションインスタンスの基本概念とリソース設計
前述の「抽出・変換・ロード」というデータ移行の基本プロセスを実際に実行するエンジン部分が、このレプリケーションインスタンスです。AWS DMSを利用する際、ユーザーは自身のVPC内にこのインスタンスをプロビジョニング(確保)します。実態としてはAmazon EC2インスタンスに近い存在です。
インスタンスに求められるリソースは移行の規模によって異なります。具体的なインスタンスタイプ選択の目安は以下の通りです。
- 小規模データやCDCの動作確認:
dms.t3.mediumなどのバーストパフォーマンスクラスから開始するのがおすすめです。 - 大規模データのFull Load(一括転送): 大量データの読み書きにはCPUリソースが強く求められるため、
dms.c5.largeなどのコンピューティング最適化クラスへのスケールアップを検討してください。
また、CDCを利用する際の重要なノウハウとして、ソースデータベース側の「トランザクションログの保持期間」が挙げられます。Full Loadの完了に時間がかかった場合、その間にソース側で発生した変更履歴が古い順から上書き(ローテート)されてしまうと、CDCの開始時にエラーが発生します。これを防ぐため、移行期間中はログの保持期間を十分に長く(例:24時間以上など)設定しておくことが強く推奨されます。
Note
大きなトランザクションが発生した場合、メモリだけでは処理しきれず、ディスク上で一時的にデータを保持する(バッファリング)動きをします。このため、ストレージ容量も適切に割り当てる必要があります。
マルチAZ構成によるフェイルオーバーと高可用性
データベースの移行は、ダウンタイムを最小限に抑えるために長時間のCDCが行われることがよくあります。もし移行の途中でレプリケーションインスタンスが止まってしまうと、移行作業が中断し、リカバリ作業に膨大な時間を要することになります。
これを防ぐための強力な武器が「マルチAZ(Multi-AZ)構成」です。このオプションを有効にすると、メインとは別のアベイラビリティーゾーン(物理的に離れたデータセンター群)に「スタンバイレプリカ」という予備のインスタンスが自動的に用意されます。
- 自動フェイルオーバー: メインのインスタンスに障害が発生すると、AWSが自動的にスタンバイへ切り替えます。
- データの冗長性: プライマリとスタンバイの間でデータが同期されるため、万が一の際もデータ損失を最小限に抑えられます。
Important
本番環境のデータを扱う移行や、ダウンタイムを許容できないプロジェクトにおいて、マルチAZ構成の選択は実質的な必須要件となります。
リソースのスケーリングとストレージの考慮点
移行の進捗状況やデータの量に合わせて、インスタンスのパワーを柔軟に変更できる「スケーラビリティ」も重要なポイントです。
設計・運用時に意識すべきポイントは以下の2点です。
- メモリ消費量: 複雑なデータ変換や大量の同時トランザクションが発生すると、メモリを激しく消費します。メモリ不足は処理速度の低下に直結するため、CloudWatchでメモリ使用率を監視し、余裕を持ったリソース選択を心がけてください。
- ディスクI/O性能: ディスクへのバッファリングが発生する際、ストレージのパフォーマンス(I/O性能)が低いと、そこがボトルネックになって移行全体のスピードを下げてしまいます。
Tip
本番移行の前に少量のデータでテストを実施し、CloudWatchを用いてリソース使用率の実測値を把握しておくのが、失敗しないリソース設計の近道です。
AWS DMSの料金体系と運用時のベストプラクティス
最後に、実際のプロジェクトで欠かせない「お金の話」と、現場で役立つ「運用時のベストプラクティス」を解説します。
AWS DMSの従量課金モデルと料金の最適化
AWS DMSの料金体系は、使った分だけ支払う「従量課金モデル」です。具体的には、主に以下の要素に対して料金が発生します。
- レプリケーションインスタンス: 稼働させているコンピューティングリソース(インスタンスタイプ)に応じた料金です。
- ログストレージ: 大容量データをバッファリングするためのディスク容量に対する料金です。
- データ転送料金: ソースまたはターゲットとの間でデータを通信する際のネットワーク転送料金です。(※AWS外への転送やリージョン間を跨ぐ場合に発生します)
- ログ保存料金: DMSのタスクログやメトリクスをAmazon CloudWatchへ出力・保存する際の標準料金です。
Tip
コストを抑えるための鉄則は「必要な時だけ動かす」ことです。移行作業が終わったら、レプリケーションインスタンスはすぐに削除しましょう。放置すると移行完了後も維持費がかかり続けます。
移行タスクのパフォーマンスを最適化する設定
「データの移行に時間がかかりすぎている」という場面で直面したボトルネックは、DMSのチューニング設定で解消できることがあります。
テーブルマッピングと並列処理
全てのテーブルを一律の設定で流すのではなく、データの性質に合わせて「テーブルマッピングルール」を設定します。巨大なテーブルに対しては並列処理(マルチスレッド)を有効にすることで、全体の完了時間を大幅に短縮できます。
ボトルネックの特定
パフォーマンスが出ないときは、以下のポイントを確認します。
- レプリケーションインスタンスのスペック不足: CPUやメモリが限界に達していないか。
- ネットワーク帯域: ソースとターゲット間の通信速度が制限されていないか。
- ターゲット側の書き込み負荷: ターゲットのデータベースが大量のデータ流入に耐えられているか。
セキュリティとモニタリングの重要性
データを安全に移行し、移行中の不安を払拭するためには、セキュリティとモニタリングの体制が不可欠です。
データの保護と安全な接続
移行中のデータが第三者に覗き見られるリスクを防ぐため、AWS KMS(Key Management Service)を活用してレプリケーションインスタンス内のデータを暗号化してください。また、パブリックなインターネットを経由せず、VPCエンドポイントなどを利用してプライベートな通信経路を確保するのがベストプラクティスです。
CloudWatchによる「健康診断」
移行タスクの状況はAmazon CloudWatchで継続的に監視します。特に以下の指標に注意を払ってください。
- CDCの遅延: ソースで発生した変更がターゲットに反映されるまでのタイムラグです。この値が大きくなり続けている場合は、インスタンスのスケールアップやタスク設定の見直しが必要です。
Important
移行作業は「やりっぱなし」が一番危険です。CloudWatchのアラームを設定しておき、遅延やエラーが発生した際にすぐに通知が届くようにしておくことで、トラブルの早期発見と迅速な対応が可能になります。
Warning
セキュリティ設定を疎かにすると、機密性の高いデータが漏洩するリスクがあります。必ず「最小権限の原則」に基づき、必要な通信経路と暗号化設定を設計段階から組み込んでください。
データベース移行はシステムの根幹に関わる重要な作業ですが、AWS DMSの機能やベストプラクティスを正しく理解・活用することで、ダウンタイムやリスクを最小限に抑えた確実な移行が実現します。ぜひ本番環境での構築に向けて、まずは小さなテスト環境で本記事の内容を試してみてください。