AWS Database Migration Service
用户指南 (版本 API Version 2016-01-01)
AWS 文档中描述的 AWS 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 AWS 服务入门

监控 AWS DMS 任务

您可以查看任务状态和监控任务的控制表,以便监控任务的进度。有关控制表的更多信息,请参阅控制表任务设置

您还可以使用 Amazon CloudWatch 监控任务的进度。使用 AWS 管理控制台、AWS 命令行界面 (CLI) 或 AWS DMS API,您可以监控任务的进度以及所用的资源和网络连接。

最后,您可以通过查看表状态来监控任务中源表的状态。

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

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

任务状态

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

任务状态 描述

创建

AWS DMS 正在创建任务。

正在运行

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

Stopped

任务已停止。

正在停止

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

删除

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

已失败

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

正在启动

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

Ready

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

正在修改

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

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

任务期间的表状态

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


                     AWS Database Migration Service 复制实例
状态 描述

表不存在

AWS DMS 在源终端节点上找不到表。

加载前

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

完全加载

完全加载过程正在进行。

表已完成

完全加载已完成。

表已取消

已取消加载表。

表错误

加载表时出错。

使用 Amazon CloudWatch 监控复制任务

您可以使用 Amazon CloudWatch 警报或事件,以便更密切地跟踪您的迁移。有关 Amazon CloudWatch 的更多信息,请参阅 Amazon CloudWatch 用户指南中的什么是 Amazon CloudWatch、Amazon CloudWatch Events 和 Amazon CloudWatch Logs?。请注意,在使用 Amazon CloudWatch 时,需要支付相应的费用。

AWS DMS 控制台显示了每个任务的基本 CloudWatch 统计信息,例如:任务状态、完成百分比、已用时间、表统计信息等,如下所示。选择复制任务,然后选择任务监控选项卡。


                AWS DMS 监控

在选择表统计数据选项卡时,AWS DMS 控制台显示每个表的性能统计数据,包括插入、删除和更新数。


                AWS DMS 监控

此外,如果从复制实例页中选择一个复制实例,您可以选择监控选项卡以查看该实例的性能指标。


                AWS DMS 监控

数据迁移服务指标

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

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

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

  • 表指标 – 迁移过程中的表的统计数据,包括插入数、更新数、删除数和完成的 DDL 语句。

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

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

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

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

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

FreeableMemory 指标接近于零。

SwapUsage 指标增加或发生波动。

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

复制实例指标

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

CPU 使用率

使用的 CPU 量。

单位:字节

可用存储空间

可用存储空间的大小。

单位:字节

FreeableMemory

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

单位:字节

写入 IOPS

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

单位:计数/秒

读取 IOPS

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

单位:计数/秒

写入吞吐量

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

单位:字节/秒

读取吞吐量

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

单位:字节/秒

写入延迟

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

单位:秒

读取延迟

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

单位:秒

SwapUsage

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

单位:字节

NetworkTransmitThroughput

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

单位:字节/秒

NetworkReceiveThroughput

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

单位:字节/秒

复制任务指标

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

FullLoadThroughputBandwidthSource

源上的完全加载的传入网络带宽,以千字节 (KB)/秒为单位。

FullLoadThroughputBandwidthTarget

目标上的完全加载的传出网络带宽,以 KB/秒为单位。

FullLoadThroughputRowsSource

源上的完全加载的传入更改,以行/秒为单位。

FullLoadThroughputRowsTarget

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

CDCIncomingChanges

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

CDCChangesMemorySource

内存中累积并等待从源提交的行数。

CDCChangesMemoryTarget

内存中累积并等待提交到目标的行数。

CDCChangesDiskSource

磁盘上累积并等待从源提交的行数。

CDCChangesDiskTarget

磁盘上累积并等待提交到目标的行数。

CDCThroughputBandwidthSource

目标的网络带宽,以 KB/秒为单位。CDCThroughputBandwidth 记录采样点上的带宽。如果未找到网络流量,则该值为零。由于 CDC 不发布长时间运行的事务,可能不会记录网络流量。

CDCThroughputBandwidthTarget

目标的网络带宽,以 KB/秒为单位。CDCThroughputBandwidth 记录采样点上的带宽。如果未找到网络流量,则该值为零。由于 CDC 不发布长时间运行的事务,可能不会记录网络流量。

CDCThroughputRowsSource

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

CDCThroughputRowsTarget

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

CDCLatencySource

从源终端节点中捕获的最后一个事件与 AWS DMS 实例的当前系统时间戳之间的间隔 (秒)。如果出于任务范围的原因而未从源中捕获任何更改,AWS DMS 会将该值设置为零。

CDCLatencyTarget

在目标上等待提交的第一个事件时间戳与 AWS DMS 实例的当前系统时间戳之间的间隔(秒)。如果存在未由目标处理的事务,则会发生此值。否则,如果应用了所有事务,目标延迟会与源延迟相同。目标延迟永远不应小于源延迟。

管理 AWS DMS 任务日志

在迁移过程中,AWS DMS 使用 Amazon 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 使用 AWS CLI modify-replication-task 命令或 AWS DMS API ModifyReplicationTask 操作在修改任务时删除任务日志。

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

使用 AWS CloudTrail 记录 AWS DMS API 调用

AWS DMS 与 AWS CloudTrail 集成,后者是在 AWS DMS 中提供用户、角色或 AWS 服务所采取操作的记录的服务。CloudTrail 将对 AWS DMS 的所有 API 调用作为事件捕获,包括来自 AWS DMS 控制台的调用和对 AWS DMS API 的代码调用。如果您创建跟踪,则可以使 CloudTrail 事件持续交付到 Amazon S3 存储桶(包括 AWS DMS 的事件)。如果您不配置跟踪,则仍可在 CloudTrail 控制台的 Event history (事件历史记录) 中查看最新事件。通过使用 CloudTrail 收集的信息,您可以确定向 AWS DMS 发出了什么请求、发出请求的 IP 地址、何人发出的请求、请求的发出时间以及其他详细信息。

要了解有关 CloudTrail 的更多信息,请参阅 AWS CloudTrail User Guide

AWS DMS 中的 CloudTrail 信息

在您创建 CloudTrail 账户时,即针对该账户启用了 AWS。AWS DMS 中发生活动时,该活动将记录在 CloudTrail 事件中,并与其他 AWS 服务事件一同保存在 Event history (事件历史记录) 中。您可以在 AWS 账户中查看、搜索和下载最新事件。有关更多信息,请参阅使用 CloudTrail 事件历史记录查看事件

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

所有 AWS DMS 操作均由 CloudTrail 记录下来并记载到 AWS Database Migration Service API Reference 中。例如,对 CreateReplicationInstanceTestConnectionStartReplicationTask 操作的调用会在 CloudTrail 日志文件中生成条目。

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

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

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

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

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

了解 AWS DMS 日志文件条目

跟踪是一种配置,可用于将事件作为日志文件传送到您指定的 Amazon S3 存储桶。CloudTrail 日志文件包含一个或多个日志条目。一个事件表示来自任何源的一个请求,包括有关所请求的操作、操作的日期和时间、请求参数等方面的信息。CloudTrail 日志文件不是公用 API 调用的有序堆栈跟踪,因此它们不会以任何特定顺序显示。

下面的示例显示了一个 CloudTrail 日志条目,该条目说明了 RebootReplicationInstance 操作。

{ "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" }