发布于: Nov 30, 2022
【概要】如何在数据库迁移时创建 CloudWatch 告警实现数据自动化监控呢?本文将会为你介绍所需设立的一些告警。在后面的文章中再详细介绍项目方案。
如何在数据库迁移时创建 CloudWatch 告警实现数据自动化监控呢?本文将会为你介绍所需设立的一些告警。在后面的文章中再详细介绍项目方案。Amazon Database Migration Service (DMS) 是一项云服务,可轻松完成对关系数据库、数据仓库、NoSQL 数据库以及其他类型数据存储的迁移工作。Amazon DMS 专门用于从多个本地实例,或者云与本地实例的组合将数据迁移至亚马逊云。
在使用 Amazon DMS 进行数据迁移的过程中,最重要的是对当前正在进行的复制任务的状态执行监控。您可以通过任务的控制表以及 Amazon CloudWatch 服务进行这项操作。您可以通过 Amazon 管理控制台、Amazon 命令行界面(Amazon CLI)或者 Amazon DMS API 监控任务进度、实际使用的资源与网络连接。
您通常使用多个任务执行迁移。这些任务之间彼此独立,能够同时运行,而复制任务的数量则根据实际场景而有所区别。当面对大量同时进行的复制任务时,靠人工去监控每项任务的进度无疑是一项既枯燥、又容易出错的工作。
在本文中,我们为您提供一套使用 Amazon CloudFormation 模板的自动化解决方案。此解决方案包含以下步骤:
- 为复制任务创建一个 CloudWatch 告警。
- 创建 Amazon DMS 事件订阅。
- 配置 Amazon Simple Notification Service (Amazon SNS),将任务的 CloudWatch 日志中发现的错误通知给您。
- 创建一个 Amazon Lambda 函数,发送 SNS 通知以重现 CloudWatch 告警。
在开始之前,您必须拥有以下资源:
- Amazon DMS 源与目标端点
- 一个 Amazon DMS 复制实例
- 启用日志记录的 Amazon DMS 复制任务(关于详细说明,请参阅使用 Amazon DMS 创建持续复制任务)
- 一个 SNS 主题
在具备以上先决条件之后,大家即可开始自动执行复制任务监控。
对任务状态进行监控的首选方法,就是为复制任务创建 CloudWatch 告警。因为只要复制任务的指标发生改变,告警就会被立即触发。
我们建议您为以下 DMS 指标设置告警:
- CDCLatencySource
- CDCLatencyTarget
- CDCChangesDiskSource
- CDCChangesDiskTarget
关于 Amazon DMS 指标的更多详细信息,请参阅 Amazon Database Migration Service 指标。
CDCLatencySource
CDCLatencySource 是指从源终端节点中捕获的最后一个事件与 Amazon DMS 实例的当前系统时间戳之间的间隔 (秒)。如果因为任务范围限制原因而没有从源终端节点处捕捉到任何变更,则 Amazon DMS 将此值设置为零。
在复制期间,Amazon DMS 会从源数据库事务日志中读取变更。
根据源数据库的实际引擎,源事务日志可能包含未提交的数据。在复制进行期间,Amazon DMS 会从事务日志中读取传入的变更,但仅将已经提交的变更转发至目标,这最终将引发源数据库发送延迟。
CDCLatencyTarget
CDCLatencyTarget 是指在目标上等待提交的第一个事件时间戳与 Amazon DMS 实例的当前系统时间戳之间的间隔(秒)。如果存在目标没有处理的事务,则会产生此值。如果所有事务都得到及时处理,则目标延迟将与源延迟相同。目标延迟不应低于源延迟。
目标延迟之所以高于源延迟,是因为前者代表的是从源数据库中的插入时间、直到对应行发生提交为止的当前记录的总延迟时长。
CDCChangesDiskSource
CDCChangesDiskSource 是指在磁盘上累积并等待从源处进行实际提交的总行数。
CDCChangesDiskSource 当中的所有行都曾经处于内存内,只是由于达到了允许驻留在内存内的最长时间阈值而被逐出保存在磁盘上了。我们的目标是了解引擎的内部结构,并使用任务设置将 CDCChangesDiskSource 的值最小化。例如我们可以尝试设置 MemoryLimitTotal 与 MemoryKeepTime 的值来达到目的。如果需要了解更多详细信息,请参阅调试 Amazon DMS 迁移:出现问题时应采取的各项措施(第二部分)。
CDCChangesDiskTarget
CDCChangesDiskTarget 是指在磁盘上累积并等待被提交至目标的总行数。
我们应尽量确保在内存内处理这些行。如果 CDCChangesDiskTarget 的值不断增加,则可能代表出现了两个问题:复制实例上的内存可能被过度使用;或者目标数据库实例已经无法同步接收 Amazon DMS 发送来的变更。