データベース移行サービス - AWS DMS で実現する安全かつ効率的なデータベース移行

AWS Database Migration Service (DMS) を活用したデータベース移行の手法を解説します。RDS との統合による同種 / 異種データベース間の移行と、継続的レプリケーションによるダウンタイム最小化の実践方法を紹介します。

データベース移行の課題と DMS の概要

データベースの移行は、クラウド移行プロジェクトの中でリスクを伴う工程です。データの整合性確保、ダウンタイムの最小化、スキーマの変換、アプリケーションの互換性検証など、考慮すべき要素が多岐にわたります。AWS Database Migration Service (DMS) は、オンプレミスのデータベースから AWS へ、または AWS 内のデータベース間でデータを移行するフルマネージドサービスです。Oracle、SQL Server、MySQL、PostgreSQL、MongoDB、Amazon Aurora、DynamoDB などのデータベースエンジンをソースまたはターゲットとしてサポートします。DMS は AWS のデータベースサービス (RDS、Aurora、DynamoDB、Redshift) に加え、EC2 上のセルフマネージドデータベースもターゲットとして指定できます。

移行タスクの設定とエンドポイント管理

DMS の移行タスクは、ソースエンドポイント、ターゲットエンドポイント、レプリケーションインスタンスの 3 つのコンポーネントで構成されます。ソースエンドポイントは移行元のデータベース接続情報を定義し、ターゲットエンドポイントは移行先の接続情報を定義します。レプリケーションインスタンスは、ソースからデータを読み取り、必要に応じて変換してターゲットに書き込む処理を実行するコンピュートリソースです。以下の CLI コマンドでレプリケーションインスタンスを作成できます。

aws dms create-replication-instance \
  --replication-instance-identifier my-repl-instance \
  --replication-instance-class dms.r5.large \
  --allocated-storage 100 \
  --multi-az

テーブルマッピングルールにより、移行対象のスキーマやテーブルを選択的に指定でき、テーブル名やカラム名の変換ルールも定義できます。フィルタリングルールを使えば、特定の条件に合致するレコードのみを移行することも可能です。移行前の事前評価機能は、ソースデータベースの互換性を自動チェックし、移行時に問題となる可能性のあるデータ型やオブジェクトを事前に特定します。DMS サーバーレスオプションでは、移行ワークロードに応じてキャパシティが自動でスケーリングします。

継続的レプリケーションとダウンタイム最小化

DMS の継続的レプリケーション (CDC: Change Data Capture) 機能は、初回のフルロード完了後もソースデータベースの変更をターゲットに反映し続けます。これにより、移行期間中もソースデータベースを稼働させたまま、ターゲットデータベースとの同期を維持できます。カットオーバー時の停止は、主にアプリケーションの接続先を切り替える間になります。CDC はソースデータベースのトランザクションログ (Oracle の Redo Log、MySQL の Binary Log、PostgreSQL の WAL) を読み取り、INSERT、UPDATE、DELETE の変更を順序通りにターゲットに適用します。マルチ AZ 構成のレプリケーションインスタンスにより、移行プロセス自体の高可用性も確保できます。CloudWatch メトリクスでレプリケーションの遅延 (レプリケーションラグ) を監視し、カットオーバーの時期の判断に使えます。

異種データベース移行と Schema Conversion Tool

異種データベース間の移行 (例: Oracle から Aurora PostgreSQL) では、スキーマ、ストアドプロシージャ、トリガー、ビューなどのデータベースオブジェクトの変換が必要です。 AWS Schema Conversion Tool (SCT) は、ソースデータベースのスキーマを分析し、ターゲットデータベースに互換性のある形式に自動変換します。変換できないオブジェクトについては、手動変換が必要な箇所と推奨される変換方法を詳細にレポートします。 SCT の評価レポートは、移行の複雑さを定量的に評価し、自動変換率、手動変換が必要なオブジェクト数、推定工数を提示します。SCT は Oracle、SQL Server、SAP ASE、Teradata などのソースからの変換に対応します。 DMS と SCT を組み合わせることで、スキーマ変換とデータ移行を一貫したワークフローで実行できます。

移行後のデータ検証と最適化

DMS のデータ検証機能は、ソースとターゲットのデータを比べて一致を確かめます。テーブルごとの行数比較に加え、カラムレベルのデータ比較も実行でき、不一致が検出された場合は詳細なレポートを生成します。移行後のデータベース最適化では、RDS Performance Insights を活用してクエリパフォーマンスを分析し、インデックスの追加やクエリの書き換えを検討します。Aurora への移行では、リードレプリカの追加による読み取りスケーリング、Aurora Serverless v2 によるワークロードに応じた自動スケーリングを活用できます。以下のコマンドで移行タスクのテーブル統計を確認できます。

aws dms describe-table-statistics \
  --replication-task-arn arn:aws:dms:ap-northeast-1:123456789012:task:TASK123 \
  --filters Name=table-name,Values=orders

CloudWatch Alarms でレプリケーションラグやエラー数を監視し、閾値を超えたら SNS で通知する運用を組めます。

DMS の料金

DMS の料金はレプリケーションインスタンスの時間課金です。DMS Serverless は DCU (DMS Capacity Unit) の使用量に応じた従量課金です。Schema Conversion Tool (SCT) は無料です。初期ロード完了後に継続的レプリケーション (CDC) を実行する場合、レプリケーションインスタンスが常時稼働するため、移行完了後は速やかにインスタンスを停止します。

まとめ - データベース移行戦略の構築指針

AWS DMS は、同種 / 異種データベース間の移行を行うフルマネージドサービスです。SCT によるスキーマの自動変換、事前評価による互換性チェック、データ検証機能は、データベース移行で使う機能です。DMS サーバーレスオプションは、移行ワークロードに合わせてキャパシティを自動で増減します。

参考資料 (AWS 公式)

本ページの一次情報は AWS 公式サイトと公式ドキュメントです。最新の仕様と料金は次の公式ページで確認できます。

本ページと公式ドキュメントの記述が食い違う場合は、公式ドキュメントを正としてください。

共有する