AWS DMS タスクのモニタリング - AWS Database Migration Service

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

AWS DMS タスクのモニタリング

モニタリングは、 および AWS ソリューションの信頼性、可用性、パフォーマンスを維持する上で重要な部分 AWS DMS です。マルチポイント障害が発生した場合は、その障害をより簡単にデバッグできるように、 AWS ソリューションのすべての部分からモニタリングデータを収集する必要があります。 AWS には、 AWS DMS タスクとリソースをモニタリングし、潜在的なインシデントに対応するための複数のツールが用意されています。

AWS DMS イベントと通知

AWS DMS は Amazon Simple Notification Service (Amazon SNS) を使用して、レプリケーションインスタンスの作成や削除など、 AWS DMS イベントが発生したときに通知を提供します。 は、イベントをサブスクライブできるカテゴリに AWS DMS グループ化するため、そのカテゴリのイベントが発生したときに通知を受け取ることができます。たとえば、特定のレプリケーション インスタンスの作成カテゴリにサブスクライブした場合は、レプリケーション インスタンスに影響を与える作成関連のイベントが発生するたびに通知を受け取ります。これらの通知は、E メールメッセージ、テキストメッセージ、HTTPエンドポイントへの呼び出しなど、 AWS リージョンSNSで Amazon がサポートする任意の形式で使用できます。詳細については、「AWS Database Migration Service での Amazon SNS イベントと通知の使用」を参照してください

タスクのステータス

タスクのステータスを確認し、タスクの統制テーブルをモニタリングすることで、タスクの進行状況を監視できます。タスクステータスは、 AWS DMS タスクおよび関連するリソースの状態を示します。これによって、作成、開始、実行、停止など、タスクの現在の状態がわかります。また、テーブルの全読み込みが開始または進行中など、タスクが移行中のテーブルの現在の状態や、テーブルで挿入、削除、更新が発生した数などの詳細も含まれます。タスクおよびタスクリソースの条件モニタリングについては、「タスクのステータス」と「タスク実行中のテーブルの状態」をご参照ください。統制テーブルの詳細については、「制御テーブルタスク設定」をご参照ください。

Amazon CloudWatch アラームとログ

Amazon CloudWatch アラームを使用して、指定した期間にわたって 1 つ以上のタスクメトリクスを監視します。メトリクスが特定のしきい値を超えると、Amazon SNS topic. CloudWatch alarms に通知が送信され、特定の状態にあるためアクションは呼び出されません。むしろ、状態が変更され、指定された期間にわたって維持されている必要があります。 AWS DMS また、 は CloudWatch を使用して、移行プロセス中にタスク情報をログに記録します。または を使用して AWS CLI 、 AWS DMS APIタスクログに関する情報を表示できます。 CloudWatch で を使用する方法の詳細については AWS DMS、「」を参照してくださいAmazon を使用したレプリケーションタスクのモニタリング CloudWatch。 AWS DMS メトリクスのモニタリングの詳細については、「」を参照してくださいAWS Database Migration Service メトリクス。 AWS DMS タスクログの使用の詳細については、「」を参照してくださいAWS DMS タスクログの表示と管理

Time Travel ログ

レプリケーションタスクのログ記録とデバッグには、 AWS DMS Time Travel を使用できます。この方法の場合、Amazon S3 を使用してログを保存し、暗号化キーを使用して暗号化します。日時フィルターを使用して S3 ログを取得し、必要に応じてログを表示、ダウンロード、難読化できます。これにより、「時間を遡って」データベースのアクティビティを調査できます。

Time Travel は、 DMSがサポートする PostgreSQL ソースエンドポイントと、 DMSがサポートする PostgreSQL および MySQL ターゲットエンドポイントで使用できます。Time Travel は、全ロードタスクと CDCタスク、および タスクCDCに対してのみ有効にできます。Time Travel を有効にしたり、既存の Time Travel 設定を変更するには、タスクが停止していることを確認する必要があります。

Time Travel ログの詳細については「Time Travel タスクの設定」を参照してください。Time Travel ログの使用のベスト プラクティスについては、「Time Travel を使用したレプリケーションタスクのトラブルシューティング」を参照してください。

AWS CloudTrail ログ

AWS DMS は、 のユーザー AWS CloudTrail、IAMロール、または のサービスによって実行されたアクションを記録する AWS サービスである と統合されています AWS DMS。 CloudTrail は、 コンソールからのAPI呼び出しや オペレーションへのコード呼び出しを含む、 のすべての呼び出しを AWS DMS イベント AWS DMS としてキャプチャします AWS DMS API。証跡を作成する場合は、 CloudTrail イベントを含む Amazon S3 バケットへのイベントの継続的な配信を有効にすることができます AWS DMS。証跡を設定しない場合でも、 CloudTrail コンソールのイベント履歴で最新のイベントを表示できます。によって収集された情報を使用して CloudTrail、リクエストの実行元の IP アドレス AWS DMS、リクエストの実行者、リクエストの実行日時などの詳細を確認できます。詳細については、「を使用した呼び出しのログ記録 AWS DMS API AWS CloudTrail」を参照してください。

データベースログ

タスクエンドポイントのデータベースログを表示、ダウンロード AWS CLI、監視するには AWS Management Console、、または AWS データベースサービスの API を使用します。詳細については、AWS ドキュメントのデータベースサービス用ドキュメントをご参照ください。

詳細については、以下のトピックをご参照ください。

タスクのステータス

タスクのステータスはタスクの状態を提供します。以下の表では、タスクがなる得るステータスを示しています。

タスクのステータス 説明

[作成中]

AWS DMS はタスクを作成しています。

Running (実行中)

タスクが指定された移行処理を実行中です。

停止

タスクが停止されました。

停止中

タスクが停止中です。これは通常、タスクでのユーザーによる介入を示します。

削除

タスクが (通常はユーザーによる介入のためリクエストから) 削除中です。

失敗

タスクが失敗しました。詳細については、タスクのログファイルをご参照ください。

[エラー]

エラーが原因でジョブは停止した。タスクのエラーの簡潔な説明は、[概要] タブの最後のエラーメッセージセクションに記載されている。

エラーを伴って実行中

タスクがエラーステータスで実行されている。これは通常、タスク内の単一または複数のテーブルを移行できなかったことを示す。タスクは選択ルールに従ってその他のテーブルのロードを続ける。

スタート

タスクがレプリケーション インスタンスに、さらにソースおよびターゲットエンドポイントに接続中です。フィルタと変換を適用中です。

準備完了

タスクの実行準備ができました。このステータスになるのは通常、「creating」状態の後です。

変更

タスクが (通常はユーザーによるタスク設定の変更アクションのため) 変更中です。

[Moving] (移動)

タスクは別のレプリケーション インスタンスに移動中です。レプリケーションは移動が完了するまでは、この状態のままになります。タスクの削除は、移動中にレプリケーション タスクで許可されている唯一のオペレーションです。

[Failed-move] (失敗した移動)

ターゲット レプリケーション インスタンスに十分なストレージ領域がないなど、何らかの理由でタスクの移動が失敗しました。レプリケーション タスクがこの状態になると、スタート、変更、移動、または削除できます。

テスト

このタスクに指定されたデータベース移行は、 または StartReplicationTaskAssessmentRun StartReplicationTaskAssessmentオペレーションの実行に応答してテストされています。

タスクのステータスバーで、タスクの進捗状況を予測できます。この予測の正確さはソースデータベースのテーブル統計の正確さによって異なります。テーブル統計が正確であればあるほど、正確に予測できます。予測された列の統計がないテーブルが 1 つだけのタスクでは、どのような種類であっても完了率の予測を提供できません。この場合、タスクのステータスと、ロードされた列の表示を使って、タスクが実際に実行されて進行していることを確認できます。

DMS コンソールの「最終更新」列には、テーブルのテーブル統計レコードを最後に更新した AWS DMS 時刻のみが表示されることに注意してください。これはテーブルの最終更新時間を示すものではありません。

DMSコンソールの使用に加えて、次の例に示すように、 の aws dms describe-replication-tasks コマンドを使用してAWS CLI、タスクのステータスを含む現在のレプリケーションタスクの説明を出力できます。

{ "ReplicationTasks": [ { "ReplicationTaskIdentifier": "moveit2", "SourceEndpointArn": "arn:aws:dms:us-east-1:123456789012:endpoint:6GGI6YPWWGAYUVLKIB732KEVWA", "TargetEndpointArn": "arn:aws:dms:us-east-1:123456789012:endpoint:EOM4SFKCZEYHZBFGAGZT3QEC5U", "ReplicationInstanceArn": "arn:aws:dms:us-east-1:123456789012:rep:T3OM7OUB5NM2LCVZF7JPGJRNUE", "MigrationType": "full-load", "TableMappings": ...output omitted... , "ReplicationTaskSettings": ...output omitted... , "Status": "stopped", "StopReason": "Stop Reason FULL_LOAD_ONLY_FINISHED", "ReplicationTaskCreationDate": 1590524772.505, "ReplicationTaskStartDate": 1590619805.212, "ReplicationTaskArn": "arn:aws:dms:us-east-1:123456789012:task:K55IUCGBASJS5VHZJIINA45FII", "ReplicationTaskStats": { "FullLoadProgressPercent": 100, "ElapsedTimeMillis": 0, "TablesLoaded": 0, "TablesLoading": 0, "TablesQueued": 0, "TablesErrored": 0, "FreshStartDate": 1590619811.528, "StartDate": 1590619811.528, "StopDate": 1590619842.068 } } ] }

タスク実行中のテーブルの状態

AWS DMS コンソールは、移行中にテーブルの状態に関する情報を更新します。以下の表では、表示される可能性のある状態値を示しています。

AWS Database Migration Service レプリケーションインスタンス
状態 説明

テーブルが存在しません

AWS DMS がソースエンドポイントでテーブルを見つけられません。

ロード前

フルロードプロセスが有効になっていますが、まだ開始されていません。

Full load

全ロードプロセスが進行中です。

テーブル完了

全ロードが完了しました。

テーブル取消

テーブルのロードがキャンセルされました。

テーブルエラー

テーブルのロード時にエラーが発生しました。

Amazon を使用したレプリケーションタスクのモニタリング CloudWatch

Amazon CloudWatch アラームまたはイベントを使用して、移行をより詳細に追跡できます。Amazon の詳細については CloudWatch、「Amazon ユーザーガイド」の「Amazon CloudWatch、Amazon CloudWatch Events、Amazon CloudWatch Logs とは」を参照してください。 CloudWatch Amazon の使用には料金がかかることに注意してください CloudWatch。

レプリケーションタスクで CloudWatch ログが作成されない場合は、トラブルシューティングガイドAWS DMS が CloudWatch ログを作成しないの「」を参照してください。

AWS DMS コンソールには、次に示すように、タスクのステータス、完了率、経過時間、テーブル CloudWatch 統計など、各タスクの基本統計が表示されます。レプリケーションタスクを選択し、CloudWatch メトリクスタブを選択します。

CloudWatch タスクログの設定を表示および変更するには、タスクログの変更を選択します。詳細については、「ロギングタスク設定」を参照してください。

AWS DMS のモニタリング

AWS DMS コンソールで [Table statistics (テーブル統計)] タブを選択すると、挿入、削除、更新の数など、各テーブルのパフォーマンス統計が表示されます。

AWS DMS のモニタリング

さらに、レプリケーションインスタンスページからレプリケーションインスタンスを選択すると、メトリクスタブを選択してインスタンスのパフォーマンスCloudWatch メトリクスを表示できます。

AWS DMS のモニタリング

AWS Database Migration Service メトリクス

AWS DMS には、次の統計情報が表示されます。

  • ホストメトリクス – Amazon が提供するレプリケーションホストのパフォーマンスと使用率の統計 CloudWatch。使用可能なメトリクスの完全なリストについては、「レプリケーションインスタンスのメトリクス」をご参照ください。

  • [Replication Task Metrics] (レプリケーション タスク メトリクス) – 受信した変更とコミットされた変更、レプリケーション ホストとソースおよびターゲットデータベースの間のレイテンシーなど、レプリケーション タスクの統計。使用可能なメトリクスの完全なリストについては、「レプリケーションタスクのメトリクス」をご参照ください。

  • テーブルメトリクス – 挿入、更新、削除、完了したDDLステートメントの数など、移行中のテーブルの統計。

タスクメトリクスは、レプリケーションホストおよびソースエンドポイント間の統計と、レプリケーションホストおよびターゲットエンドポイント間の統計に分けられます。関連する 2 つの統計を一緒に追加することで、タスクの統計の合計を調べることもできます。たとえば、CDCLatencySource 値と CDCLatencyTarget 値を組み合わせることで、タスクの合計レイテンシー (レプリカラグ) を調べることができます。

タスクメトリック値は、ソースデータベースにおける現在のアクティビティの影響を受ける可能性があります。たとえば、トランザクションが開始されたがコミットされていない場合、そのトランザクションがコミットされるまでCDCLatencySourceメトリクスは増加し続けます。

レプリケーションインスタンスの場合、 FreeableMemoryメトリクスには明確化が必要です。解放可能なメモリは、実際の使用可能な空きメモリを示しているわけではありません。これは、解放して他の用途に使用できる現在使用中のメモリであり、レプリケーションインスタンスで使用されているバッファとキャッシュの組み合わせです。

FreeableMemory メトリクスには使用可能な実際の空きメモリは反映されませんが、 メトリクスFreeableMemorySwapUsageメトリクスの組み合わせは、レプリケーションインスタンスが過負荷になっているかどうかを示します。

次の状態について、これらの 2 つのメトリクスをモニタリングします。

  • FreeableMemory メトリクスがゼロに近づいています。

  • SwapUsage メトリクスは増減します。

これらの 2 つの状態のいずれかが表示された場合は、より大きなレプリケーションインスタンスへの移行を検討する必要があります。また、レプリケーションインスタンスで実行中のタスクの数とタイプを減らすことも検討してください。全ロードタスクは、変更をレプリケートするだけのタスクよりも多くのメモリを必要とします。

AWS DMS 移行タスクの実際のメモリ要件を概算で見積もるには、次のパラメータを使用できます。

LOB列

移行スコープの各テーブルの平均LOB列数。

並列にロードするテーブルの最大数

が 1 つのタスクで並列に AWS DMS ロードするテーブルの最大数。

デフォルト値は 8 です。

LOB チャンクサイズ

がターゲットデータベースにデータをレプリケート AWS DMS するために使用するLOBチャンクのサイズをキロバイト単位で指定します。

フルロード時のレートの確定

が並列転送 AWS DMS できるレコードの最大数。

デフォルト値は 10,000 です。

LOB サイズ

個々の の最大サイズLOB、キロバイト単位。

一括の配列のサイズ

エンドポイントドライバーがフェッチまたは処理する行の最大数。この値は、ドライバーの設定によって異なります。

デフォルト値は 1,000 です。

上記の値を決定したら、次のいずれかの方法を使用して、移行タスクに必要なメモリ量を見積もることができます。これらの方法は、移行タスクのLOB列設定で選択したオプションによって異なります。

  • フルLOBモードでは、次の式を使用します。

    Required memory = (LOB columns) * (Maximum number of tables to load in parallel) * (LOB chunk size) * (Commit rate during full load)

    ソーステーブルに平均 2 LOB列が含まれ、チャンクのサイズが LOB 64 KB である例を考えてみましょう。Maximum number of tables to load in parallelCommit rate during full load のデフォルト値を使用する場合、タスクに必要なメモリの量は、次のとおりです。

    Required memory = 2 * 8 * 64 * 10,000 = 10,240,000 KB

    注記

    全ロード中のコミットレートの値を減らすには、 AWS DMS コンソールを開き、データベース移行タスクを選択し、タスクを作成または変更します。[詳細設定] を展開して、[フルロード時のレートの確定] 値を入力します。

  • 限定LOBモードの場合は、次の式を使用します。

    Required memory = (LOB columns) * (Maximum number of tables to load in parallel) * (LOB size) * (Bulk array size)

    ソーステーブルに平均 2 LOB列が含まれ、個々の最大サイズLOBが 4,096 KB である例を考えてみましょう。Maximum number of tables to load in parallelBulk array size のデフォルト値を使用する場合、タスクに必要なメモリの量は、次のとおりです。

    Required memory = 2 * 8 * 4,096 * 1,000 = 65,536,000 KB

AWS DMS が変換を最適に実行するには、変換が発生したときに が使用可能CPUである必要があります。をオーバーロードCPUして十分なCPUリソースがないと、移行が遅くなる可能性があります。特に Oracle から Postgre への移行などの異種移行やレプリケーションを実行する場合、 CPUを大量に消費 AWS DMS する可能性がありますSQL。C4 レプリケーション インスタンスはこのような状況に適しています。詳細については、「移行に適した DMS AWS レプリケーションインスタンスの選択」を参照してください。

レプリケーションインスタンスのメトリクス

レプリケーションインスタンスのモニタリングには、次の統計の Amazon CloudWatch メトリクスが含まれます。

メトリクス

説明

AvailableMemory

スワップなしで新しいアプリケーションの開始に使用可能なメモリ容量の推定。詳細については、Linux man ページ/proc/memInfo セクションに記載されている MemAvailable の値をご参照ください。

単位: バイト

CPUAllocated

タスクにCPU割り当てられている最大の割合 (0 は制限がないことを意味します)。

AWS DMS は、 CloudWatch コンソールReplicationTaskIdentifierReplicationInstanceIdentiferと のディメンションの組み合わせに対してこのメトリクスを生成します。このメトリクスを表示するには、ReplicationInstanceIdentifier, ReplicationTaskIdentifier カテゴリを使用する。

単位: パーセント

CPUUtilization

インスタンスで現在使用されている割り当て済み vCPU (仮想 CPU) の割合。

単位: パーセント

DiskQueueDepth

ディスクへのアクセスを待機している未処理の read/write requests (I/Os) の数。

単位: カウント

FreeStorageSpace

使用可能なストレージ領域の容量。

単位: バイト

FreeMemory

アプリケーションおよびページキャッシュ、カーネル独自のデータ構造で使用できる物理メモリ量。詳細については、Linux man ページ/proc/memInfo セクションに記載されている MemFree の値をご参照ください。

単位: バイト

FreeableMemory

使用可能な RAM の容量。

単位: バイト

MemoryAllocated

タスクの最大割り当てメモリ (0 は無制限を意味する)。

AWS DMS は、 CloudWatch コンソールReplicationTaskIdentifierReplicationInstanceIdentiferと のディメンションの組み合わせに対してこのメトリクスを生成します。このメトリクスを表示するには、ReplicationInstanceIdentifier, ReplicationTaskIdentifier カテゴリを使用する。

単位: MiB

書き込みIOPS

1 秒あたりのディスク書き込み I/O オペレーションの平均回数。

単位: カウント/秒

読み取りIOPS

1 秒あたりのディスク読み取り I/O オペレーションの平均回数。

単位: カウント/秒

WriteThroughput

1 秒あたりのディスクへの平均書き込みバイト数。

単位: バイト/秒

ReadThroughput

1 秒あたりのディスクからの平均読み取りバイト数。

単位: バイト/秒

WriteLatency

1 回のディスク I/O (出力) 操作にかかる平均時間。

単位: ミリ秒

ReadLatency

1 回のディスク I/O (入力) 操作にかかる平均時間。

単位: ミリ秒

SwapUsage

レプリケーションインスタンスで使用されるスワップ領域の量。

単位: バイト

NetworkTransmitThroughput

モニタリングとレプリケーションに使用される顧客データベース トラフィックと AWS DMS トラフィックの両方を含むレプリケーション インスタンスの送信 (Transmit) ネットワーク トラフィック。

単位: バイト/秒

NetworkReceiveThroughput

モニタリングとレプリケーションに使用される顧客データベース トラフィックと AWS DMS トラフィックの両方を含むレプリケーション インスタンスの受信 (Receive) ネットワーク トラフィック。

単位: バイト/秒

レプリケーションタスクのメトリクス

レプリケーションタスクのモニタリングには、次の統計のメトリクスがあります。

メトリクス

説明

FullLoadThroughputBandwidthTarget

ターゲットに送信される全ロードによるネットワーク帯域幅 (1 秒あたりの KB 数)。

FullLoadThroughputRowsTarget

ターゲットに送信される全ロードによる変更 (1 秒あたりの行数)。

CDCIncomingChanges

ターゲットへの適用を待っている の変更イベント point-in-timeの合計数。これは、ソースエンドポイントのトランザクション変更レートの測定と同じではありません。通常、このメトリクスの大多数は、 AWS DMS をキャプチャされた変更にタイムリーに適用できず、ターゲットのレイテンシーが高くなっていることを示します。

CDCChangesMemorySource

メモリに累積され、ソースからのコミットを待機している行の数。このメトリクスは と一緒に表示できますCDCChangesDiskSource。

CDCChangesMemoryTarget

メモリに累積され、ターゲットへのコミットを待機している行の数。このメトリクスは と一緒に表示できますCDCChangesDiskTarget。

CDCChangesDiskSource

ディスクに累積され、ソースからのコミットを待機している行の数。このメトリクスは と一緒に表示できますCDCChangesMemorySource。

CDCChangesDiskTarget

ディスクに累積され、ターゲットへのコミットを待機している行の数。このメトリクスは と一緒に表示できますCDCChangesMemoryTarget。

CDCThroughputBandwidthTarget

ターゲットに送信される送信データは KB/秒です。 は、サンプリングポイントで送信された送信データCDCThroughputBandwidthを記録します。ネットワーク トラフィックが見つからない場合、値は 0 です。CDC は長時間実行されるトランザクションを発行しないため、ネットワークトラフィックが記録されない場合があります。

CDCThroughputRowsSource

ソースから受信したタスクの変更 (1 秒あたりの行数)。

CDCThroughputRowsTarget

ターゲットに送信されるタスクの変更 (1 秒あたりの行数)。

CDCLatencySource

ソースエンドポイントからキャプチャされた最後のイベントとインスタンスの現在のシステムタイムスタンプの間の秒単位の AWS DMS ギャップ。 は、ソースインスタンスとレプリケーションインスタンス間のレイテンシーCDCLatencySourceを表します。高 は、ソースから変更をキャプチャするプロセスが遅れるCDCLatencySourceことを意味します。継続的なレプリケーションのレイテンシーを特定するには、このメトリクスを とともに表示できますCDCLatencyTarget。CDCLatencySource と の両方CDCLatencyTargetが高い場合は、CDCLatencySourceまず調査します。

CDCSourceLatency ソースとレプリケーションインスタンスの間にレプリケーションラグがない場合、 は 0 になります。またCDCSourceLatency、レプリケーションタスクがソースのトランザクションログで次のイベントを読み込もうとしたときに、ソースから最後に読み取られたときと比較して新しいイベントがない場合にも は 0 になります。この場合、タスクは を 0 CDCSourceLatencyにリセットします。

CDCLatencyTarget

ターゲットのコミットを待機中の最初のイベント タイムスタンプと AWS DMS インスタンスの現在のタイムスタンプの間の間隔 (秒)。ターゲットのレイテンシーは、レプリケーションインスタンスのサーバー時間と、ターゲットコンポーネントに転送された最も古い未確定のイベント ID との差。つまり、ターゲットレイテンシーは、レプリケーションインスタンスと、エンドポイントによって適用されているが未確認の最も古いイベントとのタイムスタンプの差 TRG (99%) です。CDCLatencyTarget が高い場合は、ターゲットに変更イベントを適用するプロセスが遅れていることを示します。継続的なレプリケーションのレイテンシーを特定するには、このメトリクスを とともに表示できますCDCLatencySource。CDCLatencyTarget は高いが CDCLatencySourceは高くない場合は、次の点を調べます。

  • ターゲットにプライマリキーまたはインデックスがありません

  • ターゲット インスタンスまたはレプリケーション インスタンスでリソースのボトルネックが発生する

  • レプリケーショ ンインスタンスとターゲットの間にネットワークの問題がある

CPUUtilization

複数のコアにまたCPUがるタスクによって使用されている割合。タスクのセマンティクスCPUUtilizationは、レプリケーション とは少し異なりますCPUUtilizaiton。1 vCPU が完全に使用されている場合は 100% を示しますが、複数の vCPUs が使用されている場合、値は 100% を超える可能性があります。

単位: パーセント

SwapUsage

タスクで使用されるスワップの量。

単位: バイト

MemoryUsage

タスクによって消費されるコントロールグループ (cgroup) memory.usage_in_bytes。 DMSは cgroups を使用して、メモリや などのシステムリソースの使用を制御しますCPU。このメトリクスは、タスクに割り当てられた cgroup 内のタスクのメモリ使用量をメガバイト単位で示す。cgroup の制限は、DMSレプリケーションインスタンスクラスで使用できるリソースに基づいています。 memory.usage_in_bytes は、メモリの常駐セットサイズ (RSS)、キャッシュ、スワップコンポーネントで構成されます。オペレーティングシステムは、必要に応じてキャッシュメモリを再利用できる。レプリケーションインスタンスメトリクス もモニタリングすることをお勧めしますAvailableMemory

AWS DMS は、 CloudWatch コンソールReplicationTaskIdentifierReplicationInstanceIdentiferと のディメンションの組み合わせに対してこのメトリクスを生成します。このメトリクスを表示するには、ReplicationInstanceIdentifier, ReplicationTaskIdentifier カテゴリを使用する。

AWS DMS タスクログの表示と管理

Amazon を使用して CloudWatch 、 AWS DMS 移行プロセス中にタスク情報をログに記録できます。タスク設定を選択すると、ログ記録が有効になります。詳細については、「ロギングタスク設定」を参照してください。

実行されたタスクのログを表示するには、以下の手順に従います。

  1. AWS DMS コンソールを開き、ナビゲーションペインからデータベース移行タスクを選択します。[データベース移行タスク] ダイアログが表示されます。

  2. タスクの名前を選択します。[概要の詳細] ダイアログが表示されます。

  3. 移行タスクログセクションを見つけ、 CloudWatch ログの表示を選択します。

さらに、 AWS CLI または AWS DMS API を使用して、タスクログに関する情報を表示できます。これを行うには、 describe-replication-instance-task-logs AWS CLI コマンドまたは AWS DMS API アクション を使用しますDescribeReplicationInstanceTaskLogs

たとえば、次の AWS CLI コマンドはタスクログメタデータを JSON形式で表示します。

$ aws dms describe-replication-instance-task-logs \ --replication-instance-arn arn:aws:dms:us-east-1:237565436:rep:CDSFSFSFFFSSUFCAY

コマンドからのレスポンス例を次に示します。

{ "ReplicationInstanceTaskLogs": [ { "ReplicationTaskArn": "arn:aws:dms:us-east-1:237565436:task:MY34U6Z4MSY52GRTIX3O4AY", "ReplicationTaskName": "mysql-to-ddb", "ReplicationInstanceTaskLogSize": 3726134 } ], "ReplicationInstanceArn": "arn:aws:dms:us-east-1:237565436:rep:CDSFSFSFFFSSUFCAY" }

このレスポンスでは、1 つのタスクログ (mysql-to-ddb) がレプリケーションインスタンスに関連付けられています。このログのサイズは、3,726,124 バイトです。

describe-replication-instance-task-logs により返される情報を使用して、タスクログの問題を診断およびトラブルシューティングできます。たとえば、タスクの詳細なデバッグログを有効にした場合、タスクログはすぐに大きくなるため、レプリケーション インスタンスに使用可能なストレージを消耗し、インスタンスステータスが storage-full に変化する可能性があります。タスクログを記述することによって、必要ないタスクログを判断できます。これにより、それらのタスクログを削除してストレージ領域を解放できます。

タスクのタスクログを削除するには、タスク設定 DeleteTaskLogs を true に設定します。例えば、次の は、 コマンドまたは AWS DMS API ModifyReplicationTaskアクションを使用して AWS CLI modify-replication-taskタスクを変更するときにタスクログJSONを削除します。

{ "Logging": { "DeleteTaskLogs":true } }
注記

レプリケーションインスタンスごとに、 は 10 日を経過したログ AWS DMS を削除します。

を使用した呼び出しのログ記録 AWS DMS API AWS CloudTrail

AWS DMS は と統合されています。このサービスは AWS CloudTrail、ユーザー、ロール、または AWS のサービスによって実行されたアクションを記録するサービスです AWS DMS。 は、 AWS DMS コンソールからのAPI呼び出しや オペレーションへのコード呼び出しを含む、 のすべての呼び出しをイベント AWS DMS として CloudTrail キャプチャします AWS DMS API。証跡を作成する場合は、 CloudTrail イベントを含む Amazon S3 バケットへのイベントの継続的な配信を有効にすることができます AWS DMS。証跡を設定しない場合でも、 CloudTrail コンソールのイベント履歴で最新のイベントを表示できます。によって収集された情報を使用して CloudTrail、リクエストの実行元の IP アドレス AWS DMS、リクエストの実行者、リクエストの実行日時などの詳細を確認できます。

詳細については CloudTrail、「 AWS CloudTrail ユーザーガイド」を参照してください。

AWS DMS の情報 CloudTrail

CloudTrail AWS アカウントを作成すると、 はアカウントで有効になります。でアクティビティが発生すると AWS DMS、そのアクティビティは CloudTrail イベント履歴の他の AWS サービスイベントとともにイベントに記録されます。 AWS アカウントで最近のイベントを表示、検索、ダウンロードできます。詳細については、「イベント履歴を含む CloudTrail イベントの表示」を参照してください。

のイベントなど、 AWS アカウントのイベントの継続的な記録については AWS DMS、証跡を作成します。証跡により CloudTrail 、 はログファイルを Amazon S3 バケットに配信できます。デフォルトでは、コンソールで証跡を作成すると、証跡はすべての AWS リージョンに適用されます。証跡は、 AWS パーティション内のすべての AWS リージョンからのイベントをログに記録し、指定した Amazon S3 バケットにログファイルを配信します。さらに、 CloudTrail ログで収集されたイベントデータをより詳細に分析し、それに基づいて行動するように、他の AWS サービスを設定できます。詳細については、以下を参照してください。

すべての AWS DMS アクションは によってログに記録 CloudTrail され、「 AWS Database Migration Service APIリファレンス」に記載されています。たとえば、、CreateReplicationInstanceStartReplicationTaskアクションを呼び出すTestConnectionと、 CloudTrail ログファイルにエントリが生成されます。

各イベントまたはログエントリには、誰がリクエストを生成したかという情報が含まれます。ID 情報は次の判断に役立ちます。

  • リクエストが、ルートと IAM ユーザー認証情報のどちらを使用して送信されたか。

  • リクエストが、ロールとフェデレーションユーザーの一時的なセキュリティ認証情報のどちらを使用して送信されたか。

  • リクエストが別の AWS サービスによって行われたかどうか。

詳細については、 CloudTrail userIdentity要素を参照してください。

AWS DMS ログファイルエントリについて

証跡は、指定した Amazon S3 バケットにイベントをログファイルとして配信できるようにする設定です。 CloudTrail ログファイルには 1 つ以上のログエントリが含まれます。イベントは任意のソースからの単一のリクエストを表し、リクエストされたアクション、アクションの日時、リクエストパラメータなどに関する情報が含まれます。 CloudTrail ログファイルはパブリックAPI呼び出しの順序付けられたスタックトレースではないため、特定の順序では表示されません。

次の例は、 RebootReplicationInstanceアクションを示す CloudTrail ログエントリを示しています。

{ "eventVersion": "1.05", "userIdentity": { "type": "AssumedRole", "principalId": "AKIAIOSFODNN7EXAMPLE:johndoe", "arn": "arn:aws:sts::123456789012:assumed-role/admin/johndoe", "accountId": "123456789012", "accessKeyId": "ASIAIOSFODNN7EXAMPLE", "sessionContext": { "attributes": { "mfaAuthenticated": "false", "creationDate": "2018-08-01T16:42:09Z" }, "sessionIssuer": { "type": "Role", "principalId": "AKIAIOSFODNN7EXAMPLE", "arn": "arn:aws:iam::123456789012:role/admin", "accountId": "123456789012", "userName": "admin" } } }, "eventTime": "2018-08-02T00:11:44Z", "eventSource": "dms.amazonaws.com", "eventName": "RebootReplicationInstance", "awsRegion": "us-east-1", "sourceIPAddress": "72.21.198.64", "userAgent": "console.amazonaws.com", "requestParameters": { "forceFailover": false, "replicationInstanceArn": "arn:aws:dms:us-east-1:123456789012:rep:EX4MBJ2NMRDL3BMAYJOXUGYPUE" }, "responseElements": { "replicationInstance": { "replicationInstanceIdentifier": "replication-instance-1", "replicationInstanceStatus": "rebooting", "allocatedStorage": 50, "replicationInstancePrivateIpAddresses": [ "172.31.20.204" ], "instanceCreateTime": "Aug 1, 2018 11:56:21 PM", "autoMinorVersionUpgrade": true, "engineVersion": "2.4.3", "publiclyAccessible": true, "replicationInstanceClass": "dms.t2.medium", "availabilityZone": "us-east-1b", "kmsKeyId": "arn:aws:kms:us-east-1:123456789012:key/f7bc0f8e-1a3a-4ace-9faa-e8494fa3921a", "replicationSubnetGroup": { "vpcId": "vpc-1f6a9c6a", "subnetGroupStatus": "Complete", "replicationSubnetGroupArn": "arn:aws:dms:us-east-1:123456789012:subgrp:EDHRVRBAAAPONQAIYWP4NUW22M", "subnets": [ { "subnetIdentifier": "subnet-cbfff283", "subnetAvailabilityZone": { "name": "us-east-1b" }, "subnetStatus": "Active" }, { "subnetIdentifier": "subnet-d7c825e8", "subnetAvailabilityZone": { "name": "us-east-1e" }, "subnetStatus": "Active" }, { "subnetIdentifier": "subnet-6746046b", "subnetAvailabilityZone": { "name": "us-east-1f" }, "subnetStatus": "Active" }, { "subnetIdentifier": "subnet-bac383e0", "subnetAvailabilityZone": { "name": "us-east-1c" }, "subnetStatus": "Active" }, { "subnetIdentifier": "subnet-42599426", "subnetAvailabilityZone": { "name": "us-east-1d" }, "subnetStatus": "Active" }, { "subnetIdentifier": "subnet-da327bf6", "subnetAvailabilityZone": { "name": "us-east-1a" }, "subnetStatus": "Active" } ], "replicationSubnetGroupIdentifier": "default-vpc-1f6a9c6a", "replicationSubnetGroupDescription": "default group created by console for vpc id vpc-1f6a9c6a" }, "replicationInstanceEniId": "eni-0d6db8c7137cb9844", "vpcSecurityGroups": [ { "vpcSecurityGroupId": "sg-f839b688", "status": "active" } ], "pendingModifiedValues": {}, "replicationInstancePublicIpAddresses": [ "18.211.48.119" ], "replicationInstancePublicIpAddress": "18.211.48.119", "preferredMaintenanceWindow": "fri:22:44-fri:23:14", "replicationInstanceArn": "arn:aws:dms:us-east-1:123456789012:rep:EX4MBJ2NMRDL3BMAYJOXUGYPUE", "replicationInstanceEniIds": [ "eni-0d6db8c7137cb9844" ], "multiAZ": false, "replicationInstancePrivateIpAddress": "172.31.20.204", "patchingPrecedence": 0 } }, "requestID": "a3c83c11-95e8-11e8-9d08-4b8f2b45bfd5", "eventID": "b3c4adb1-e34b-4744-bdeb-35528062a541", "eventType": "AwsApiCall", "recipientAccountId": "123456789012" }

AWS DMS コンテキストログ記録

AWS DMS はコンテキストログ記録を使用して、進行中の移行に関する情報を提供します。コンテキストログ記録は、次のような情報をタスクの CloudWatch ログに書き込みます。

  • ソースデータベースとターゲットデータベースへのタスクの接続に関する情報

  • レプリケーションタスクの動作。このタスクログを使用して、レプリケーションの問題を診断できます。

  • SQL ソースデータベースとターゲットデータベースで AWS DMS 実行されるデータのない ステートメント。SQL ログを使用して、予期しない移行動作を診断できます。

  • 各CDCイベントのストリーム位置の詳細。

コンテキストログ記録は、 AWS DMS バージョン 3.5.0 以降でのみ使用できます。

AWS DMS は、デフォルトでコンテキストログ記録を有効にします。コンテキストのログ記録を制御するには、EnableLogContext タスク設定を true または false に設定するか、コンソールでタスクを変更します。

AWS DMS は、3 分ごとにコンテキストログ情報を CloudWatch ログのレプリケーションタスクに書き込みます。レプリケーションインスタンスにアプリケーションログのための十分なスペースがあることを確認します。タスクログの管理の詳細については、「AWS DMS タスクログの表示と管理」を参照してください。

オブジェクトタイプ

AWS DMS は CloudWatch 、次のオブジェクトタイプのコンテキストログインを生成します。

オブジェクトタイプ 説明
TABLE_NAME このログエントリには、現在のタスクマッピング ルールの範囲内にあるテーブルに関する情報が含まれている。このようなエントリを使用して、移行中の特定の期間のテーブルイベントを調べることができる。
SCHEMA_NAME このログエントリには、現在のタスクマッピング ルールで使用されるスキーマに関する情報が含まれている。これらのエントリを使用して、移行中に特定の期間に AWS DMS が使用しているスキーマを判断できます。
TRANSACTION_ID これらのエントリには、ソースデータベースからキャプチャされた各 DML/ DDL変更のトランザクション ID が含まれます。このようなエントリを使用して、特定のトランザクション中にどのような変更が発生したかを判断できる。
CONNECTION_ID このエントリには接続 ID が含まれる。これらのログエントリを使用して、移行ステップごとに AWS DMS が使用する接続を決定できます。
STATEMENT これらのエントリには、各移行変更の取得、処理、適用に使用されるSQLコードが含まれています。
STREAM_POSITION このエントリには、ソースデータベースの各移行アクションのトランザクションログファイル内の位置が含まれる。このエントリの形式は、ソースデータベースエンジンタイプによって異なる。この情報を使用して、 CDCのみのレプリケーションを設定するときに、復旧チェックポイントの開始位置を決定することもできます。

ログ記録の例

このセクションでは、レプリケーションのモニタリングとレプリケーションの問題の診断に使用できるログレコードの例を説明します。

接続ログの例

このセクションには、接続 を含むログサンプルが含まれていますIDs。

2023-02-22T10:09:29 [SOURCE_CAPTURE ]I: Capture record 1 to internal queue from Source {operation:START_REGULAR (43), connectionId:27598, streamPosition:0000124A/6800A778.NOW} (streamcomponent.c:2920) 2023-02-22T10:12:30 [SOURCE_CAPTURE ]I: Capture record 0 to internal queue from Source {operation:IDLE (51), connectionId:27598} (streamcomponent.c:2920) 2023-02-22T11:25:27 [SOURCE_CAPTURE ]I: Capture record 0 to internal queue from Source {operation:IDLE (51), columnName:region, connectionId:27598} (streamcomponent.c:2920)

タスク動作ログの例

このセクションでは、レプリケーションタスクログの動作に関するログのサンプルを記載しています。このような情報を使用して、IDLE ステータスのタスクなど、レプリケーションの問題を診断できます。

次のSOURCE_CAPTUREログは、ソースデータベースログファイルから読み取ることができるイベントがないことを示し、ターゲットデータベースに適用する AWS DMS CDCコンポーネントから受信したイベントがないことを示すTARGET_APPLYレコードが含まれています。上記のイベントには、以前に適用したイベント関連のコンテキストの詳細も含まれています。

2023-02-22T11:23:24 [SOURCE_CAPTURE ]I: No Event fetched from wal log (postgres_endpoint_wal_engine.c:1369) 2023-02-22T11:24:29 [TARGET_APPLY ]I: No records received to load or apply on target , waiting for data from upstream. The last context is {operation:INSERT (1), tableName:sales_11, schemaName:public, txnId:18662441, connectionId:17855, statement:INSERT INTO "public"."sales_11"("sales_no","dept_name","sale_amount","sale_date","region") values (?,?,?,?,?),

SQL ステートメントログの例

このセクションには、ソースデータベースとターゲットデータベースで実行されるSQLステートメントに関するログサンプルが含まれています。ログに表示されるSQLステートメントには、 SQLステートメントのみが表示され、データは表示されません。次の TARGET_APPLY ログは、ターゲット上で実行された INSERT ステートメントを示しています。

2023-02-22T11:26:07 [TARGET_APPLY ]I: Applied record 2193305 to target {operation:INSERT (1), tableName:sales_111, schemaName:public, txnId:18761543, connectionId:17855, statement:INSERT INTO "public"."sales_111"("sales_no","dept_name","sale_amount","sale_date","region") values (?,?,?,?,?),

制限

AWS DMS コンテキストログ記録には、次の制限が適用されます。

  • はすべてのエンドポイントタイプに対して最小限のログ記録 AWS DMS を作成しますが、広範なエンジン固有のコンテキストログ記録は、次のエンドポイントタイプでのみ使用できます。このようなエンドポイントタイプを使用する場合は、コンテキストのログ記録を有効にすることをお勧めします。

    • マイSQL

    • PostgreSQL

    • Oracle

    • Microsoft SQL サーバー

    • MongoDB と Amazon DocumentDB

    • Amazon S3