设置过滤条件
更新时间:2024-05-27
在配置迁移任务对象时,您可以通过设置过滤条件,将满足设置条件的数据同步到目标端实例,该功能常应用于分库分表、同步或迁移部分数据等场景。 DTS 支持如下维度的 SQL 过滤: DML 过滤:支持类型 INSERT、UPDATE、DELETE。 DDL 过滤:支持过滤特殊 DDL 操作,如 DROP、TRUNCATE 等。 WHERE 条件过滤:支持对单个表设置自定义过滤条件。
前提条件
- 任务未完成配置,并配置 DTS 任务传输对象为 手动选择。
- DDL 过滤功能当前支持的同步链路: MySQL/GaiaDB 相互之间。
注意事项
- 若源表或集合中存在两个列名仅大小写不同的列,则可能会导致过滤任务无法达到预期结果。
- 如果过滤条件需要使用引号时,请使用单引号
'
。 - 请勿在过滤条件的末尾输入分号
;
,否则可能会导致任务失败。 - WHERE 条件过滤支持对单张表进行设置,需要对多张表进行过滤时,对每张表分别进行设置即可。
-
列过滤与 WHERE 条件过滤的交互说明如下:
如果一个表进行了列过滤,用户同时还对该表设置 WHERE 规则,需要用户自行保证输入 WHERE 规则中的列名,包含在待同步的表中,否则 WHERE 规则可以设置成功,但后续任务启动后会报错。
操作步骤
-
在 对象映射 步骤中,勾选增量同步,选择不同的过滤条件。
- 同步语句选择:支持类型 INSERT、UPDATE、DELETE、DDL
-
其中 DDL 详细说明如下:
- 勾选 DDL,则同步源端数据库的所有 DDL 到目标端数据库。
- 勾选 DDL,同时勾选 特殊 DDL 过滤,可以过滤 DROP、TRUNCATE 语句。
- 不勾选 DDL,则所有的 DDL 都不会同步到目标端数据库。
- 选择传输对象为 手动选择 后,勾选需要迁移的对象。
- 在右侧选择框中,点击需要设置 WHERE 条件过滤的对象后 编辑 按钮。
-
设置 WHERE 过滤条件后,只有满足设置规则的数据才会同步到目标端数据库。
- 对于 INSERT 操作,需要插入的数据满足条件过滤规则才能同步到目标库;
- 对于 DELETE 操作,需要删除的数据满足条件过滤规则才能同步到目标库;
- 对于 UPDATE 操作,则需要更新前、后的数据都满足条件过滤规则才能同步到目标库。
- 点击 确认。
- 根据提示完成后续操作。