如果您的 AWS DMS 错误日志占用 DMS 复制实例中的大量空间,则复制实例可能会进入存储已满状态。要解决此问题,请删除 DMS 任务的 DMS 任务错误日志。
您可以使用以下方法之一删除 AWS DMS 任务的错误日志:
使用 AWS DMS 控制台 使用 AWS 命令行界面 (AWS CLI) 使用 API(在本例中使用 Python 实现)注意:导致出现存储已满的情况还有许多其他原因。有关解决 AWS DMS 存储已满问题的更多信息,请参阅为什么我的 AWS DMS 复制数据库实例状态为存储已满?
解决方法注意:如果您在运行 AWS 命令行界面 (AWS CLI) 命令时收到错误,请确保您运行的是最新版本的 AWS CLI。
使用 AWS DMS 控制台删除错误日志要使用 AWS DMS 控制台手动删除 DMS 任务的错误日志,请按照如何启用、访问和删除 AWS DMS 的 CloudWatch Logs?中的步骤操作
使用 AWS CLI 删除错误日志您可以使用以下 AWS CLI 命令修改任务设置来删除 DMS 任务日志:
aws dms modify-replication-task --replication-task-arn <DMS task ARN> --replication-task-settings '{"Logging": { "DeleteTaskLogs": true}}'
此命令通过更改 "DeleteTaskLogs": true 参数修改任务。添加具有此参数和值的任务设置后,此任务的所有日志都将从复制实例中删除。删除日志后,"DeleteTaskLogs": true 参数将从任务设置中删除。运行此命令后,确认已从复制实例中删除日志。
要定期删除日志,请每次都使用 "DeleteTaskLogs": true 参数来修改任务设置。您可以使用 cronjob 计划此 AWS CLI 命令,使其定期运行。有关修改任务设置的更多信息,请参阅修改任务设置 AWS CLI。
使用 Lambda 计划程序自动执行-
打开 Lambda 控制台,然后选择您创建的函数。
对于设计器,选择添加触发器。
从下拉列表中,选择 EventBridge (Cloudwatch Events)。
对于规则,选择创建新规则。
输入规则名称和规则描述。
要每七天运行一次代码,对于计划表达式,请输入 rate (7 days)。有关更灵活的表达式,请参阅使用 rate 或 cron 的计划表达式。
选择添加。
完成这些步骤后,自动化过程将设置为每七天删除一次指定的 DMS 日志。
注意:您可以根据业务要求更改和优化此代码。您还可以使用 cronjob 或 Lambda 计划程序来计划此脚本,使其定期运行。