监控 Amazon DMS任务 - Amazon 数据库迁移服务
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

监控 Amazon DMS任务

监控是维护 Amazon 解决方案的可靠性、可用性和性能的重要组成部分。 Amazon DMS 您应该从 Amazon 解决方案的所有部分收集监控数据,以便在出现多点故障时可以更轻松地进行调试。 Amazon 提供了多种用于监控 Amazon DMS 任务和资源以及应对潜在事件的工具:

Amazon DMS 事件和通知

Amazon DMS 使用亚马逊简单通知服务 (AmazonSNS) 在 Amazon DMS 事件发生时提供通知,例如创建或删除复制实例。 Amazon DMS 将事件分组为你可以订阅的类别,这样当该类别的事件发生时,你就可以收到通知。例如,如果您订阅了指定复制实例的“创建”类别,则只要发生了与创建相关的事件影响到您的复制实例,您就会收到通知。您可以使用 Amazon SNS 为某个 Amazon 地区支持的任何形式处理这些通知,例如电子邮件、短信或对HTTP终端节点的调用。有关更多信息,请参阅 在 Amazon Database Migration Service 中使用 Amazon SNS 事件和通知

任务状态

您可以查看任务状态和监控任务的控制表,以便监控任务的进度。任务状态表示 Amazon DMS 任务及其关联资源的状况。它包含此类指示,如同正在创建、启动、运行或停止任务一样。此外,它还包含任务正在迁移的表的当前状态,例如,表已开始或正在进行完全加载时,并包含表已执行的插入、删除和更新次数等详细信息。有关监控任务和任务资源条件的更多信息,请参阅 任务状态任务期间的表状态。有关控制表的更多信息,请参阅控制表任务设置

Amazon CloudWatch 警报和日志

使用 Amazon CloudWatch 警报,您可以监视您指定的时间段内的一个或多个任务指标。如果指标超过给定阈值,则会向 Amazon SNS 主题发送通知。 CloudWatch 警报不会调用操作,因为它们处于特定状态。相反,状态必须已发生变化并维持了指定的时间段。 Amazon DMS 还 CloudWatch用于在迁移过程中记录任务信息。您可以使用 Amazon CLI 或 Amazon DMS API来查看有关任务日志的信息。有关 CloudWatch 与一起使用的更多信息 Amazon DMS,请参阅使用 Amazon 监控复制任务 CloudWatch。有关监控 Amazon DMS 指标的更多信息,请参阅Amazon Database Migration Service 指标。有关使用 Amazon DMS 任务日志的更多信息,请参阅查看和管理 Amazon DMS 任务日志

Time Travel 日志

要记录和调试复制任务,可以使用 T Amazon DMS ime Travel。在此方法中,您可以使用 Amazon S3 来存储日志,并使用加密密钥对其进行加密。您可以使用日期时间筛选器检索 S3 日志,然后根据需要查看、下载日志以及对日志进行模糊处理。由此,您可以安全地“回到过去”来调查数据库活动。

你可以将 Time Travel 与DMS支持的 Postgre SQL 源端点以及支持的 Postgre 和DMS我的目标端点一起使用SQL。SQL你只能为满载CDC任务和任务开启时空旅行,也CDC只能为任务开启时空旅行。要打开 Time Travel 或修改任何现有的 Time Travel 设置,请确保您的任务已停止。

有关 Time Travel 日志的更多信息,请参阅Time Travel 任务设置。有关使用 Time Travel 日志的最佳实践,请参阅使用 Time Travel 对复制任务进行故障排除

Amazon CloudTrail 日志

Amazon DMS 与 Amazon CloudTrail一项服务集成,该服务提供用户、IAM角色或 Amazon 服务在中执行的操作的记录 Amazon DMS。 CloudTrail将所有API调用捕获 Amazon DMS 为事件,包括来自 Amazon DMS 控制台的调用和对 Amazon DMS API操作的代码调用。如果您创建了跟踪,则可以允许将 CloudTrail 事件持续传输到 Amazon S3 存储桶,包括的事件 Amazon DMS。如果您未配置跟踪,您仍然可以在 CloudTrail 控制台的事件历史记录中查看最新的事件。使用收集的信息 CloudTrail,您可以确定向哪个请求发出 Amazon DMS、发出请求的 IP 地址、谁发出了请求、何时发出请求以及其他详细信息。有关更多信息,请参阅 使用记录 Amazon DMS API通话 Amazon CloudTrail

数据库日志

您可以使用数据库服务的、或来查看、下载和监视任务终端节点API的 Amazon 数据库日志。 Amazon Web Services Management Console Amazon CLI有关更多信息,请参阅 Amazon 文档中的数据库服务文档。

有关更多信息,请参阅以下主题。

任务状态

任务状态指示任务的情况。下表显示了任务可能具有的状态:

任务状态 描述

Creating

Amazon DMS 正在创建任务。

正在运行

任务正在执行指定的迁移工作。

Stopped

任务已停止。

Stopping

正在停止任务。这通常表明任务中有用户干预。

Deleting

正在删除任务,通常源于用户的干预请求。

已失败

任务已失败。有关更多信息,请参阅任务日志文件。

错误

任务因错误而停止。在概述选项卡的最后一条失败消息部分中,提供了任务错误的简要描述。

运行时出错

任务正在运行,状态为出错。这通常表示任务中的一个或多个表无法迁移。该任务继续根据选择规则加载其他表。

Starting

任务正在连接到复制实例以及源和目标终端节点。应用所有筛选器和转换。

就绪

任务已准备好运行。此状态通常在“creating”状态之后。

Modifying

正在修改任务,通常是由于修改了任务设置的用户操作造成。

正在移动

任务正在移动到另一个复制实例。复制将保持此状态,直到移动完成。复制任务正在移动时,唯一允许执行的操作是删除任务。

失败的移动

任务移动由于任何原因而失败,例如目标复制实例上没有足够的存储空间。当复制任务处于这种状态时,可以启动、修改、移动或删除该任务。

测试

正在测试为此任务指定的数据库迁移 StartReplicationTaskAssessmentRun,以响应运行或StartReplicationTaskAssessment操作。

任务状态栏提供了任务进度的估计值。此估计值的质量取决于源数据库的表统计数据的质量;表统计数据的质量越好,估计值就越准确。对于只有一个表而且该表没有估算行统计数据的任务,我们无法提供任何类型的完成百分比估算值。在此情况下,可使用任务状态和加载行的指示来确认任务是否确实在运行且取得进展。

请注意,DMS控制台的 “上次更新” 列仅显示 Amazon DMS 上次更新表统计记录的时间。它不指示上次更新表的时间。

除了使用DMS控制台外,您还可以使用中的aws dms describe-replication-tasks命令输出当前复制任务的描述,包括任务状态 Amazon 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 } } ] }

任务期间的表状态

在迁移期间, Amazon DMS控制台会更新有关表状态的信息。下表显示了可能的状态值:

Amazon 数据库 Migration Service 复制实例
状态 描述

表不存在

Amazon DMS在源端点上找不到表。

加载前

完全加载过程已启用,但尚未启动。

完全加载

完全加载过程正在进行。

表已完成

完全加载已完成。

表已取消

已取消加载表。

表错误

加载表时出错。

使用 Amazon 监控复制任务 CloudWatch

您可以使用 Amazon CloudWatch 警报或事件来更密切地跟踪您的迁移。有关亚马逊的更多信息 CloudWatch,请参阅什么是亚马逊 CloudWatch、亚马逊 CloudWatch 事件和亚马逊 CloudWatch 日志? 在《亚马逊 CloudWatch 用户指南》中。请注意,使用Amazon需要付费 CloudWatch。

如果您的复制任务未创建 CloudWatch 日志,请参阅疑难解答指南Amazon DMS 不创建 CloudWatch 日志中的。

Amazon DMS 控制台显示每项任务的基本 CloudWatch 统计信息,包括任务状态、完成百分比、已用时间和表格统计信息,如下所示。选择复制任务,然后选择CloudWatch 指标选项卡。

要查看和修改 CloudWatch 任务日志设置,请选择修改任务日志。有关更多信息,请参阅 日志记录任务设置

Amazon DMS监控

当您选择表统计信息选项卡时, Amazon DMS控制台会显示每个表的性能统计信息,包括插入、删除和更新的次数。

Amazon DMS监控

此外,如果您从 “复制实例” 页面中选择复制实例,则可以通过选择 “指标” 选项卡来查看该实例的性能CloudWatch 指标

Amazon DMS监控

Amazon Database Migration Service 指标

Amazon DMS 提供以下指标的统计数据:

  • 主机指标-由 Amazon 提供的复制主机的性能和利用率统计数据 CloudWatch。有关可用指标的完整列表,请参阅复制实例指标

  • 复制任务指标 – 复制任务的统计数据,包括传入和已提交更改,以及复制主机与源数据库和目标数据库之间的延迟。有关可用指标的完整列表,请参阅复制任务指标

  • 表指标-正在迁移的表的统计信息,包括插入、更新、删除和已完成DDL语句的数量。

任务指标划分为复制主机与源终端节点之间的统计数据,以及复制主机与目标终端节点之间的统计数据。您可以将两个相关的统计数据加在一起,确定某个任务的统计数据总计。例如,您可以通过组合CDCLatencySourceCDCLatencyTarget值来确定任务的总延迟或副本延迟。

任务指标值受您源数据库上当前活动的影响。例如,如果交易已开始但尚未提交,则该CDCLatencySource指标将继续增长,直到该交易已提交。

对于复制实例,该FreeableMemory指标需要澄清。FreeableMemory 并不指示实际的可用内存。它是当前使用的可释放内存 (以用于其他用途);它是复制实例上使用的缓冲区和缓存的组合。

虽然该FreeableMemory指标并不能反映实际的可用内存,但FreeableMemorySwapUsage指标的组合可以指示复制实例是否过载。

请监控这两个指标是否出现以下情况:

  • FreeableMemory指标接近零。

  • SwapUsage指标会增加或波动。

如果出现上述任一情况,则表示应考虑移动到更大的复制实例。还应考虑减少在复制实例上运行的任务数量和类型。完全加载任务所需的内存比仅复制更改的任务需要的内存多。

要粗略估计 Amazon DMS 迁移任务的实际内存需求,可以使用以下参数。

LOB列

迁移范围内每个表中的平均LOB列数。

可并行加载的表数量上限

在一个任务中并行 Amazon DMS 加载的最大表数。

默认值是 8。

LOB区块大小

Amazon DMS 用于将数据复制到目标数据库的LOB区块的大小,以千字节为单位。

完全加载时的提交率

Amazon DMS 可以并行传输的最大记录数。

默认值是 10000。

LOB大小

个人的最大大小LOB,以千字节为单位。

批量数组大小

端点驱动程序提取或处理的最大行数。此值取决于驱动程序设置。

默认值是 1000。

确定这些值后,您可以使用以下方法之一来估算迁移任务所需的内存量。这些方法取决于您在迁移任务中为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

    注意

    要降低满负荷期间提交率的值,请打开 Amazon 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

为了 Amazon DMS 以最佳方式执行转换,CPU必须在转换发生时可用。过载CPU而CPU资源不足会导致迁移速度缓慢。 Amazon DMS 可能会占用CPU大量资源,尤其是在执行异构迁移和复制(例如从 Oracle 迁移到 Postgre)时。SQL对于这些情况,C4 复制实例类是理想选择。有关更多信息,请参阅 选择正确的 Amazon DMS用于迁移的复制实例

复制实例指标

复制实例监控包括以下统计数据的 Amazon CloudWatch 指标。

指标

描述

AvailableMemory

估计可用于启动新应用程序的内存量(没有交换)。有关更多信息,请参阅 Linux man-pages/proc/memInfo 一节中的 MemAvailable 值。

单位:字节

CPUAllocated

为任务分配CPU的最大百分比(0 表示没有限制)。

Amazon DMS 将此指标与 CloudWatch 控制台ReplicationTaskIdentifier中的ReplicationInstanceIdentifer和的组合维度相提并论。使用 ReplicationInstanceIdentifier, ReplicationTaskIdentifier 类别查看此指标。

单位:百分比

CPUUtilization

实例上当前正在使用的已分配 vCPU(虚拟CPU)的百分比。

单位:百分比

DiskQueueDepth

等待访问磁盘的未完成 I/O(读取/写入请求)的数量。

单位:计数

FreeStorageSpace

可用存储空间的大小。

单位:字节

FreeMemory

可供应用程序、页面缓存和内核自身数据结构使用的物理内存量。有关更多信息,请参阅 Linux man-pages/proc/memInfo 一节中的 MemFree 值。

单位:字节

FreeableMemory

随机存取内存的可用大小。

单位:字节

MemoryAllocated

为任务分配的最大内存量(0 表示没有限制)。

Amazon DMS 将此指标与 CloudWatch 控制台ReplicationTaskIdentifier中的ReplicationInstanceIdentifer和的组合维度相提并论。使用 ReplicationInstanceIdentifier, ReplicationTaskIdentifier 类别查看此指标。

单位:MiB

写 IOPS

每秒平均磁盘写入 I/O 操作数。

单位:计数/秒

阅读 IOPS

每秒平均磁盘读取 I/O 操作数。

单位:计数/秒

WriteThroughput

每秒写入磁盘的平均字节数。

单位:字节/秒

ReadThroughput

每秒从磁盘读取的平均字节数。

单位:字节/秒

WriteLatency

每个磁盘 I/O(输出)操作所需的平均时间。

单位:毫秒

ReadLatency

每个磁盘 I/O(输入)操作所需的平均时间。

单位:毫秒

SwapUsage

复制实例上使用的交换空间的大小。

单位:字节

NetworkTransmitThroughput

复制实例的传出(传输)网络流量,包括客户数据库流量以及用于监控和复制的 Amazon DMS 流量。

单位:字节/秒

NetworkReceiveThroughput

复制实例的传入(接收)网络流量,包括客户数据库流量以及用于监控和复制的 Amazon DMS 流量。

单位:字节/秒

复制任务指标

复制任务监控包括针对以下统计数据的指标。

指标

描述

FullLoadThroughputBandwidthTarget

目标在满负载情况下的传出数据传输速率,以每秒 KB 数为单位。

FullLoadThroughputRowsTarget

目标上的完全加载的传出更改,以行/秒为单位。

CDCIncomingChanges

a 上等待应用于目标 point-in-time的更改事件总数。请注意,这与源终端节点的事务更改速率指标不同。对于该指标,较大的值通常表示 Amazon DMS 无法及时应用捕获的更改,从而导致较高的目标延迟。

CDCChangesMemorySource

内存中累积并等待从源提交的行数。您可以将此指标与一起查看CDCChangesDiskSource。

CDCChangesMemoryTarget

内存中累积并等待提交到目标的行数。您可以将此指标与一起查看CDCChangesDiskTarget。

CDCChangesDiskSource

磁盘上累积并等待从源提交的行数。您可以将此指标与一起查看CDCChangesMemorySource。

CDCChangesDiskTarget

磁盘上累积并等待提交到目标的行数。您可以将此指标与一起查看CDCChangesMemoryTarget。

CDCThroughputBandwidthTarget

目标的传出数据传输速率,以每秒 KB 数为单位。CDCThroughputBandwidth记录在采样点传输的传出数据。如果未找到任务网络流量,则该值为零。由于CDC不会发出长时间运行的交易,因此可能不会记录网络流量。

CDCThroughputRowsSource

源的传入任务更改,以行/秒为单位。

CDCThroughputRowsTarget

目标的传出任务更改,以行/秒为单位。

CDCLatencySource

从源端点中捕获的最后一个事件与 Amazon DMS 实例的当前系统时间戳之间的间隔(秒)。CDCLatencySource表示源实例和复制实例之间的延迟。高CDCLatencySource表示从源捕获更改的过程被延迟。要确定正在进行的复制过程中的延迟,您可以将此指标与一起查看CDCLatencyTarget。如果CDCLatencySource和都CDCLatencyTarget很高,请CDCLatencySource先进行调查。

CDCSourceLatency当源实例和复制实例之间没有复制延迟时,可以为 0。CDCSourceLatency当复制任务尝试读取源事务日志中的下一个事件并且与上次从源读取时相比没有新事件时,也可能变为零。发生这种情况时,任务会将重置CDCSourceLatency为 0。

CDCLatencyTarget

在目标上等待提交的第一个事件时间戳与 Amazon DMS 实例的当前系统时间戳之间的间隔(秒)。目标延迟是复制实例服务器时间,与转发到目标组件的最早未经确认的事件 ID 时间之间的差异。换句话说,目标延迟是复制实例与应用但未经TRG端点确认的最早事件之间的时间戳差 (99%)。如果CDCLatencyTarget为高,则表示将更改事件应用于目标的过程已延迟。要确定正在进行的复制过程中的延迟,您可以将此指标与一起查看CDCLatencySource。如果CDCLatencyTarget为高但CDCLatencySource不高,请调查是否:

  • 目标中没有主键或索引

  • 目标实例或复制实例中出现资源瓶颈

  • 复制实例和目标之间存在网络问题

CPUUtilization

任务在多个内核上使用的百分比。CPU任务的语义与复制CPUUtilizaiton略CPUUtilization有不同。如果完全使用 1 vCPU,则表示 100%;但如果使用多个 v, vCPUs 则该值可能高于 100%。

单位:百分比

SwapUsage

任务使用的交换区数量。

单位:字节

MemoryUsage

任务使用的控制组(cgroup)memory.usage_in_bytes。DMS使用 cgroups 来控制系统资源的使用,例如内存和。CPU该指标表示在为任务分配的 cgroup 中,该任务的内存使用量,以 MB 为单位。cgroup 限制基于您的DMS复制实例类的可用资源。 memory.usage_in_bytes 由内存的常驻集合大小 (RSS)、缓存和交换组件组成。如果需要,操作系统可以回收缓存。我们建议您同时监控复制实例指标AvailableMemory

Amazon DMS 将此指标与 CloudWatch 控制台ReplicationTaskIdentifier中的ReplicationInstanceIdentifer和的组合维度相提并论。使用 ReplicationInstanceIdentifier, ReplicationTaskIdentifier 类别查看此指标。

查看和管理 Amazon DMS 任务日志

在 Amazon DMS 迁移过程中 CloudWatch ,您可以使用 Amazon 记录任务信息。您可以在选择任务设置时启用日志记录。有关更多信息,请参阅 日志记录任务设置

要查看运行的任务的日志,请按照下列步骤操作:

  1. 打开 Amazon DMS 控制台,然后从导航窗格中选择数据库迁移任务。此时将显示“数据库迁移任务”对话框。

  2. 选择角色的名称。此时将显示“概述详细信息”对话框。

  3. 找到 “迁移任务日志” 部分,然后选择 “查看 CloudWatch 日志”。

此外,您还可以使用 Amazon CLI 或 Amazon DMS API来查看有关任务日志的信息。为此,请使用describe-replication-instance-task-logs Amazon CLI 命令或 Amazon DMS API操作DescribeReplicationInstanceTaskLogs

例如,以下 Amazon 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。例如,使用 Amazon CLI modify-replication-task命令或 Amazon DMS APIModifyReplicationTask操作修改任务时,以下内容JSON会删除任务日志。

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

对于每个复制实例, Amazon DMS 删除超过 10 天的日志。

使用记录 Amazon DMS API通话 Amazon CloudTrail

Amazon DMS 与 Amazon CloudTrail一项服务集成,该服务提供用户、角色或 Amazon 服务在中执行的操作的记录 Amazon DMS。 CloudTrail 将所有API调用捕获 Amazon DMS 为事件,包括来自 Amazon DMS 控制台的调用和对 Amazon DMS API操作的代码调用。如果您创建了跟踪,则可以允许将 CloudTrail 事件持续传输到 Amazon S3 存储桶,包括的事件 Amazon DMS。如果您未配置跟踪,您仍然可以在 CloudTrail 控制台的事件历史记录中查看最新的事件。使用收集的信息 CloudTrail,您可以确定向哪个请求发出 Amazon DMS、发出请求的 IP 地址、谁发出了请求、何时发出请求以及其他详细信息。

要了解更多信息 CloudTrail,请参阅Amazon CloudTrail 用户指南

Amazon DMS 信息在 CloudTrail

CloudTrail 在您创建 Amazon 账户时已在您的账户上启用。当活动发生在中时 Amazon DMS,该活动会与其他 Amazon 服务 CloudTrail 事件一起记录在事件历史记录中。您可以在自己的 Amazon 账户中查看、搜索和下载最近发生的事件。有关更多信息,请参阅使用事件历史查看 CloudTrail 事件

要持续记录您 Amazon 账户中的事件,包括的事件 Amazon DMS,请创建跟踪。跟踪允许 CloudTrail 将日志文件传输到 Amazon S3 存储桶。默认情况下,当您在控制台中创建跟踪时,该跟踪将应用于所有 Amazon 区域。跟踪记录 Amazon 分区中所有 Amazon 区域的事件,并将日志文件传送到您指定的 Amazon S3 存储桶。此外,您可以配置其他 Amazon 服务,以进一步分析和处理 CloudTrail 日志中收集的事件数据。有关更多信息,请参阅:

所有 Amazon DMS 操作均由参考资料记录 CloudTrail 并记录在Amazon Database Migration Service API参考中。例如,调用TestConnectionStartReplicationTask操作会在 CloudTrail 日志文件中生成条目。CreateReplicationInstance

每个事件或日记账条目都包含有关生成请求的人员信息。身份信息有助于您确定以下内容:

  • 请求是使用根凭证还是IAM用户凭证发出的。

  • 请求是使用角色还是联合用户的临时安全凭证发出的。

  • 请求是否由其他 Amazon 服务发出。

有关更多信息,请参阅CloudTrail userIdentity元素

了解 Amazon 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" }

Amazon DMS 上下文日志

Amazon DMS 使用上下文记录为您提供有关正在进行的迁移的信息。上下文日志记录将诸如以下内容之类的信息写入任务 CloudWatch 日志:

  • 有关任务与源数据库和目标数据库连接的信息。

  • 复制任务行为。您可以使用任务日志来诊断复制问题。

  • SQL在源数据库和目标数据库上 Amazon DMS 执行的不带数据的语句。您可以使用SQL日志来诊断意外的迁移行为。

  • 直播每个CDC事件的位置详情。

上下文日志仅在 3.5.0 或更高 Amazon DMS 版本中可用。

Amazon DMS 默认情况下开启上下文记录。要控制上下文日志记录,请将 EnableLogContext 任务设置设为 truefalse,或者在控制台中修改任务。

Amazon DMS 每三分钟将上下文 CloudWatch 日志信息写入日志的复制任务。请确保您的复制实例有足够的空间来存储其应用程序日志。有关使用管理任务日志的更多信息,请参阅查看和管理 Amazon DMS 任务日志

对象类型

Amazon DMS CloudWatch 为以下对象类型生成上下文登录。

对象类型 描述
TABLE_NAME 这些日志条目包含当前任务映射规则范围内表的相关信息。您可以使用这些条目来检查迁移期间特定时间段内的表事件。
SCHEMA_NAME 这些日志条目包含当前任务映射规则所使用的架构的相关信息。您可以使用这些条目来确定在迁移期间的特定时间段内使用 Amazon DMS 哪个架构。
TRANSACTION_ID 这些条目包含从源数据库捕获的每个DML/DDL变更的事务 ID。您可以使用这些日志条目来确定在给定事务期间发生了哪些更改。
CONNECTION_ID 这些条目包含连接 ID。您可以使用这些日志条目来确定每个迁移步骤 Amazon 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日志表明没有可从源数据库日志文件中读取的事件,并且包含的TARGET_APPLY记录表明没有从 Amazon DMS CDC组件收到任何可应用于目标数据库的事件。这些事件还包含先前应用的与事件相关的上下文详细信息。

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 (?,?,?,?,?),

限制

以下限制适用于 Amazon DMS 上下文日志:

  • 虽然为所有端点类型 Amazon DMS 创建的日志记录最少,但大量的特定于引擎的上下文日志记录仅适用于以下端点类型。我们建议在使用这些端点类型时开启上下文日志记录。

    • 我的 SQL

    • Postgre SQL

    • Oracle

    • 微软SQL服务器

    • MongoDB/Amazon DocumentDB

    • Amazon S3