本ページは、AWSに関する個人の勉強および勉強会で使用することを目的に、AWSドキュメントなどを参照し作成しておりますが、記載の誤り等が含まれる場合がございます。

最新の情報については、AWS公式ドキュメントをご参照ください。

AWS Database Migration Service (DMS) は、データベースをAWSに安全かつ簡単に移行するためのフルマネージドサービスです。オンプレミスのデータベースからAWSへの移行、AWSクラウド内でのデータベース間の移行、さらには異なるデータベースエンジン間の移行も可能です。

移行中もソースデータベースは稼働し続けるため、ダウンタイムを最小限に抑えることができます。

【AWS Black Belt Online Seminar】AWS Database Migration Service 概要(YouTube)(37:19)

dms-01-overview

【AWS Black Belt Online Seminar】AWS Database Migration Service ベストプラクティス - 計画編(YouTube)(51:06)

dms-02-plan

【AWS Black Belt Online Seminar】AWS Database Migration Service ベストプラクティス - 実践編(YouTube)(47:01)

dms-03-practice

【AWS Black Belt Online Seminar】AWS Database Migration Service ベストプラクティス - トラブルシューティング編(YouTube)(59:44)

dms-04-troubleshooting

生成 AI を活用したデータベースのスキーマ変換で移行を加速しよう:AWS Database Migration Service Schema Conversion(AWS-09)(YouTube)(40:06)

dms-10-aws09

AWSブログ>はじめてAWS DMSを検討する際に読んでいただきたいこと

AWS Database Migration Service サービス概要

AWS Database Migration Service ドキュメント

AWS Database Migration Service よくある質問

AWS Database Migration Service 料金

dms

DMSには次のような特徴があります。

DMSを使用する際には、以下の4つの主要コンポーネントを理解する必要があります。

DMSがサポートする主なデータベースエンジンは以下のとおりです。

詳細なサポート状況については、Sources for data migration / Targets for data migrationDMS Serverless components - Supported Endpointsを参照してください。

※ *付はサーバーレス

データベースエンジン

ソース

ターゲット

*ソース

*ターゲット

Amazon S3

Amazon Aurora (MySQL互換、PostgreSQL互換)

Amazon RDS (MySQL, PostgreSQL)

MySQL

GooleCloud for MySQL

OCI MySQL

PostgreSQL

GoogleCloud for PostgreSQL

Amazon RDS (MariaDB)

MariaDB

Amazon RDS (Oracle)

Oracle Database

Amazon RDS (SQL Server)

Microsoft SQL Server

Azure SQL Database

MongoDB

SAP ASE (Sybase)

Amazon RDS (Db2)

IBM Db2 (Linux, Unix, Windows用)

Amazon DynamoDB

Amazon Redshift

Amazon OpenSearch Service

Amazon Kinesis Data Streams

Amazon DocumentDB

Amazon Neptune

Amazon Managed Streaming for Apache Kafka

Amazon Timestream

Babelfish

Redis OSS

DMSでは、要件に応じて3つの移行タイプを選択できます。

DMSを使用する前に、ソースデータベースのパラメータを変更する必要があります。 以下に一例を示します。一部のパラメータにはデータベースの再起動が必要なものがありますので、移行前に確認が必要です。

そのほかについては、Sources for data migrationを参照してください。

MySQL or MariaDB:

参考: AWSドキュメント>Using a MySQL-compatible database as a source for AWS DMS

binlog_format=ROW
binlog_row_image=FULL

PostgreSQL:

参考: AWSドキュメント>Using a PostgreSQL database as an AWS DMS source

logical_replication=1
synchronous_commit=ON

DMSでは、ソースデータベースの以下のオブジェクトが移行されます。

これ以外のオブジェクトは移行されないため、移行前または移行後に手動で作成する必要があります。 異種間データベース移行の場合は、AWS SCTの利用も検討します。

AWSドキュメント>Migration planning for AWS Database Migration Serviceを参考にしてください。

Source and target endpoints – Make sure that you know what information and 
tables in the source database need to be migrated to the target database. 
AWS DMS supports basic schema migration, including the creation of tables 
and primary keys. However, AWS DMS doesn't automatically create secondary 
indexes, foreign keys, user accounts, and so on, in the target database. 
Depending on your source and target database engine, you might need to set 
up supplemental logging or modify other settings for a source or target 
database. For more information, see Sources for data migration and Targets 
for data migration.

DMSの料金は、主に以下の要素で構成されます。

詳細は料金ページを参照してください。

DMSには以下のような制限があります。

項目

デフォルト制限

引き上げ可能

レプリケーションインスタンス数

60/アカウント

はい

レプリケーションタスク数

600/アカウント

はい

レプリケーションタスク数

200/レプリケーションインスタンス

はい

エンドポイント数

1,000/アカウント

はい

エンドポイント数

100/レプリケーションインスタンス

はい

サブネットグループ数

60/アカウント

はい

レプリケーション インスタンスの合計ストレージ容量

30 TB

はい

その他の制限については、AWSドキュメントを参照してください。

レプリケーションインスタンスの選択は、移行のパフォーマンスに大きく影響します。

インスタンスサイズの決定要因:

インスタンスサイズの選択例:

実際の移行では、最初に小さいインスタンスで試験移行を実施し、パフォーマンスを確認してから本番移行用のインスタンスサイズを決定することを推奨します。

レプリケーションタスクには、以下のような重要な設定があります。

テーブルマッピング

移行対象のテーブルを指定します。特定のテーブルのみ、または特定のスキーマ全体を対象にすることができます。 ルールタイプ(rule-type)にselectionを指定して定義します。 ルールアクション(rule-action)にexcludeを指定すると除外条件になります。

{
  "rules": [
    {
      "rule-type": "selection",
      "rule-id": "1",
      "rule-name": "1",
      "object-locator": {
        "schema-name": "myschema",
        "table-name": "%"
      },
      "rule-action": "include"
    }
  ]
}

ルールタイプには以下のものがあります。

タスク設定

タスクの動作を細かく制御できます。

参考: Task settings example

{
  "TargetMetadata": {
    "SupportLobs": true,
    "FullLobMode": false,
    "LobChunkSize": 64,
    "LimitedSizeLobMode": true,
    "LobMaxSize": 32
  },
  "FullLoadSettings": {
    "TargetTablePrepMode": "DROP_AND_CREATE",
    "CreatePkAfterFullLoad": false,
    "StopTaskCachedChangesApplied": false,
    "StopTaskCachedChangesNotApplied": false,
    "MaxFullLoadSubTasks": 8,
    "TransactionConsistencyTimeout": 600,
    "CommitRate": 10000
  }
}

主な設定項目は以下のとおりです。

変換ルール

DMSでは、移行時にテーブル名やカラム名を変換することができます。

テーブル名の変換:

ルールアクション(rule-action)にrenameを指定します。

{
  "rules": [
    {
      "rule-type": "transformation",
      "rule-id": "1",
      "rule-name": "1",
      "rule-target": "table",
      "object-locator": {
        "schema-name": "oldschema",
        "table-name": "%"
      },
      "rule-action": "rename",
      "value": "newschema",
      "old-value": null
    }
  ]
}

カラムの追加や削除:

特定のカラムを移行対象から除外したり、新しいカラムを追加したりすることも可能です。 ルールアクション(rule-action)にadd-columnremove-columnを指定します。

{
  "rules": [
    {
      "rule-type": "transformation",
      "rule-id": "1",
      "rule-name": "1",
      "rule-target": "column",
      "object-locator": {
          "schema-name": "Test",
          "table-name": "ITEM"
      },
      "value": "FULL_NAME",
      "expression": "$FIRST_NAME||'_'||$LAST_NAME",
      "data-type": {
            "type": "string",
            "length": 50
      }
    }
  ]
}

データマスキング:

機密データを隠すためのデータマスキングを行うことができます。

指定できるルールアクションは次のとおりです。

参考: Using data masking to hide sensitive information

{
    "rule-type": "transformation",
    "rule-id": "2",
    "rule-name": "2",
    "rule-target": "column",
    "object-locator": {
        "schema-name": "cust_schema",
        "table-name": "customer_master",
        "column-name": "cust_passport_no"
    },
    "rule-action": "data-masking-digits-mask",
    "value": "#"
},
{
    "rule-type": "transformation",
    "rule-id": "3",
    "rule-name": "2",
    "rule-target": "column",
    "object-locator": {
        "schema-name": "cust_schema",
        "table-name": "customer_master",
        "column-name": "email"
    },
    "rule-action": "data-masking-hash-mask"
}

DMSタスクの状態は、Amazon CloudWatchで監視できます。

主要なメトリクスは次のとおりです。

ログの確認

CloudWatch Logsにレプリケーションタスクのログが出力されます。エラーが発生した場合は、まずここを確認します。

DMSを効果的に使用するためのベストプラクティスをいくつか紹介します。

移行前の準備

パフォーマンスの最適化

セキュリティ

⚠️ 2026 年 5 月 20 日 サポート終了

データベースと分析の移行プランを構築します。

dms-fleet-advisor-diagram

よくある問題と対処方法を紹介します。

接続エラー

エンドポイントのテスト接続が失敗する場合は、以下を確認してください。

レプリケーション遅延

CDCの遅延が大きい場合は、以下を検討してください。

メモリ不足エラー

レプリケーションインスタンスのメモリが不足している場合は、インスタンスタイプを変更するか、LOBの処理方法を見直します。

AWS Database Migration Serviceは、データベース移行を安全かつ効率的に実行するための強力なツールです。この記事では、DMSの基本的な概念から実践的な設定方法まで解説しました。

重要なポイントをまとめます。

実際の移行では、必ず小規模な環境でテストを実施し、パフォーマンスやデータの整合性を確認してから本番環境に適用することをお勧めします。