Cloud Service
Azure Database Migration Service
オンプレや他クラウドのデータベースを最小停止で Azure のデータサービスへ移行するフルマネージドな移行サービスです。
- 1.DB をダウンタイム最小で Azure へ移行するためのマネージド移行エンジン。
- 2.オフライン移行とオンライン(継続同期)移行に対応し、対象に応じて使い分ける。
- 3.AWS の Database Migration Service(DMS)に相当する Azure のサービス。
解決する課題
オンプレミスや他のクラウドで稼働する既存データベースを Azure のデータサービスへ移すとき、業務を長時間止めずに、データの整合性を保ったまま移行したいという要求に応えます。
- 既存 DB を 業務停止を最小限にして Azure へ移したい
- 移行中もソース DB を稼働させ続け、変更分を継続的に同期したい
- 移行可否や非互換要素を事前に評価してからリスクを下げたい
- 異種エンジン間(例: 他社 DB から PostgreSQL)の移行をスキーマ変換を含めて進めたい
- 複数 DB の移行を手作業のスクリプトに頼らず、再現性のある手順で実施したい
主要概念と用語
- Database Migration Service(DMS): ソース DB から Azure のターゲットへデータを移送するフルマネージドな移行エンジン。移行の調整・実行・進捗管理を担う
- 移行プロジェクト: ソースとターゲット、移行アクティビティをまとめた単位。1 つのサービスインスタンスで複数のプロジェクトを扱える
- オフライン移行: 一度きりの移行。切り替え時点でソースへの書き込みを止め、その時点のデータを移す方式。ダウンタイムが発生する
- オンライン移行: 初期ロード後も**ソースの変更を継続同期(CDC 的な仕組み)**し、任意のタイミングで切り替える方式。ダウンタイムを最小化できる
- 同種移行(ホモジニアス): 同じエンジン間の移行(例: SQL Server から Azure SQL、PostgreSQL から Azure Database for PostgreSQL)
- 異種移行(ヘテロジニアス): 異なるエンジン間の移行(例: 他社 DB から PostgreSQL)。スキーマやコードの変換が伴う
- アセスメント: 移行前に互換性・非対応機能・ブロッカーを洗い出す評価。関連ツールと組み合わせて行う
- カットオーバー: ソースからターゲットへ本番接続を切り替える最終ステップ
オフライン移行は切り替え時にソースを止めるため手順は単純ですが、データ量に比例してダウンタイムが伸びます。オンライン移行は初期コピー後も変更を同期し続け、切り替え直前まで停止しないため停止時間を最小化できます。停止許容時間が短い基幹システムはオンライン、停止しても支障が小さいものはオフライン、という整理が基本です。
仕様・制限・クォータ
- 移行モード: オフライン(一度きり)とオンライン(継続同期)に対応する。オンライン対応の可否はソースとターゲットの組み合わせに依存するため、事前に対応表を確認する
- 対象シナリオ: SQL Server から Azure SQL Database / Managed Instance、PostgreSQL や MySQL のマネージドサービスへの移行など、複数の経路に対応する。組み合わせごとに対応状況が異なる
- ネットワーク到達性が前提: サービスはソースとターゲットの双方へネットワーク到達できる必要がある。多くの場合仮想ネットワーク内に配置し、オンプレとは VPN や ExpressRoute で接続する
- アセスメントは別ツール併用: 互換性評価は関連の移行アシスタント系ツールと組み合わせて実施するのが一般的
- 同時実行や DB 数には構成・サービスレベルに応じた上限があり、具体値は変動しうるため公式ドキュメントで確認する
移行が止まる原因の多くはネットワークとファイアウォールです。DMS からソースとターゲットの両方に到達できる経路(プライベート接続、ファイアウォール許可、必要なポート)を移行作業の前に確立してください。本番カットオーバー直前に接続でつまずくと、停止時間が想定外に延びます。
内部の仕組み
- 初期ロード(フルロード): まずソースの既存データをターゲットへ一括コピーする。これがすべての移行の起点になる
- 継続同期(オンライン時): 初期ロード後、ソースで発生した挿入・更新・削除を変更データキャプチャ(CDC)的な仕組みで追跡し、ターゲットへ反映し続ける。これによりソースを止めずに差分を埋められる
- 整合の収束とカットオーバー: ソースとターゲットの差分が十分小さくなった任意のタイミングで、アプリの接続先を切り替える。切り替え後に同期を停止して移行を完了する
- 同種と異種の差: 同種移行はスキーマがほぼそのまま移せるため単純。異種移行はスキーマ・データ型・ストアドプロシージャなどの変換が必要で、変換ツールやマネージドの移行支援を併用する
- 実行基盤: 移行処理はマネージドなサービス側で実行され、利用者は移行用サーバーの構築や運用を直接負わない
設計パターン / ベストプラクティス
- 必ずアセスメントを先行: 移行前に互換性と非対応機能を洗い出し、ブロッカーを潰してから本番移行に入る
- 停止許容時間でモードを選ぶ: 短時間しか止められない基幹はオンライン、停止が許容できるものはオフラインを選ぶ
- 本番前にリハーサル: 本番と同等のデータ量で一度通し、所要時間・差分追従の挙動・カットオーバー手順を検証する
- カットオーバー手順を明文化: 切り替えの順序(アプリ停止、最終同期確認、接続先変更、検証)を runbook 化し、切り戻し条件も決めておく
- 移行後の検証: 行数・チェックサム・主要クエリ結果でデータ整合性を確認し、性能ベースラインを取り直す
- 既存サービスとの連携: SQL の移行では Managed Instance リンクなどネイティブ機能も選択肢に入れ、要件に応じて最適な経路を選ぶ
運用・監視
- 進捗の可視化: 移行プロジェクトの画面で初期ロードと継続同期の進捗、エラー、遅延を確認する
- 同期遅延の監視(オンライン時): ソースとターゲットの**追従遅延(ラグ)**を見ながら、十分収束してからカットオーバーする
- エラーハンドリング: 変換失敗や制約違反などのエラーはログで原因を特定し、スキーマやデータを修正して再実行する
- Azure Monitor 連携: 関連リソースのメトリクスとログを集約し、長時間移行の進行をダッシュボード化・アラート化する
- 完了後のクリーンアップ: 移行が確定したら継続同期を停止し、不要になった移行用リソースを片付ける
コスト
- 課金体系はサービスレベル(料金区分)に依存し、標準的な区分では一度きりのオフライン移行を低コストで実施でき、継続同期を伴うオンライン移行は稼働時間に応じた課金が中心となる構成が一般的です
- 稼働時間を最小化: オンライン移行はカットオーバー後すみやかに同期を止め、課金対象の稼働時間を短くする
- ターゲット側のコストは別: 移行先の Azure SQL や各マネージド DB の料金は DMS とは別に発生する点を見落とさない
- 具体的な単価は区分・リージョン・期間で変動するため、断定せず公式の料金ページで見積もる
| 移行モード | 考え方 | 向いている用途 |
|---|---|---|
| オフライン移行 | 切り替え時に停止し一度で移す | 停止が許容できる小〜中規模 |
| オンライン移行 | 初期ロード後も変更を継続同期 | 停止許容時間が短い基幹系 |
セキュリティ
- 転送時の暗号化: ソースとターゲット間のデータ転送を暗号化し、移行経路を保護する
- ネットワーク分離: サービスを仮想ネットワーク内に配置し、オンプレとはプライベート接続(VPN / ExpressRoute)で結んでパブリック露出を避ける
- 最小権限: 移行に使うソースおよびターゲットの資格情報は、移行に必要な権限だけに絞る
- シークレット管理: 接続情報やパスワードは安全に管理し、スクリプトや構成への平文直書きを避ける
- ターゲット側の保護: 移行先 DB では TDE(保存時暗号化)や Entra ID 認証など、各サービスのセキュリティ機能を有効化する
本番 DB をパブリックエンドポイント経由・広い権限の管理者資格情報で、検証なしに一発本番移行するのは危険です。プライベート接続と最小権限を用意し、必ずリハーサルとアセスメントを経たうえで、切り戻し手順を持って本番カットオーバーに臨んでください。
Well-Architected の観点
- オペレーショナルエクセレンス(Operational Excellence): 移行をマネージドサービスとして再現性のある手順で実行し、アセスメント・リハーサル・カットオーバー手順を runbook 化する。進捗は画面と Azure Monitor で可視化する
- 信頼性(Reliability): オンライン移行の継続同期と整合性検証により、データ欠損や不整合を避けて安全に切り替える。切り戻し条件をあらかじめ定義する
- セキュリティ: 転送時暗号化、仮想ネットワーク分離、最小権限の資格情報で移行経路を保護する
- コスト最適化: オンライン移行の稼働時間を最小化し、移行用リソースを完了後に速やかに片付ける
試験で問われるポイント
- 役割の位置づけ: DB を最小停止で Azure へ移行するマネージドサービスで、AWS の Database Migration Service(DMS)に相当する
- オフラインとオンラインの違い: 停止が許容できるならオフライン、停止時間を最小化したいならオンライン(継続同期)
- 同種と異種の移行: 同種はスキーマをほぼそのまま、異種はスキーマ・コードの変換が必要
- アセスメント先行: 本番移行の前に互換性評価で非対応機能やブロッカーを洗い出す
- ネットワーク前提: ソースとターゲットの双方へ到達できる経路(仮想ネットワーク、VPN / ExpressRoute)が必要
- ターゲットの選択: SQL Server からは Azure SQL Database や Managed Instance、OSS DB はそれぞれのマネージドサービスが移行先になる
関連サービス・比較
| 観点 | Azure Database Migration Service | AWS Database Migration Service |
|---|---|---|
| 位置づけ | Azure への DB 移行マネージドサービス | AWS への DB 移行マネージドサービス |
| 停止最小化 | オンライン移行で継続同期 | 継続レプリケーションで継続同期 |
| 同種移行 | 同一エンジン間をそのまま移行 | 同一エンジン間をそのまま移行 |
| 異種移行 | 変換ツールや移行支援を併用 | Schema Conversion Tool を併用 |
| 主な移行先 | Azure SQL / Managed Instance / OSS DB のマネージド | RDS / Aurora など |
| 配置 | 仮想ネットワーク内に配置 | VPC 内のレプリケーションインスタンス |
| 運用負荷 | マネージドで移行サーバー不要 | レプリケーションインスタンスを指定 |
SQL Server の移行では、汎用の移行サービスのほかに Managed Instance リンクのようなネイティブ機能も選択肢になります。停止許容時間・対象エンジン・移行回数を踏まえ、最も停止が短く運用が楽な経路を選ぶのが要点です。
ハンズオン / CLI例
# リソースグループを作成
az group create --name demo-rg --location japaneast
# Database Migration Service のインスタンスを作成
# 仮想ネットワークのサブネットに配置し、ソース・ターゲットへ到達できるようにする
az dms create \
--name demo-dms-0614 \
--resource-group demo-rg \
--location japaneast \
--sku-name Standard_1vCores \
--subnet "/subscriptions/<sub-id>/resourceGroups/demo-rg/providers/Microsoft.Network/virtualNetworks/demo-vnet/subnets/dms-subnet"
# 移行プロジェクトを作成(ソース SQL Server からターゲット Azure SQL DB の例)
az dms project create \
--service-name demo-dms-0614 \
--resource-group demo-rg \
--location japaneast \
--name demo-migration \
--source-platform SQL \
--target-platform SQLDB
# 作成したインスタンスとプロジェクトを確認
az dms show \
--name demo-dms-0614 \
--resource-group demo-rg \
--output table
az dms project list \
--service-name demo-dms-0614 \
--resource-group demo-rg \
--output table
Azure Service
Azure Database Migration Serviceを実務で読む
TL;DRは入口です。実際に選ぶ・使う段階では、何を解決するか、何と比較するか、導入後にどこで詰まるかまで見る必要があります。
解決すること
移行・転送
比較で見る軸
クラウド: Azure / カテゴリ: 移行・転送 / 難易度: intermediate
導入後に効く点
オフライン移行とオンライン(継続同期)移行に対応し、対象に応じて使い分ける。
先に潰すリスク
サービス単体ではなく、権限、ネットワーク、監視、課金、バックアップを含めて設計する必要がある。
- クラウド
- Azure
- カテゴリ
- 移行・転送
- 難易度
- intermediate
- 関連資格
- —
- 設計柱
- operational / reliability
判断チェックリスト
- 自社の用途が「移行・転送 / operational」に近いか確認する。
- 強みである「DB をダウンタイム最小で Azure へ移行するためのマネージド移行エンジン。」が本当に評価軸になるか確認する。
- 注意点の「サービス単体ではなく、権限、ネットワーク、監視、課金、バックアップを含めて設計する必要がある。」を運用で吸収できるか確認する。
- 公開値や仕様値は、対象プラン・対象機種・対象リージョンまで確認する。
- 既存システム、ID、ネットワーク、監視、バックアップとの接続方法を先に洗い出す。
- 小さく試してから、本番移行、権限設計、障害時手順、コスト監視を決める。