我想知道为什么我的 AWS Database Migration Service(AWS DMS)复制数据库实例处于存储已满状态。
简述
对于 AWS DMS 复制数据库实例,您可以在创建复制数据库实例时指定分配的存储空间。默认情况下,dms.t2.* 和 dms.r4.* 复制数据库实例类型的卷大小为 50 GiB。dms.c4.* 复制数据库实例类型的卷大小为 100 GiB。要监控复制数据库实例的可用存储空间,请查看 Amazon CloudWatch 指标 FreeStorageSpace。复制数据库实例存储主要用于针对正在进行的复制收集的任务日志和缓存更改。您的 AWS DMS 复制数据库实例处于存储已满状态的原因可能取决于迁移类型。
满负荷迁移
如果任务日志很多,任务日志可能会导致存储已满的问题。例如,如果您为某项任务开启了详细调试日志记录,则您的数据库实例会产生更多的任务日志。
对正在进行的复制进行迁移
在满负荷阶段,缓存的事件可能会导致存储问题,特别是如果您将迁移配置为使用 StopTaskCachedChangesNotApplied 任务设置。如果存储空间太小而无法存储缓存的更改,则您的复制数据库实例将处于存储已满状态。当来自源的更改无法应用于目标时,更改数据捕获(CDC)阶段的交换事件可能会导致存储问题。AWS DMS 首先将缓存的事件存储在内存中。当超过 MemoryKeepTime 或 MemoryLimitTotal 参数定义的值时,AWS DMS 会将缓存的事件交换到存储中。如果没有足够的存储空间来存储交换的数据,则复制数据库实例将处于存储已满状态。有关更多信息,请参阅Change processing tuning settings。
解决方法
**注意:**如果您在运行 AWS 命令行界面(AWS CLI)命令时收到错误,请参阅排查 AWS CLI 错误。此外,确保您使用的是最新版本的 AWS CLI。
删除任务日志
如果复制数据库实例处于可用状态,则删除任务日志:
- 打开 AWS DMS 控制台。
- 在导航窗格中,选择复制实例。
- 选择复制数据库实例的名称。在日志管理部分中,您可以看到所有任务和每个任务的日志大小。
- 选择要删除日志的任务,然后选择删除。
有关更多信息,请参阅查看和管理 AWS DMS 任务日志。
修改任务设置
要使用 AWS CLI 删除 DMS 任务日志,请修改任务设置。运行以下命令创建一个 tasksetting.json JSON 文件:
{
"Logging": {
"DeleteTaskLogs":true
}
}
创建 JSON 文件后,运行以下命令修改任务设置。
注意:要修改任务,任务的状态必须为已停止或失败。
aws dms modify-replication-task --replication-task-arn --replication-task-settings file://tasksetting.json
要修改任务设置,前面的命令会更改参数 "DeleteTaskLogs": true。修改这个参数后,所有现有的任务日志都将从复制数据库实例中删除。然后,系统会从任务设置中删除参数 "DeleteTaskLogs": true。确认日志已从复制数据库实例中删除,并且系统已从任务设置中删除参数 "DeleteTaskLogs": true。
要定期删除日志,每次都必须通过参数 "DeleteTaskLogs": true修改任务设置。您可以使用 cronjob 或 Lambda 调度器安排定期运行此命令。有关更多信息,请参阅modify-replication-task。
增加复制数据库实例的存储大小
如果复制数据库实例处于存储已满状态,则无法删除日志。您必须增加分配的存储空间大小,或者删除复制任务。要增加复制数据库实例的存储大小,请执行以下操作:
- 打开 AWS DMS 控制台。
- 在导航窗格中,选择复制实例。
- 选择要修改其卷大小的复制数据库实例的名称。
- 选择修改。
- 在**分配的存储空间(GB)**字段中,输入一个新值。
- 选择立即应用更改,然后选择修改。
**重要信息:**增加分配的存储空间后,将无法减少这个存储空间。
相关信息
Best practices for AWS Database Migration Service