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

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

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

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

AWS DMS イベントと通知

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

タスクのステータス

タスクのステータスを確認したり、タスクのコントロールテーブルをモニタリングしたりして、タスクの進行状況をモニタリングできます。タスクのステータスは、AWS DMS タスクとタスクに関連するリソースのステータスを提供します。これには、タスクが作成中、開始中、実行中、停止中であることの表示があります。またテーブルのフルロードが開始されたか進行中かなど、タスクが移行中のテーブルの現在のステータス、テーブルに対して発生した挿入、削除、更新の数などの詳細も提供されます。タスクとタスクのリソースのステータスのモニタリングの詳細については、「タスクのステータス」と「タスク実行中のテーブルの状態」を参照してください。コントロールテーブルの詳細については、「制御テーブルタスク設定」を参照してください。

Amazon CloudWatch アラームとログ

Amazon CloudWatch アラームを使用すると、指定した期間にわたって 単一または複数のタスクメトリクスをモニタリングできます。メトリクスが指定されたしきい値を超えると、Amazon SNS トピックに通知が送信されます。CloudWatch アラームは特定の状態にあるという理由ではアクションを呼び出しません。むしろ、状態は変化し、指定された期間にわたりその状態が維持される必要があります。AWS DMS は、移行プロセス中に CloudWatch を使用してタスク情報もログに記録します。タスクログに関する情報は、AWS CLI または AWS DMS API を使用して確認できます。AWS DMS で CloudWatch を使用する方法の詳細については、「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 は、ユーザー、IAM ロール、または AWS DMS の AWS サービスが実行したアクションの記録を提供するサービスである AWS CloudTrail と統合されています。CloudTrail は、AWS DMS コンソールからのコールや AWS DMS API オペレーションへのコード呼び出しなどの AWS DMS のすべての API コールをイベントとして取得します。証跡を作成すると、AWS DMS のイベントを含む CloudTrail イベントの Amazon S3 ケットへの継続的配信を有効にできます。証跡を設定しない場合でも、CloudTrail コンソールの [イベント履歴] で最新のイベントを確認できます。CloudTrail が収集した情報を使用して、AWS DMS に対して行われたリクエスト、リクエスト元の IP アドレス、リクエスト者、リクエスト日時などの詳細を確認できます。詳細については、「AWS CloudTrail を使用した AWS DMS API コールのログ記録」を参照してください。

データベースのログ

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

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

タスクのステータス

タスクのステータスはタスクの状態を提供します。タスクでありえるステータスは次の表のとおりです。

タスクのステータス 説明

作成中

AWS DMS がタスクを作成している。

実行中

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

停止

タスクは停止された。

停止中

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

削除中

タスクは削除中であり、通常、ユーザーによる介入のリクエストによるもの。

失敗

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

エラー

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

エラーを伴って実行中

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

起動中

タスクはレプリケーションインスタンスとソースエンドポイント、ターゲットエンドポイントに接続している。フィルターと変換が適用されている。

準備完了

タスクを実行する準備ができている。通常、このステータスは「作成中」ステータスの後に続くステータス。

変更中

タスクが変更されている。タスク設定は通常、ユーザーアクションにより変更される。

移動中

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

Failed-move

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

テスト中

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

タスクのステータスバーには、タスクの推定進行状況が表示されます。この推定の正確性は、ソースデータベースのテーブル統計の品質によって異なります。テーブルの統計が優れているほど、推定も正確になります。予測される列の統計がないテーブルが 1 つのみのタスクでは、いかなる完了率の推定も提供されることはありません。この場合、タスクの状態とロードされた行の表示を使用して、タスクが実際に実行されて進行中であることを確認できます。

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

DMS コンソールを使用する以外にも、次の例のとおり、AWS CLIaws dms describe-replication-tasks コマンドを使用して、タスクのステータスを含む現在のレプリケーションタスクの説明の出力を取得できます。

{ "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 はソースエンドポイントでテーブルを見つけることができない。

Before load

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

フルロード

フルロードプロセスが進行中。

Table completed

フルロードは完了した。

Table cancelled

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

テーブルエラー

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

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

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

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

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

CloudWatchタスクログ設定を確認して変更するには、[タスクログ記録の変更] を選択します。詳細については、「ロギングタスク設定」を参照してください。


            AWS DMS のモニタリング

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


            AWS DMS のモニタリング

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


            AWS DMS のモニタリング

AWS Database Migration Service のメトリクス

AWS DMS は、次の統計を提供します。

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

  • レプリケーションタスクメトリクス – 受信した変更とコミットした変更、ソースデータベースとターゲットデータベースの両方のレプリケーションホストとの間の待機時間などのレプリケーションタスクの統計。使用できるメトリクスの完全なリストについては、「レプリケーションのタスクメトリクス」を参照してください。

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

タスクメトリクスは、レプリケーションホストとソースエンドポイント間の統計と、レプリケーションホストとターゲットエンドポイント間の統計に分割されています。関連する 2 つの統計を組み合わせると、タスクの合計統計を導き出せます。例えば、CDCLatencySource 値と CDCLatencyTarget 値を組み合わせると、タスクの合計レイテンシー、つまりレプリカの遅延を調べることができます。

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

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

[FreeableMemory] メトリクスは、実際に利用できる空きメモリを反映していないとはいえ、[FreeableMemory] メトリクスと [SwapUsage] メトリクスを組み合わせると、レプリケーションインスタンスが過負荷になっているかが明らかになります。

この 2 つのメトリクスは、次の条件を基にモニタリングします。

  • FreeableMemory メトリクスが 0 に近づいているか。

  • SwapUsage メトリクスが増加したり変動しているか。

上記の 2 つの状態のいずれかが認められた場合は、よりサイズが大きいレプリケーションインスタンスへの移行を検討する必要がある可能性があります。レプリケーションインスタンスで実行されるタスクの数とタイプを減らすことも検討する必要があります。フルロードタスクでは、変更をレプリケートするのみのタスクよりも多くのメモリを必要とします。

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

LOB 列

移行範囲の各テーブルの LOB 列の平均数

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

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 リソースがないと、移行が遅くなる可能性があります。AWS DMS では、特に Oracle から PostgreSQL へなどの異種の移行やレプリケーションを実行する場合、CPU の負荷が増大する場合があります。このような状況の場合、C4 レプリケーションインスタンスクラスの使用が適切な選択となります。詳細については、「移行に適した AWS DMS レプリケーションインスタンスの選択」を参照してください。

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

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

メトリクス

説明

AvailableMemory

スワップなしで新しいアプリケーションを起動するために使用できるメモリ量の推定値。詳細については、「Linux man-pages」の「/proc/memInfo」セクションの「MemAvailable」値を参照。

単位: バイト

CPUAllocated

タスクに最大に割り当てられた CPU の割合 (%、0 は無制限を意味する)。

AWS DMS は、CloudWatch コンソールの ReplicationInstanceIdentiferReplicationTaskIdentifier を使用する。このメトリクスを表示するには、ReplicationInstanceIdentifier, ReplicationTaskIdentifier カテゴリを使用する。

単位: 割合 (%)

CPUUtilization

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

単位: 割合 (%)

DiskQueueDepth

ディスクへのアクセスを待機している未処理の読み取りまたは書き込み (I/O) のリクエストの数

単位: カウント

FreeStorageSpace

利用できるストレージ領域の容量

単位: バイト

FreeMemory

アプリケーション、ページ キャッシュ、カーネル独自のデータ構造で使用できる物理メモリの量。詳細については、「Linux man-pages」の「/proc/memInfo」セクションの「MemFree」値を参照。

単位: バイト

FreeableMemory

利用できるランダムアクセスメモリの量

単位: バイト

MemoryAllocated

タスクに対するメモリの最大割り当て (0 は制限がないことを意味する)。

AWS DMS は、CloudWatch コンソールの ReplicationInstanceIdentiferReplicationTaskIdentifier を使用する。このメトリクスを表示するには、ReplicationInstanceIdentifier, ReplicationTaskIdentifier カテゴリを使用する。

単位: MiB

WriteIOPS

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

単位: カウント/秒

ReadIOPS

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

単位: カウント/秒

WriteThroughput

1 秒あたりにディスクに書き込まれる平均バイト数

単位: バイト/秒

ReadThroughput

1 秒あたりにディスクから読み込まれる平均バイト数

単位: バイト/秒

WriteLatency

ディスク I/O (出力) オペレーションごとにかかる平均時間

単位: ミリ秒

ReadLatency

ディスク I/O (入力) オペレーションごとにかかる平均時間

単位: ミリ秒

SwapUsage

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

単位: バイト

NetworkTransmitThroughput

レプリケーションインスタンス上の送信ネットワークトラフィック。これには、モニタリングとレプリケーションに使用されるお客様のデータベーストラフィックと AWS DMS トラフィックの両方が含まれる。

単位: バイト/秒

NetworkReceiveThroughput

レプリケーションインスタンス上の受信ネットワークトラフィック。これには、モニタリングとレプリケーションに使用されるお客様のデータベーストラフィックと AWS DMS トラフィックの両方が含まれる。

単位: バイト/秒

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

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

メトリクス

説明

FullLoadThroughputBandwidthTarget

ターゲットのフルロードで送信される送信データ量 (KB/秒)

FullLoadThroughputRowsTarget

ターゲットのフルロードでの発信変更数 (1 秒あたりの行数)

CDCIncomingChanges

ターゲットへの適用を待機している、特定の時点での変更イベントの合計数。これは、ソースエンドポイントのトランザクション変化率の測定値と同じではないことに注意する。このメトリクスの数値が高い場合は、通常、キャプチャした変更を AWS DMS がタイムリーに適用できず、ターゲットのレイテンシーが高くなっていることを示す。

CDCChangesMemorySource

メモリ内に蓄積され、ソースからのコミットを待機している行の量。このメトリクスは CDCChangesDiskSource と同時に確認する。

CDCChangesMemoryTarget

メモリ内に蓄積され、ターゲットへのコミットを待機している行の量。このメトリクスは CDCChangesDiskTarget と同時に確認する。

CDCChangesDiskSource

ディスクに蓄積され、ソースからのコミットを待機している行の量。このメトリクスは CDCChangesMemorySource と同時に確認する。

CDCChangesDiskTarget

ディスクに蓄積され、ターゲットへのコミットを待機している行の量。このメトリクスは CDCChangesMemoryTarget と同時に確認する。

CDCThroughputBandwidthTarget

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

CDCThroughputRowsSource

ソースから受信したタスクの変更数 (行数/秒)

CDCThroughputRowsTarget

ターゲットに送信されたタスクの変更数 (行数/秒)

CDCLatencySource

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

ソースとレプリケーションインスタンスの間にレプリケーションの遅延がない場合、CDCSourceLatency は 0 になることがある。レプリケーションタスクがソースのトランザクションログの次のイベントを読み取ろうとし、最後にソースから読み取った時と比較して新しいイベントがない場合にも、CDCSourceLatency がゼロになる可能性がある。このような状況の場合、タスクは CDCSourceLatency を 0 にリセットする。

CDCLatencyTarget

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

  • ターゲットにプライマリキーまたはインデックスがない

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

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

CPUUtilization

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

単位: 割合 (%)

SwapUsage

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

単位: バイト

MemoryUsage

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

AWS DMS は、CloudWatch コンソールの ReplicationInstanceIdentiferReplicationTaskIdentifier を使用する。このメトリクスを表示するには、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" }

この応答には、レプリケーションインスタンスに関連付けられた単一のタスクログ (mysql-to-ddb があります。このログのサイズは、3,726,124 バイトです。

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

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

{ "Logging": { "DeleteTaskLogs":true } }

AWS CloudTrail を使用した AWS DMS API コールのログ記録

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

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

CloudTrail での AWS DMS の情報

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

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

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

すべてのイベントまたはログエントリには、リクエストの生成者に関する情報が含まれています。アイデンティティの情報は次の判断に役立ちます。

  • リクエストがルートまたは IAM ユーザーの認証情報を使用して行われたか。

  • リクエストがロールまたはフェデレーションユーザーの一時的なセキュリティ認証情報を使用して行われたか。

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

詳細については、「CloudTrail userIdentity エレメント」 を参照してください。

AWS DMS ログファイルエントリの理解

証跡は、指定した Amazon S3 バケットにイベントをログファイルとして配信できるようにする設定です。CloudTrail ログファイルには単一または複数のログエントリが含まれています。イベントは、任意のソースからの単一のリクエストを示し、リクエストしたアクション、アクションの日時、リクエストのパラメータなどに関する情報が含まれます。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": "ASIAYFI33SINADOJJEZW", "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 ログに書き込む情報は次のとおりです。

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

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

  • AWS DMS がソースデータベースとターゲットデータベースで実行する SQL ステートメント。これはデータを伴っていません。この 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 のみのレプリケーションを設定する際に復旧チェックポイントの開始位置を決定することもできる。

ログ記録の例

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

接続ログの例

このセクションでは、接続 ID を含むログのサンプルを記載しています。

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 はすべてのエンドポイントタイプについて最小限のログを作成します。ただし、広範なエンジン固有のコンテキストログは次のエンドポイントタイプでのみ利用できます。このようなエンドポイントタイプを使用する場合は、コンテキストのログ記録を有効にすることをお勧めします。

    • MySQL

    • PostgreSQL

    • Oracle

    • Microsoft SQL Server

    • MongoDB と Amazon DocumentDB

    • Amazon S3