Database Migration Service(DMS)とSchema Conversion Tool
DMSでフルロードまたはCDCを使用して同種・異種データベースを移行し、Schema Conversion Toolでスキーマ方言を変換します。
「Database Migration Service(DMS)とSchema Conversion Tool」はCoddyKit上の無料Cloud & IT Cert Prepレッスンです。 これはレッスン4/4です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはCloud & IT Cert Prep学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 Cloud & IT Cert Prepコースには全4レッスンが含まれています。
AWS DMSとは
AWS Database Migration Service (DMS)は、最小限のダウンタイムでデータベースをAWSへ移行します。同種の移行(OracleからOracle、MySQLからMySQLなど)と、異種の移行(OracleからAurora PostgreSQL、SQL ServerからMySQLなど)をサポートします。DMSはレプリケーションインスタンスを使用してソースからデータを読み取り、必要に応じて変換し、ターゲットへ書き込みます。料金はレプリケーションインスタンスの稼働時間に対してのみ発生します。
DMSのコンポーネント:エンドポイントとレプリケーションインスタンス
DMSには3つの主要なコンポーネントがあります。Source Endpointsは、ソースデータベースへの接続(JDBC URL、認証情報、TLS)を定義します。Target Endpointsは、移行先データベースを定義します。Replication Instanceは、DMSがVPC内にプロビジョニングして移行ワークロードを実行する、EC2ベースのマネージドサーバーです。移行するデータ量と、レプリケーションインスタンス自体でマルチAZを使用するかどうかに基づいて、レプリケーションインスタンスのサイズを選択します。
# Create a DMS replication instance
aws dms create-replication-instance \
--replication-instance-identifier my-dms-instance \
--replication-instance-class dms.t3.medium \
--allocated-storage 50 \
--vpc-security-group-ids sg-abc123 \
--replication-subnet-group-identifier my-dms-subnet-group \
--multi-az false \
--publicly-accessible falseFull LoadとCDCによる移行
DMSは2つの移行モードをサポートします。Full Loadは、ソースに存在するすべてのデータをターゲットへコピーします。これは、ダウンタイムを許容できる場合や、移行中にソースを読み取り専用にできる場合に適しています。Change Data Capture (CDC)は、Full Loadの完了後にソースのトランザクションログから継続的な変更を取得し、ソースとターゲットの同期を維持します。Full Load + CDCを組み合わせた移行では、ソースを稼働させたままデータを移行し、ターゲットが追いついた時点でカットオーバーできるため、ダウンタイムを最小限に抑えられます。
# Create a DMS replication task with Full Load + CDC
aws dms create-replication-task \
--replication-task-identifier sales-migration \
--source-endpoint-arn arn:aws:dms:us-east-1:123:endpoint:SOURCE \
--target-endpoint-arn arn:aws:dms:us-east-1:123:endpoint:TARGET \
--replication-instance-arn arn:aws:dms:us-east-1:123:rep:my-dms-instance \
--migration-type full-load-and-cdc \
--table-mappings '{"rules": [{"rule-type": "selection", "rule-id": "1", "rule-name": "all", "object-locator": {"schema-name": "%", "table-name": "%"}, "rule-action": "include"}]}'Schema Conversion Tool(SCT)
AWS Schema Conversion Tool (SCT)は、ソースデータベースのスキーマ(DDL)をターゲットデータベースエンジンと互換性のある形式へ自動変換する、無料でダウンロードできるアプリケーションです。テーブル定義、ビュー、ストアドプロシージャ、関数、トリガーを処理できます。異種移行(OracleからPostgreSQLなど)では、SCTが大部分のオブジェクトを自動的に変換し、構文の非互換性によって手動レビューが必要な項目にフラグを付けます。
# SCT is a GUI desktop tool, but here is the workflow:
# 1. Connect SCT to source Oracle database
# 2. Connect SCT to target Aurora PostgreSQL database
# 3. Run schema assessment: SCT rates conversion complexity per object
# 4. Convert schema automatically (SCT generates PostgreSQL DDL)
# 5. Apply converted DDL to target (SCT executes or exports SQL script)
# 6. Review and manually fix flagged items (e.g., PL/SQL procedures with Oracle-specific syntax)同種移行と異種移行
同種移行(同じエンジン。オンプレミスのMySQLからRDS for MySQLへの移行など)では、スキーマに互換性があるため、通常SCTは必要ありません。DMSで直ちにFull Load + CDCを実行できます。異種移行(異なるエンジン間の移行)では、まずSCTでスキーマを変換し、DMSでデータを移行します。また、ターゲットエンジンに相当する機能がないストアドプロシージャやトリガーは、手動で書き換える必要がある場合があります。
# Example heterogeneous migration workflow:
# On-premises Oracle -> Amazon Aurora PostgreSQL
#
# Step 1: SCT converts Oracle DDL to PostgreSQL DDL
# Step 2: Apply PostgreSQL DDL to Aurora target
# Step 3: DMS Full Load + CDC copies Oracle table data to Aurora
# Step 4: Validate row counts and checksums
# Step 5: Cut over application connections to Aurora endpoint
# Step 6: Terminate DMS task and replication instanceサポートされるソースデータベースとターゲットデータベース
DMSは、Oracle、SQL Server、MySQL、MariaDB、PostgreSQL、SAP ASE、MongoDB、IBM Db2、S3など、幅広いソースをサポートします。ターゲットには、これらすべてに加えてAmazon Redshift、DynamoDB、Kinesis Data Streams、Kafkaも指定できます。そのためDMSは、リレーショナルデータベースの移行だけでなく、CDCを使用してリレーショナルデータベースの変更イベントをKinesisへストリーミングし、データレイクやイベント駆動型アーキテクチャへ取り込む用途にも役立ちます。
DMSのテーブルマッピングルール
DMSはテーブルマッピングルール(JSON)を使用して、含めるスキーマやテーブル、除外するスキーマやテーブルを制御し、データ変換を適用します。スキーマやテーブルの名前変更、列の値の変換(すべての文字列を大文字にするなど)、派生列の追加、行のフィルタリングが可能です。ターゲットの命名規則が異なる場合や、テーブルの一部だけを移行したい場合に便利です。
# Table mapping: include only the 'orders' table, rename schema
{
'rules': [
{
'rule-type': 'selection',
'rule-id': '1',
'rule-name': 'select-orders',
'object-locator': {'schema-name': 'prod_db', 'table-name': 'orders'},
'rule-action': 'include'
},
{
'rule-type': 'transformation',
'rule-id': '2',
'rule-name': 'rename-schema',
'rule-action': 'convert-uppercase',
'rule-target': 'schema',
'object-locator': {'schema-name': 'prod_db'}
}
]
}DMS移行の進行状況の監視
DMSはメトリクスをCloudWatchに発行します。FullLoadThroughputRowsSourceは読み込まれた1秒あたりの行数、CDCLatencySourceはソースのトランザクションログとDMSによる読み取りとの遅延、CDCLatencyTargetはDMSによる読み取りとターゲットへの書き込みとの遅延を示します。同期間中はCDCLatencyTargetを注意深く監視してください。この値がほぼゼロになると、ターゲットがソースに追いつき、カットオーバーの準備が整ったことを示します。
# Monitor CDC latency via CloudWatch CLI
aws cloudwatch get-metric-statistics \
--namespace AWS/DMS \
--metric-name CDCLatencyTarget \
--dimensions Name=ReplicationInstanceIdentifier,Value=my-dms-instance \
--start-time 2024-01-01T00:00:00Z \
--end-time 2024-01-01T01:00:00Z \
--period 60 \
--statistics AverageDMS Serverless
DMS Serverlessは、移行ワークロードに応じてレプリケーション容量を自動的にプロビジョニングおよびスケーリングするため、レプリケーションインスタンスのサイズを選択して管理する必要がありません。DMSの最小容量ユニットと最大容量ユニット(DCU)を指定すると、その範囲内でDMSが自動的にスケールします。負荷が変動する移行や、移行負荷のピーク時にレプリケーションインスタンスのサイズ不足が発生するリスクを避けたい場合に適しています。
# Create a DMS Serverless replication
aws dms create-replication \
--replication-config-identifier my-serverless-migration \
--replication-type full-load-and-cdc \
--source-endpoint-arn arn:aws:dms:us-east-1:123:endpoint:SOURCE \
--target-endpoint-arn arn:aws:dms:us-east-1:123:endpoint:TARGET \
--compute-config '{
"MinCapacityUnits": 2,
"MaxCapacityUnits": 64,
"MultiAZ": false,
"ReplicationSubnetGroupId": "my-subnet-group",
"VpcSecurityGroupIds": ["sg-abc123"]
}'移行の完全性の検証
移行後は、DMSのData Validationを使用してデータの完全性を検証します。タスク設定で有効にすると、DMSはソースとターゲットのテーブル間で行数とチェックサムを比較し、不一致を別の検証テーブルに報告します。異種移行の場合は、アプリケーションレベルのスモークテストも実行してください。検証によって不一致がゼロになるまで、決してカットオーバーしないでください。不完全なカットオーバー後にデータを調整するよりも、検証に時間をかけるほうがはるかに低コストです。
# Enable validation in DMS task settings (JSON)
{
'TargetMetadata': {'SupportLobs': true, 'FullLobMode': false},
'ValidationSettings': {
'EnableValidation': true,
'ValidationMode': 'ROW_LEVEL',
'ValidationOnly': false,
'FailureMaxCount': 10000
}
}DMSに関する一般的な試験シナリオ
SAA-C03試験では、最小限のダウンタイムでデータベースを移行する必要があるシナリオでDMSが登場します。主な手がかりは、「継続的なレプリケーションを行いながらデータベースを移行する」→DMSのFull Load + CDC、「データベースエンジンを変更する」→まずSCT、その後DMS、「変更をほぼリアルタイムでデータレイクへレプリケーションする」→DMSのCDCからKinesisまたはS3、「複数のソースデータベースを1つのターゲットへ統合する」→1つのターゲットエンドポイントに対して複数のDMSタスク、です。DMSは特にデータベースの移行向けです。サーバーの移行にはMGNを、大量データの転送にはDataSyncまたはSnowballを使用します。
クイックチェック
このレッスンで学んだAWS Solutions Architect(SAA-C03)の概念を理解できているか確認しましょう。
レッスンのまとめ
このレッスンでは、DMSがFull LoadモードとCDCモードを使用して同種および異種のデータベース移行をサポートすること、SCTがエンジン変更を伴う移行のスキーマ変換を自動化し、手動レビューが必要な項目にフラグを付けること、DMS Serverlessがレプリケーション容量を自動的にスケールし、インスタンスサイズの決定を不要にすることを学びました。次は、イベント駆動型のルーティングとバスアーキテクチャを実現するAmazon EventBridgeについて学習します。
よくある質問
「Database Migration Service(DMS)とSchema Conversion Tool」レッスンは無料ですか?
はい。「Database Migration Service(DMS)とSchema Conversion Tool」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、Cloud & IT Cert Prepコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 Cloud & IT Cert Prepコースには全4レッスンが含まれています。
「Database Migration Service(DMS)とSchema Conversion Tool」で何を学びますか?
DMSでフルロードまたはCDCを使用して同種・異種データベースを移行し、Schema Conversion Toolでスキーマ方言を変換します。 ブラウザで直接実行するハンズオンコードでCloud & IT Cert Prepを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。
Cloud & IT Cert Prepを始めるのに経験は必要ですか?
事前経験は必要ありません。CoddyKitのCloud & IT Cert Prepは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン4/4です。
「Database Migration Service(DMS)とSchema Conversion Tool」レッスンにはどのくらい時間がかかりますか?
ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。
このCloud & IT Cert Prepレッスンでコードを書いて実行できますか?
はい。すべてのCloud & IT Cert Prepレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。
このコースのすべてのレッスン
- 移行戦略の7つのR
- AWS Migration HubとApplication Discovery Service
- Application Migration Service(MGN)
- Database Migration Service(DMS)とSchema Conversion Tool