You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用AWS DMS在S3迁移完成后删除源表已迁移记录

实现AWS DMS迁移至S3 Parquet后删除源SQL记录的方案

方案1:全量迁移场景 - DMS任务+标记字段+Post脚本

适合一次性迁移指定记录的场景:

  • 给源库待迁移表添加标记字段:
    ALTER TABLE your_target_table ADD COLUMN is_migrated BOOLEAN DEFAULT FALSE;
    
  • 配置DMS迁移任务时,在表映射的筛选规则里,仅同步is_migrated = FALSE的记录。
  • 在DMS任务的Post-load脚本中执行以下SQL,确保迁移完成后删除对应记录:
    -- 先标记已迁移(可选,用于事后核对)
    UPDATE your_target_table SET is_migrated = TRUE WHERE is_migrated = FALSE;
    -- 删除已标记的记录
    DELETE FROM your_target_table WHERE is_migrated = TRUE;
    
  • 注意:Post-load脚本仅在全量迁移完成后执行,增量迁移场景不适用。

方案2:全量/增量通用 - S3事件触发Lambda删除(最可靠)

该方案能确保Parquet文件成功落地S3后再删除源数据,适配所有迁移模式:

  • 给目标S3桶配置事件通知:触发条件选择“对象创建完成”,指定Parquet文件的前缀/后缀(比如*.parquet),触发目标选择Lambda函数。
  • 编写Lambda函数核心逻辑:
    1. 解析S3事件中的文件元数据,提取已迁移记录的标识(比如文件名中的批次ID、主键范围,或读取Parquet文件内的主键列表)。
    2. 通过Lambda的IAM权限连接源SQL数据库,执行批量删除语句(例如DELETE FROM your_target_table WHERE id IN (xxx)或按时间范围删除)。
    3. 添加错误处理:删除失败时,将失败信息存入SQS或CloudWatch日志,方便后续重试。
  • 给Lambda配置必要的IAM权限:S3事件读取权限、源数据库访问权限、CloudWatch日志写入权限。

方案3:增量实时迁移 - DMS CDC+源库触发器

如果是实时CDC同步场景:

  • 配置DMS为CDC模式,同步源库新增/更新记录到S3。
  • 在源库创建触发器:当记录的is_migrated字段被设为TRUE时(可通过DMS的转换规则在同步后更新源库标记),自动触发删除操作。
  • 注意:触发器需添加判断条件,避免循环触发(例如仅在is_migrated从FALSE变为TRUE时执行删除)。

关键注意点

  • 优先选择方案2:直接基于S3文件生成事件触发删除,能100%确保迁移成功,避免数据丢失。
  • 严格匹配删除范围:迁移时明确筛选条件(比如时间、主键),删除时精准对应已迁移的记录集,防止误删。
  • 提前备份:删除前对源库做快照或导出备份,应对意外情况。
  • 分批删除:针对大量记录,分批次执行删除语句,避免锁表影响源库性能。

内容的提问来源于stack exchange,提问作者Yakitate

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.15 11:20:59