AWS DMS で Amazon RDS for SQL Server のデータ移行を行う~ Serverless 編~
コーヒーが好きな emi です。最近はカフェインを控えています。
以下のブログで、DMS のレプリケーションインスタンス(プロビジョンドインスタンス)を作成し、プロビジョンドモードで RDS for SQL Server のデータ移行検証を行いました。
今回は上記ブログの環境でレプリケーションインスタンス(プロビジョンドインスタンス)を削除し、DMS のタスクモードをサーバーレスにして RDS for SQL Server のデータ移行を試してみます。
構成イメージ
以下の構成で検証します。Windows Server 2022 には SQL Server Management Studio(SSMS)をインストールしておき、ソースとなる DB とターゲットとなる DB に接続して中身のデータを確認するために使います。
AWS DMS で Amazon RDS for SQL Server のデータ移行を行う | DevelopersIO からの差分は以下赤枠部分です。
0. 準備
レプリケーションインスタンスとプロビジョンドタスクの削除
AWS DMS で Amazon RDS for SQL Server のデータ移行を行う | DevelopersIO で作成した構成から、レプリケーションインスタンス(プロビジョンドインスタンス)を削除しておきます。
普通に削除しようとすると、削除できませんでした。
詳細を表示すると、
Replication Instance 'dms-replication-instance' has one or more replication tasks.
(機械翻訳)レプリケーションインスタンス 『dms-replication-instance』 には、1つ以上のレプリケーションタスクが存在します。
つまり、レプリケーションインスタンスが紐づいているレプリケーションタスクを先に削除しておかないといけないそうです。
タスクを削除しましょう。
すぐに削除できました。
再度レプリケーションインスタンスを削除します。
10 分程度待ち、今度は削除できました。
ターゲット DB の掃除
AWS DMS で Amazon RDS for SQL Server のデータ移行を行う | DevelopersIO でデータが移行された状態になっているので、user
テーブルを丸ごと削除しておきます。
user
テーブルの削除
DROP TABLE dbo.[user];
データベース内のテーブル一覧の表示
SELECT name FROM sys.tables;
これは「sys.tables
という表から、name
列の値を取り出して見る」というコマンドです。SQL Server には MySQL のように show tables;
のようなテーブル一覧を表示するコマンドがありませんので、select
でテーブル一覧を表示します。
sys.tables
は SQL Server が内部で持っているシステムビュー(メタ情報の表)で、「このデータベースにどんなテーブルがあるか」という情報が格納されています。普通のユーザーが作るテーブルではなく、データベースの管理用テーブルです。
sys.tables
には「テーブルID」「作成日時」「スキーマID」など様々な列があり、その中の一つが name
列で、テーブルの名前が入っています。
SELECT name FROM sys.tables;
と書くと、テーブル名だけ一覧で表示されるわけです。
name
に何もない、つまり、テーブルは無い状態であることが確認できました。
エンドポイント接続の確認(できない)
レプリケーションインスタンスがあった時は、レプリケーションエンドポイントとの接続確認を行うことができ、接続がうまくいっていないとタスクが作成できませんでした。
サーバーレスの場合はどうなるのか確認してみます。
「接続のテスト」をクリックすると、
Important: Connection testing for AWS DMS Serverless endpoints
When using endpoints with DMS Serverless replications, you cannot perform connection testing through this interface. DMS Serverless automatically validates your endpoint connection as part of the startup sequence when you start replication.
(機械翻訳)重要: AWS DMS サーバーレス エンドポイントの接続テストについてDMS サーバーレス レプリケーションでエンドポイントを使用する場合、このインターフェースを通じて接続テストを実行することはできません。DMS サーバーレスは、レプリケーションを開始する際の起動シーケンスの一環として、エンドポイント接続を自動的に検証します。
タスクモードがサーバーレスの場合、エンドポイント接続の確認はこの画面からはできないそうです。AWS 側で接続の確認を行ってくれるようです。
1. レプリケーションタスク(サーバーレス)の作成
レプリケーションタスクのタスクモードをサーバーレスで作成します。サーバーレス方式の場合はレプリケーションインスタンスを作成する必要がないので、もうタスクの作成に進みます。
タスク名、ソース DB、ターゲット DB を指定し、タスクモードはサーバーレスを選択します。タスクタイプは移行のみとします。
ターゲットテーブル準備モードは「ターゲットのテーブルをドロップ(削除)」、「レプリケーションに LOB 列を含める」では、デフォルトの「制限付き LOB モード」のままにします。
設定値の説明は AWS DMS で Amazon RDS for SQL Server のデータ移行を行う | DevelopersIO - 5. 移行タスクの作成 を参照してください。
高度な設定はデフォルトのまま進めます。
テーブルマッピングではウィザードを選択して「新しい選択ルールを追加」をクリックします。
今回は以下のように設定します。
- スキーマ名:
dbo
- スキーマテーブル名:
user
- アクション:含む
RDS for SQL Server に SQL Server Management Studio(SSMS)でデータを挿入する | DevelopersIO でデータを挿入したテーブルの情報を入れています。
作成済みの VPC、サブネットグループ、セキュリティグループを設定します。セキュリティグループは、レプリケーションインスタンスに設定したのと同じものを設定しています。
検証のため、可用性ではシングル AZ を選択しコストを抑えます。
アベイラビリティゾーンは指定なしで進めます。
「キャパシティ」では、レプリケーションに使用するコンピューティングリソースのキャパシティの最小値と最大値を設定します。このキャパシティは、DMS キャパシティユニット(DCU)と言います。
最小値は任意で、何も設定しないと 1 DCU(1 vCPU、2 GiB)になります。
最大値は必須項目です。
(参照)キャパシティ情報タブ転記
AWS DMS computes the minimum capacity required to successfully complete each replication. AWS DMS bases this assessment on the replication's workload. You set the maximum capacity for the replication. AWS DMS uses this range to create scaling rules for the following thresholds:
CPU utilization
Connections
Available memory
AWS DMS can increase capacity to the value of Maximum.
前回レプリケーションインスタンスを作成したとき t3.medium
(2 vCPU、CPU バーストクレジットあり、 4 GiB メモリ)を指定したので、似たようなキャパシティとして、最大 DCU は 2 DCU(2 vCPU、4 GiB メモリ)にしてみました。
メンテナンスウィンドウを設定し、タスクを作成します。
サーバーレスタスクが作成されました。
2. レプリケーションタスク(サーバーレス)の開始
アクションからタスクを開始します。
移行前評価はオフにしてタスクを開始します。移行前評価はあとで検証しましょう。
タスクのステータスが初期化中となり、
メタデータの準備中となり、
キャパシティのプロビジョニング中となります。
キャパシティのプロビジョニングが終わり、タスクが開始されます。
サーバーレスのタスクのステータスは以下ドキュメントに遷移図があります。
タスクの作成からトータルで 20 分程待ち、ロードが完了しました。開始・停止時間と、プロビジョンド DMS キャパシティユニットのところに DCU が表記されました。
ターゲット DB に接続してデータが移行されているか確認します。
SELECT * FROM [user];
▼実行結果
id name address
----------- ---------- ----------
1 Yamada Tokyo
2 Satou Chiba
3 Kinjo Okinawa
(3 行に影響しました)
完了時刻: 2025-09-30T21:14:08.7899582+09:00
無事 user テーブルが作成され、データが移行されていることが確認できました。
また、少したってタスクのステータスを見ると、「停止およびプロビジョニング解除済み」となっていました。
プロビジョンドモードと違ってタスクが動いていない時間はコンピューティングリソースが解放されるので、コストがかかりっぱなしにならないというわけです。
ちなみに、時間当たりの料金だとサーバーレスの方が少し高いです。
オンデマンドインスタンス(プロビジョンドインスタンス)の料金(東京リージョン)
インスタンスタイプ | 時間あたりの料金 (シングル AZ) | 時間あたりの料金 (マルチ AZ) |
---|---|---|
t3.medium(2 vCPU、CPU バーストクレジットあり、 4 GiB メモリ) | USD 0.112 | USD 0.224 |
サーバーレスの料金(東京リージョン)
AWS DMS キャパシティユニット (DCU) | 時間あたりの料金 (シングル AZ) | 時間あたりの料金 (マルチ AZ) |
---|---|---|
2(2 vCPU、4 GiB メモリ) | USD 0.229 USD | 0.458 |
CloudWatch Logs のログ
タスクのログが CloudWatch Logs のロググループ dms-serverless-replication-P2NOQMBK3BDJVNSQ3SCECW22HI
に出力されているので、参考に記載します。
ログ全体を眺めたいので「ログのインサイト(CloudWatch Logs Insights)」か
ローカルタイムゾーンと時刻を指定し、ロググループ dms-serverless-replication-P2NOQMBK3BDJVNSQ3SCECW22HI
を選択して以下クエリを実行します。
fields @timestamp, @message, @logStream
| sort @timestamp asc
| limit 10000
タイムスタンプ、ログメッセージ、ログストリームを昇順(古い→新しい)で 10000 行取得するクエリです。
結果はコピーすることもダウンロードすることもできます。CSV でダウンロードすると、logs-insights-results.csv という名前の CSV がダウンロードできました。
logs-insights-results.csv
@timestamp,@message,@logStream
2025-09-30 11:38:45.170,"{'replication_state':'initializing', 'message': 'Initializing the replication workflow.'}",dms-serverless-replication-orchestrator-P2NOQMBK3BDJVNSQ3SCECW22HI
2025-09-30 11:38:53.500,"{'replication_state':'calculating_capacity', 'message': 'Calculating workload capacity for your replication based on table mappings and source metadata.'}",dms-serverless-replication-orchestrator-P2NOQMBK3BDJVNSQ3SCECW22HI
2025-09-30 11:39:20.619,"{'replication_state':'provisioning_capacity', 'message': 'Fetching workload capacity to provision your replication.'}",dms-serverless-replication-orchestrator-P2NOQMBK3BDJVNSQ3SCECW22HI
2025-09-30 11:39:22.802,"{'replication_state':'provisioning_capacity', 'message': 'Provisioning 2 capacity units to perform the replication. This can take some time.'}",dms-serverless-replication-orchestrator-P2NOQMBK3BDJVNSQ3SCECW22HI
2025-09-30 11:58:22.571,"{'replication_state':'replication_starting', 'message': 'Starting replication from source arn:aws:dms:ap-northeast-1:123456789012:endpoint:5SBTLOTFTVFQHL7MDMN5HV3SUU to target arn:aws:dms:ap-northeast-1:123456789012:endpoint:NX3KDSKKNFBG5JPVZEQVSLN3II in FULL_LOAD mode.'}",dms-serverless-replication-orchestrator-P2NOQMBK3BDJVNSQ3SCECW22HI
2025-09-30 11:59:03.000,"2025-09-30T11:59:03 [AT_GLOBAL ]I: Task Server Log - serv-res-id-1759233328225-uiwj (V3.5.3.R2373 ip-172-23-1-194 Linux 4.14.355-280.695.amzn2.x86_64 #1 SMP Tue Sep 23 00:22:57 UTC 2025 x86_64 64-bit, PID: 17005) started at Tue Sep 30 11:59:03 2025 (at_logger.c:3250)",dms-serverless-serv-res-id-1759233328225-uiwj
2025-09-30 11:59:03.000,2025-09-30T11:59:03 [DATA_STRUCTURE ]I: SQLite version is 3.31.1 (at_sqlite.c:178),dms-serverless-serv-res-id-1759233328225-uiwj
2025-09-30 11:59:03.000,2025-09-30T11:59:03 [TARGET_APPLY ]I: Lob lookup mutex created successfully (bulk_apply.c:888),dms-serverless-serv-res-id-1759233328225-uiwj
2025-09-30 11:59:03.000,2025-09-30T11:59:03 [VALIDATOR ]I: validation_util_class_initialize (validation_util.c:85),dms-serverless-serv-res-id-1759233328225-uiwj
2025-09-30 11:59:03.000,2025-09-30T11:59:03 [VALIDATOR ]I: Creating Table Def Mutex (validation_util.c:89),dms-serverless-serv-res-id-1759233328225-uiwj
2025-09-30 11:59:03.000,2025-09-30T11:59:03 [VALIDATOR ]I: ==> Success Creating Table Def Mutex (validation_util.c:97),dms-serverless-serv-res-id-1759233328225-uiwj
2025-09-30 11:59:03.000,2025-09-30T11:59:03 [TASK_MANAGER ]I: Execute Request Task 'serv-res-id-1759233328225-uiwj' running full load only with flags fresh start with cdcPosition null and stop_at null (replicationtask.c:993),dms-serverless-serv-res-id-1759233328225-uiwj
2025-09-30 11:59:03.000,"2025-09-30T11:59:03 [TASK_MANAGER ]I: ""BatchApplyPreserveTransaction"" is turned off because Batch optimized apply mode is disabled in the task settings. (replicationtask.c:1400)",dms-serverless-serv-res-id-1759233328225-uiwj
2025-09-30 11:59:03.000,"2025-09-30T11:59:03 [TASK_MANAGER ]I: Note: the 'SQL Server' target endpoint does not support ""BatchApplyPreserveTransaction"" option in ""Batch optimized apply"" mode. Therefore, this option is disabled even if you enable in the task settings. (replicationtask.c:1407)",dms-serverless-serv-res-id-1759233328225-uiwj
2025-09-30 11:59:03.000,2025-09-30T11:59:03 [TASK_MANAGER ]I: Task 'serv-res-id-1759233328225-uiwj' starting full load only in fresh start mode (replicationtask.c:1621),dms-serverless-serv-res-id-1759233328225-uiwj
2025-09-30 11:59:03.000,2025-09-30T11:59:03 [TASK_MANAGER ]I: Serverless enhanced throughput is Disabled. (replicationtask.c:1821),dms-serverless-serv-res-id-1759233328225-uiwj
2025-09-30 11:59:03.000,2025-09-30T11:59:03 [VALIDATOR ]I: bValidationFreshStart = '1' (validation_manager.c:170),dms-serverless-serv-res-id-1759233328225-uiwj
2025-09-30 11:59:03.000,2025-09-30T11:59:03 [TASK_MANAGER ]I: Task Id: daf18771-50d6-4559-ba16-641d5ddad106 (replicationtask.c:3911),dms-serverless-serv-res-id-1759233328225-uiwj
2025-09-30 11:59:03.000,2025-09-30T11:59:03 [TASK_MANAGER ]I: LOB support on the task has been enabled (endpointshell.c:1915),dms-serverless-serv-res-id-1759233328225-uiwj
2025-09-30 11:59:03.000,2025-09-30T11:59:03 [TASK_MANAGER ]I: Task is running in Limited LOB Mode. MaxLobSize is set to '32768' Bytes (endpointshell.c:1918),dms-serverless-serv-res-id-1759233328225-uiwj
2025-09-30 11:59:03.000,"2025-09-30T11:59:03 [METADATA_MANAGE ]I: Going to connect to ODBC connection string: DRIVER={ODBC Driver 17 for SQL Server};SERVER=source-db.colw41khta5t.ap-northeast-1.rds.amazonaws.com,1433;DATABASE=test_db;Trusted_Connection=no;; (sqlserver_endpoint_util.c:242)",dms-serverless-serv-res-id-1759233328225-uiwj
2025-09-30 11:59:04.000,2025-09-30T11:59:04 [METADATA_MANAGE ]I: Source endpoint 'SQL Server' is using provider syntax 'SQLServer' (provider_syntax_manager.c:894),dms-serverless-serv-res-id-1759233328225-uiwj
2025-09-30 11:59:04.000,2025-09-30T11:59:04 [METADATA_MANAGE ]I: SQL server version: Microsoft SQL Server 2016 (SP3-GDR) (KB5063762) - 13.0.6465.1 (X64) Jul 14 2025 21:50:50 Copyright (c) Microsoft Corporation Standard Edition (64-bit) on Windows Server 2016 Datacenter 10.0 <X64> (Build 14393: ) (Hypervisor) (sqlserver_log_queries.c:8466),dms-serverless-serv-res-id-1759233328225-uiwj
2025-09-30 11:59:04.000,2025-09-30T11:59:04 [METADATA_MANAGE ]I: Database is RDS SQL Server (sqlserver_log_queries.c:8518),dms-serverless-serv-res-id-1759233328225-uiwj
2025-09-30 11:59:04.000,2025-09-30T11:59:04 [METADATA_MANAGE ]I: Sampled server version: 2016 (sqlserver_endpoint_imp.c:2372),dms-serverless-serv-res-id-1759233328225-uiwj
2025-09-30 11:59:04.000,2025-09-30T11:59:04 [METADATA_MANAGE ]I: Internal property forceloblookup: false (sqlserver_endpoint_imp.c:2386),dms-serverless-serv-res-id-1759233328225-uiwj
2025-09-30 11:59:04.000,2025-09-30T11:59:04 [METADATA_MANAGE ]I: Internal property lobLookupNoDataRetry: 0 (sqlserver_endpoint_imp.c:2387),dms-serverless-serv-res-id-1759233328225-uiwj
2025-09-30 11:59:04.000,2025-09-30T11:59:04 [METADATA_MANAGE ]I: Internal property lobLookupNodataPollingSec: 1 (sqlserver_endpoint_imp.c:2388),dms-serverless-serv-res-id-1759233328225-uiwj
2025-09-30 11:59:04.000,2025-09-30T11:59:04 [METADATA_MANAGE ]I: Internal property forceDataRowLookup: false (sqlserver_endpoint_imp.c:2390),dms-serverless-serv-res-id-1759233328225-uiwj
2025-09-30 11:59:04.000,2025-09-30T11:59:04 [METADATA_MANAGE ]I: Internal property rowLookupNoDataRetry: 0 (sqlserver_endpoint_imp.c:2391),dms-serverless-serv-res-id-1759233328225-uiwj
2025-09-30 11:59:04.000,2025-09-30T11:59:04 [METADATA_MANAGE ]I: Internal property rowLookupNoDataPollingSec: 1 (sqlserver_endpoint_imp.c:2392),dms-serverless-serv-res-id-1759233328225-uiwj
2025-09-30 11:59:04.000,2025-09-30T11:59:04 [METADATA_MANAGE ]I: NLS configuration sampled: Associated code page=932 (sqlserver_endpoint_imp.c:2426),dms-serverless-serv-res-id-1759233328225-uiwj
2025-09-30 11:59:04.000,2025-09-30T11:59:04 [METADATA_MANAGE ]I: Bulk is set to ignore max row size warnings (sqlserver_endpoint_imp.c:1656),dms-serverless-serv-res-id-1759233328225-uiwj
2025-09-30 11:59:04.000,2025-09-30T11:59:04 [METADATA_MANAGE ]I: Working with collated columns (sqlserver_endpoint_imp.c:1713),dms-serverless-serv-res-id-1759233328225-uiwj
2025-09-30 11:59:04.000,2025-09-30T11:59:04 [METADATA_MANAGE ]I: Working with BCPKeepNull set to TRUE (sqlserver_endpoint_imp.c:1717),dms-serverless-serv-res-id-1759233328225-uiwj
2025-09-30 11:59:04.000,2025-09-30T11:59:04 [METADATA_MANAGE ]I: Target endpoint 'SQL Server' is using provider syntax 'SQLServer' (provider_syntax_manager.c:900),dms-serverless-serv-res-id-1759233328225-uiwj
2025-09-30 11:59:04.000,2025-09-30T11:59:04 [METADATA_MANAGE ]I: Loaded SQLServer Driver: 'ODBC Driver 17 for SQL Server' (sqlserver_endpoint_imp.c:472),dms-serverless-serv-res-id-1759233328225-uiwj
2025-09-30 11:59:04.000,"2025-09-30T11:59:04 [METADATA_MANAGE ]I: Going to connect to SQL Server Target : DRIVER={ODBC Driver 17 for SQL Server};SERVER=target-db.colw41khta5t.ap-northeast-1.rds.amazonaws.com,1433;DATABASE=test_db;UID=target_db_admin; (ar_odbc_conn.c:354)",dms-serverless-serv-res-id-1759233328225-uiwj
2025-09-30 11:59:04.000,"2025-09-30T11:59:04 [METADATA_MANAGE ]I: Going to connect to SQL Server Target : DRIVER={ODBC Driver 17 for SQL Server};SERVER=target-db.colw41khta5t.ap-northeast-1.rds.amazonaws.com,1433;DATABASE=test_db;UID=target_db_admin; (ar_odbc_conn.c:354)",dms-serverless-serv-res-id-1759233328225-uiwj
2025-09-30 11:59:04.000,2025-09-30T11:59:04 [METADATA_MANAGE ]I: Target endpoint 'SQL Server' is using provider syntax 'SQLServer' (provider_syntax_manager.c:900),dms-serverless-serv-res-id-1759233328225-uiwj
2025-09-30 11:59:04.000,2025-09-30T11:59:04 [TASK_MANAGER ]I: Preparing all components (replicationtask.c:2279),dms-serverless-serv-res-id-1759233328225-uiwj
2025-09-30 11:59:04.000,"2025-09-30T11:59:04 [TASK_MANAGER ]I: Task - serv-res-id-1759233328225-uiwj is in STARTING state, updating starting status to AR_PREPARING_COMPONENTS (repository.c:5491)",dms-serverless-serv-res-id-1759233328225-uiwj
2025-09-30 11:59:04.000,2025-09-30T11:59:04 [TASK_MANAGER ]I: Creating threads for all components (replicationtask.c:2312),dms-serverless-serv-res-id-1759233328225-uiwj
2025-09-30 11:59:04.000,"2025-09-30T11:59:04 [TASK_MANAGER ]I: Task - serv-res-id-1759233328225-uiwj is in STARTING state, updating starting status to AR_CREATING_TREADS (repository.c:5491)",dms-serverless-serv-res-id-1759233328225-uiwj
2025-09-30 11:59:04.000,"2025-09-30T11:59:04 [TASK_MANAGER ]I: Task - serv-res-id-1759233328225-uiwj is in STARTING state, updating starting status to AR_CREATING_TABLES_LIST (repository.c:5491)",dms-serverless-serv-res-id-1759233328225-uiwj
2025-09-30 11:59:04.000,2025-09-30T11:59:04 [TABLES_MANAGER ]I: Calling for get capture table list from the Metadata Manager started. (tasktablesmanager.c:963),dms-serverless-serv-res-id-1759233328225-uiwj
2025-09-30 11:59:04.000,2025-09-30T11:59:04 [TABLES_MANAGER ]I: Calling for get capture table list from the Metadata Manager ended. (tasktablesmanager.c:970),dms-serverless-serv-res-id-1759233328225-uiwj
2025-09-30 11:59:04.000,"2025-09-30T11:59:04 [TASK_MANAGER ]I: Task - serv-res-id-1759233328225-uiwj is in RUNNING state, updating starting status to AR_RUNNING (repository.c:5491)",dms-serverless-serv-res-id-1759233328225-uiwj
2025-09-30 11:59:04.000,2025-09-30T11:59:04 [TASK_MANAGER ]I: All stream components were initialized (replicationtask.c:3648),dms-serverless-serv-res-id-1759233328225-uiwj
2025-09-30 11:59:04.000,2025-09-30T11:59:04 [TASK_MANAGER ]I: Starting the validation process... (replicationtask.c:3725),dms-serverless-serv-res-id-1759233328225-uiwj
2025-09-30 11:59:04.000,2025-09-30T11:59:04 [TASK_MANAGER ]I: Starting subtask #1 (replicationtask_util.c:521),dms-serverless-serv-res-id-1759233328225-uiwj
2025-09-30 11:59:04.000,2025-09-30T11:59:04 [TASK_MANAGER ]I: Threads for all components were created (replicationtask.c:2499),dms-serverless-serv-res-id-1759233328225-uiwj
2025-09-30 11:59:04.000,2025-09-30T11:59:04 [TASK_MANAGER ]I: Task initialization completed successfully (replicationtask.c:3968),dms-serverless-serv-res-id-1759233328225-uiwj
2025-09-30 11:59:04.000,2025-09-30T11:59:04 [TARGET_LOAD ]I: Bulk is set to ignore max row size warnings (sqlserver_endpoint_imp.c:1656),dms-serverless-serv-res-id-1759233328225-uiwj
2025-09-30 11:59:04.000,2025-09-30T11:59:04 [TARGET_LOAD ]I: Working with collated columns (sqlserver_endpoint_imp.c:1713),dms-serverless-serv-res-id-1759233328225-uiwj
2025-09-30 11:59:04.000,2025-09-30T11:59:04 [TARGET_LOAD ]I: Working with BCPKeepNull set to TRUE (sqlserver_endpoint_imp.c:1717),dms-serverless-serv-res-id-1759233328225-uiwj
2025-09-30 11:59:04.000,2025-09-30T11:59:04 [TARGET_LOAD ]I: Target endpoint 'SQL Server' is using provider syntax 'SQLServer' (provider_syntax_manager.c:900),dms-serverless-serv-res-id-1759233328225-uiwj
2025-09-30 11:59:04.000,2025-09-30T11:59:04 [TARGET_LOAD ]I: Loaded SQLServer Driver: 'ODBC Driver 17 for SQL Server' (sqlserver_endpoint_imp.c:472),dms-serverless-serv-res-id-1759233328225-uiwj
2025-09-30 11:59:04.000,"2025-09-30T11:59:04 [TARGET_LOAD ]I: Going to connect to SQL Server Target : DRIVER={ODBC Driver 17 for SQL Server};SERVER=target-db.colw41khta5t.ap-northeast-1.rds.amazonaws.com,1433;DATABASE=test_db;UID=target_db_admin; (ar_odbc_conn.c:354)",dms-serverless-serv-res-id-1759233328225-uiwj
2025-09-30 11:59:04.000,"2025-09-30T11:59:04 [TARGET_LOAD ]I: Going to connect to SQL Server Target : DRIVER={ODBC Driver 17 for SQL Server};SERVER=target-db.colw41khta5t.ap-northeast-1.rds.amazonaws.com,1433;DATABASE=test_db;UID=target_db_admin; (ar_odbc_conn.c:354)",dms-serverless-serv-res-id-1759233328225-uiwj
2025-09-30 11:59:04.000,2025-09-30T11:59:04 [TARGET_LOAD ]I: Target endpoint 'SQL Server' is using provider syntax 'SQLServer' (provider_syntax_manager.c:900),dms-serverless-serv-res-id-1759233328225-uiwj
2025-09-30 11:59:05.000,"2025-09-30T11:59:05 [SOURCE_CAPTURE ]I: Going to connect to ODBC connection string: DRIVER={ODBC Driver 17 for SQL Server};SERVER=source-db.colw41khta5t.ap-northeast-1.rds.amazonaws.com,1433;DATABASE=test_db;Trusted_Connection=no;; (sqlserver_endpoint_util.c:242)",dms-serverless-serv-res-id-1759233328225-uiwj
2025-09-30 11:59:05.000,2025-09-30T11:59:05 [SOURCE_CAPTURE ]I: Source endpoint 'SQL Server' is using provider syntax 'SQLServer' (provider_syntax_manager.c:894),dms-serverless-serv-res-id-1759233328225-uiwj
2025-09-30 11:59:05.000,2025-09-30T11:59:05 [SOURCE_CAPTURE ]I: NLS configuration sampled: Associated code page=932 (sqlserver_endpoint_imp.c:2426),dms-serverless-serv-res-id-1759233328225-uiwj
2025-09-30 11:59:05.000,"2025-09-30T11:59:05 [SOURCE_UNLOAD ]I: Going to connect to ODBC connection string: DRIVER={ODBC Driver 17 for SQL Server};SERVER=source-db.colw41khta5t.ap-northeast-1.rds.amazonaws.com,1433;DATABASE=test_db;Trusted_Connection=no;; (sqlserver_endpoint_util.c:242)",dms-serverless-serv-res-id-1759233328225-uiwj
2025-09-30 11:59:05.000,2025-09-30T11:59:05 [SOURCE_UNLOAD ]I: Source endpoint 'SQL Server' is using provider syntax 'SQLServer' (provider_syntax_manager.c:894),dms-serverless-serv-res-id-1759233328225-uiwj
2025-09-30 11:59:05.000,2025-09-30T11:59:05 [SOURCE_UNLOAD ]I: NLS configuration sampled: Associated code page=932 (sqlserver_endpoint_imp.c:2426),dms-serverless-serv-res-id-1759233328225-uiwj
2025-09-30 11:59:05.000,2025-09-30T11:59:05 [TASK_MANAGER ]I: Starting component st_1_5SBTLOTFTVFQHL7MDMN5HV3SUU (subtask.c:1449),dms-serverless-serv-res-id-1759233328225-uiwj
2025-09-30 11:59:05.000,2025-09-30T11:59:05 [TASK_MANAGER ]I: Starting component st_1_NX3KDSKKNFBG5JPVZEQVSLN3II (subtask.c:1449),dms-serverless-serv-res-id-1759233328225-uiwj
2025-09-30 11:59:05.000,"2025-09-30T11:59:05 [TARGET_LOAD ]I: No records received to load or apply on target , waiting for data from upstream (streamcomponent.c:2013)",dms-serverless-serv-res-id-1759233328225-uiwj
2025-09-30 11:59:05.000,"2025-09-30T11:59:05 [TABLES_MANAGER ]I: Next table to load 'dbo'.'user' ID = 1, order = 0 (tasktablesmanager.c:1918)",dms-serverless-serv-res-id-1759233328225-uiwj
2025-09-30 11:59:05.000,2025-09-30T11:59:05 [TASK_MANAGER ]I: Start loading table 'dbo'.'user' (Id = 1) by subtask 1. Start load timestamp 000640037A8CBB2D (replicationtask_util.c:755),dms-serverless-serv-res-id-1759233328225-uiwj
2025-09-30 11:59:05.000,2025-09-30T11:59:05 [SOURCE_UNLOAD ]I: Sent unloaded record 1 to internal queue (streamcomponent.c:3015),dms-serverless-serv-res-id-1759233328225-uiwj
2025-09-30 11:59:05.000,2025-09-30T11:59:05 [SOURCE_UNLOAD ]I: Calculated batch used for UNLOAD size is 1000 rows per fetch. (sqlserver_endpoint_unload.c:222),dms-serverless-serv-res-id-1759233328225-uiwj
2025-09-30 11:59:05.000,2025-09-30T11:59:05 [SOURCE_UNLOAD ]I: Unload finished for table 'dbo'.'user' (Id = 1). 3 rows sent. (streamcomponent.c:3875),dms-serverless-serv-res-id-1759233328225-uiwj
2025-09-30 11:59:05.000,2025-09-30T11:59:05 [TARGET_LOAD ]I: Target starts loading table 'dbo'.'user'. (sqlserver_endpoint_imp.c:4229),dms-serverless-serv-res-id-1759233328225-uiwj
2025-09-30 11:59:05.000,2025-09-30T11:59:05 [TARGET_LOAD ]I: Load finished for table 'dbo'.'user' (Id = 1). 3 rows received. 0 rows skipped. Volume transferred 1344. (streamcomponent.c:4168),dms-serverless-serv-res-id-1759233328225-uiwj
2025-09-30 11:59:05.000,2025-09-30T11:59:05 [PERFORMANCE ]I: End load handler time for dbo.user = 3575 microseconds (endpointshell.c:3062),dms-serverless-serv-res-id-1759233328225-uiwj
2025-09-30 11:59:05.000,2025-09-30T11:59:05 [PERFORMANCE ]I: Total load time for dbo.user = 5209 microseconds (endpointshell.c:3064),dms-serverless-serv-res-id-1759233328225-uiwj
2025-09-30 11:59:05.000,2025-09-30T11:59:05 [TASK_MANAGER ]I: Loading finished for table 'dbo'.'user' (Id = 1) by subtask 1. 3 rows affected. Time taken: 20009 micro seconds (replicationtask.c:2958),dms-serverless-serv-res-id-1759233328225-uiwj
2025-09-30 11:59:05.000,2025-09-30T11:59:05 [TASK_MANAGER ]I: All tables are loaded. Full load only task is stopped (replicationtask.c:4383),dms-serverless-serv-res-id-1759233328225-uiwj
2025-09-30 11:59:05.000,2025-09-30T11:59:05 [TASK_MANAGER ]I: Subtask #1 ended (replicationtask_util.c:595),dms-serverless-serv-res-id-1759233328225-uiwj
2025-09-30 11:59:05.000,"2025-09-30T11:59:05 [TASK_MANAGER ]I: Task - serv-res-id-1759233328225-uiwj is in STOPPED state, updating starting status to AR_NOT_APPLICABLE (repository.c:5483)",dms-serverless-serv-res-id-1759233328225-uiwj
2025-09-30 11:59:05.000,"2025-09-30T11:59:05 [TASK_MANAGER ]I: Updated Task, serv-res-id-1759233328225-uiwj, info with TaskState - 0 (replicationtask.c:4543)",dms-serverless-serv-res-id-1759233328225-uiwj
2025-09-30 11:59:13.000,2025-09-30T11:59:13 [TASK_MANAGER ]I: Task management thread terminated (replicationtask.c:4623),dms-serverless-serv-res-id-1759233328225-uiwj
2025-09-30 11:59:33.000,2025-09-30T11:59:33 [AT_GLOBAL ]I: Closing log file at Tue Sep 30 11:59:33 2025 (at_logger.c:2975),dms-serverless-serv-res-id-1759233328225-uiwj
2025-09-30 11:59:59.389,"{'replication_state':'running', 'message': 'Replication is now running in FULL_LOAD mode.'}",dms-serverless-replication-orchestrator-P2NOQMBK3BDJVNSQ3SCECW22HI
おわりに
DMS のタスクモードをサーバーレスにして RDS for SQL Server のデータ移行を試してみました。
プロビジョンドモードと比べるとレプリケーションインスタンスを作成する手間が省けるので設定は簡単になりつつ、コンピューティングリソースを作成する兼ね合いでタスク作成から完了まで若干待ち時間が長いという特徴もありました。
実は一部エラーでうまく進まないタイミングがあったりもしたので、CloudWatch Logs も確認して後で詳細を確認しようと思います。
本記事への質問やご要望については画面下部のお問い合わせ 「DevelopersIO について」 からご連絡ください。記事に関してお問い合わせいただけます。
参考