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

如何在Azure Data Factory中执行MySQL删除查询?

ADF复制数据后删除MySQL已同步记录的落地实现方案

你不用找专门适配MySQL的删除活动,以下三个方案都是生产环境验证过可行的:

  • 方案1:ODBC链接服务+Lookup活动执行DELETE(零额外成本,最推荐)
    原生MySQL类型的链接服务确实不支持Script活动,但你可以建ODBC类型的MySQL链接服务,这个类型的服务支持在Lookup活动里直接执行增删改语句:
    • 先配置对应版本的MySQL ODBC驱动连接串,在ADF中创建指向目标MySQL库的ODBC链接服务,测试连通性正常
    • 复制活动跑成功后,串联Lookup活动,选择刚才建好的ODBC链接服务
    • 在Lookup的查询配置区域直接写DELETE逻辑即可:如果是按时间水位做增量同步,直接写带参数的删除语句,例如DELETE FROM your_biz_table WHERE gmt_modified <= @pipeline().parameters.syncUpperBound
    • 如果要精确删除本次复制走的记录,可以在复制完成后先读取存储账户中导出数据的主键集合,在ADF里拼成逗号分隔的字符串变量,再传入删除语句,例如DELETE FROM your_biz_table WHERE id IN (@{variables('copiedPrimaryKeys')})
    • 小提示:Lookup默认会尝试读取查询返回的结果集,你可以在DELETE语句后面补一句无意义的查询,比如DELETE FROM xxx; SELECT 1 AS op_result;,避免活动因为无返回值报错。
  • 方案2:Azure Function活动托管删除逻辑(适合复杂删除场景)
    如果删除逻辑比较复杂(比如需要先做数据一致性校验、分批次删大表数据避免锁表),可以写一个轻量Azure Function:
    • 函数代码里用MySQL官方连接器连库,入参接收ADF传过来的同步水位、已复制数据的存储路径等参数
    • 函数内部先校验存储账户里的记录数和MySQL侧待删除的记录数一致,再执行分批删除,还可以自带失败重试、操作审计日志逻辑
    • 复制活动成功后直接串Azure Function活动,把对应参数传进去就行,不用改ADF本身的链接服务配置。
  • 方案3:MySQL侧存储过程联动(适合固定规则的批量同步)
    如果你的同步规则长期固定(比如每次同步7天前的历史数据,同步完就删),可以直接在MySQL库里写好存储过程,存储过程内部先把待同步的数据导出到指定位置,校验导出成功后直接执行DELETE,ADF侧只需要调用存储过程触发执行即可,这个方案需要给MySQL账号开文件导出权限,适配场景比较窄。

重要提醒:所有删除操作上线前,必须先在测试环境验证WHERE筛选条件,正式执行删除前先跑SELECT COUNT校验待删除记录数和复制到存储的记录数完全一致,避免误删。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.27 20:57:21