为什么我的 AWS DMS 复制数据库实例状态为存储已满?
上次更新日期:2021 年 2 月 16 日
为什么我的 AWS Database Migration Service (AWS DMS) 复制数据库实例状态为存储已满?
简短描述
AWS DMS 复制数据库实例具有存储空间,您可以在创建复制数据库实例时指定应分配多少存储空间。默认情况下,dms.t2.* 和 dms.r4.* 复制数据库实例类型的卷大小为 50 GiB。dms.c4.* 复制数据库实例类型的卷大小为 100 GiB。监控FreeStorageSpace的 Amazon CloudWatch 指标,以监控复制数据库实例的可用存储空间。
复制数据库实例存储主要用于为持续复制收集的任务日志和缓存更改。
具有完整加载的迁移
如果存在大量任务日志(例如,如果您已为任务启用详细的调试日志记录),则任务日志可能会导致storage-full(存储已满)问题。默认情况下,AWS DMS 任务日志记录级别是最低的,但有时您需要更详细的日志记录,以确定迁移错误或失败的原因。但是,详细的调试日志记录可能会消耗复制存储空间,因为 AWS DMS 会将每一个事件写入到日志文件。而且,过多任务日志可能会导致复制数据库实例处于storage-full(存储已满)状态。
具有持续复制的迁移
缓存事件可能会在完整加载阶段导致存储问题,尤其是如果您已将迁移配置为使用StopTaskCachedChangesNotApplied任务设置。有关更多信息,请参阅创建复制实例。如果存储大小太小,无法存储缓存更改,则您的复制实例将处于storage-full(存储已满)状态。
无法将从来源捕获的更改应用到目标时,更改数据捕获 (CDC) 阶段交换的事件可能会导致存储问题。AWS DMS 会先将缓存的事件存储在内存中,然后在超过MemoryKeepTime或MemoryLimitTotal参数定义的值(默认情况下分别为 60 秒和 1 GiB)时将这些事件交换到存储。如果交换的数据没有足够的存储空间,则复制数据库实例将处于storage-full(存储已满)状态。有关更多信息,请参阅更改处理优化设置。
解决方法
注意:如果您在运行 AWS 命令行界面 (AWS CLI) 命令时收到错误,请确保您正在运行最新版本的 AWS CLI。
删除任务日志 <br>
如果复制数据库实例处于可用状态,则您可以删除任务日志:
- 打开 AWS DMS 控制台。
- 从导航窗格中选择Replication instances(复制实例)。
- 选择复制数据库实例的名称。
- 从 Log management(日志管理)部分中,您将看到所有任务和每个任务的Log size(日志大小)。
- 选择要删除日志的任务,然后选择删除。
有关更多信息,请参阅管理 AWS DMS 任务日志。
使用 CLI 修改任务设置
您还可以通过修改任务设置,使用 AWS 命令行界面 (AWS CLI) 删除 DMS 任务日志。首先,使用以下命令创建tasksetting.jsonJSON 文件:
"Logging": {
"DeleteTaskLogs": true
}
}
创建 JSON 文件后,请运行以下命令以修改任务设置。
注:任务的状态必须为Stopped (已停止) 或 Failed (失败),才能对其进行修改。
aws dms modify-replication-task --replication-task-arn <dms task="" arn=""> --replication-task-settings file://tasksetting.json</dms>
上面的命令是通过更改参数“DeleteTaskLogs": true”来修改任务设置的。将此参数和值添加到任务设置后,该任务的所有日志都将从复制数据库实例中删除。删除日志后,“DeleteTaskLogs”: true参数将从任务设置中删除。运行此命令后,请确认日志已从复制数据库实例中删除,并且已将参数“DeleteTaskLogs”: true从任务设置中删除。
要定期删除日志,您必须每次都使用“DeleteTaskLogs": true”参数来修改任务设置。您可以根据实施情况,使用 cronjob 或 Lambda 计划程序来计划此命令,以使其定期运行。
有关更多信息,请参阅 modify-replication-task。
增加复制数据库实例的存储大小
如果复制数据库实例处于存储已满状态,则您无法删除日志。您必须增加分配的存储空间大小,或删除复制任务。要增加复制数据库实例的存储空间大小,请执行以下操作:
- 打开 AWS DMS 控制台。
- 从导航窗格中选择Replication instances(复制实例)。
- 选择要为其修改卷大小的复制数据库实例的名称。
- 选择Modify(修改)。
- 对于Allocated storage (GB) (分配的存储,单位为 GB)字段,请输入新值。
- 选择Apply changes immediately(立即应用更改),然后选择Modify(修改)。
重要提示:分配的存储空间大小在增加后无法再减少。