在配置同步任务时,DTS 支持对单个表或者批量对多个表设置 Where 条件过滤,只有满足设置规则的数据才会同步到目标数据库,这样用户可以灵活进行数据拆分。
适用范围
当前支持批量 Where 的同步链路:MySQL/MariaDB/Percona/TDSQL-C MySQL/TDSQL TDStore/TDSQL MySQL 相互之间、MySQL/MariaDB/Percona/TDSQL-C MySQL 同步到 Kafka 链路。
TDSQL MySQL 同步到 Kafka 链路当前仅支持对单个表设置 Where 条件,不支持批量设置 Where 条件。
约束限制
1. 不支持对整库或者整表设置 Where 条件,多个表需要设置 Where 条件过滤时,请依次勾选多个表对象,然后设置 Where 条件规则。
2. 列过滤与 Where 条件过滤的交互说明如下:
如果一个表进行了列过滤,用户同时还对该表设置 Where 规则,需要用户自行保证输入 Where 规则中的列名,包含在待同步的表中,否则 Where 规则可以设置成功,但后续任务启动后会报错。
Where 条件规则说明
1. 设置 Where 过滤条件后,单个表中只有满足设置规则的数据才会同步到目标数据库。
对于 INSERT 操作,需要插入的数据满足条件过滤规则才能同步到目标库。
对于 DELETE 操作,需要删除的数据满足条件过滤规则才能同步到目标库。
对于 UPDATE 操作,用户可根据自身需求设置不同的规则。
更新前、后数据均满足:表示更新前、后的数据都满足条件过滤规则才能同步到目标库。
更新前满足:表示更新前的数据满足条件过滤规则可以同步到目标库。
更新后满足:表示更新后的数据满足条件过滤规则可以同步到目标库。
2. Where 条件输入的规则必须是一个合法的 BOOL 表达式,并且表达式的规则相对于 MySQL 更为严格,一些在 MySQL 中支持但可能产生 WARNING 的语法(如字符串同数字比较,c1 + c2 < "abc" ),此处不支持。逻辑运算、算术运算、比较运算规则和优先级同 MySQL 一致,支持通过括号改变运算优先级,操作数中有 NULL 时,运算规则也同 MySQL 一致。DTS 系统会对输入的条件过滤规则进行验证,如果不合法会给出提醒。