结构变化策略
Setting up Schema Change Strategy
结构变化策略是当数据源数据结构发生变化时,系统将为您执行的策略,能够有效避免由于数据源结构变化使任务暂停带来的影响。
关于此功能
我们目前针对主要的数据源结构变化,提供了不同的应对策略,以避免任务暂停。并且您可以根据实际场景的需要为每一个节点选择独立的结构变化策略。
同时由于结构变化策略,非常依赖于源端数据库的读取方式,以及目的地端数据库。因此本版本对结构变化策略有一个较大的重构。您需要在系统中,选定源和目的地后,才会弹出相应的结构变化策略选项。同时变更源端的读取方式,可能会影响到结构变化策略的执行情况。
数据源删除正在同步的表
暂停
遇到此种情况暂停数据任务
删除映射并删除数据目的地的表和数据
删除对应数据链路中的数据映射,并删除数据目的地的表(drop table)
删除映射并保留数据目的地的表和数据
删除对应数据链路中的数据映射,但不对数据目的地表中数据进行操作
持续扫描并保留数据目的地的表和数据
不删除对应数据链路中的数据映射,不对数据目的地表中数据进行操作,保留任务可能因为数据表被误删后恢复同步的可能性
数据源正在同步的表新增字段
暂停
遇到此种情况暂停数据任务
忽略新增字段
数据目的地不新增该字段
为新增字段建立映射,并同步新增字段及默认值
根据新增字段的信息自动建立数据映射,数据目的地应用新的数据映射同步数据,新增该字段及默认值(alter table)
为新增字段建立映射,并同步新增字段。忽略默认值
根据新增字段的信息自动建立数据映射,数据目的地应用新的数据映射同步数据,新增该字段(alter table)
数据源正在同步的表中字段被删除
暂停
遇到此种情况暂停数据任务
删除映射并删除目的地表中的字段和数据
删除对应数据链路中的字段映射,删除目的地表中的该字段(alter table)
删除映射但保留目的地表中的字段和数据,并写入空值
删除对应数据链路中的字段映射,但不对数据目的地表结构和历史数据进行操作,后续同步向该字段写入空值
数据源正在同步的表中字段发生类型/精度/标度变化
暂停
遇到此种情况暂停数据任务
忽略,按照当前字段映射继续同步
继续按照当前的语义映射规则继续同步数据任务,如果该语义规则导致数据写入目的地失败,则会因为目的地写入失败而暂停数据任务
按照源的字段变化,重新匹配语义映射规则,继续同步
按照源的字段变化,重新按照节点或者链路选择的语义映射策略匹配新的语义映射规则,继续同步,如果目的端字段修改失败,则映射修改成功,任务报错。如果目的地端修改成功,则继续写入,此时如果写入数据成功,则继续,如果写入失败,则因为目的地写入失败而暂停数据任务。
数据源清空正在同步的表的数据
暂停
遇到此种情况暂停数据任务
忽略,不在目的地清空数据
忽略该DDL,不在目的地清空数据
自动在目的地清空同步的表的数据
执行该DDL,会在目的地清空该表或者路径下的所有表
数据源正在同步的表中,字段被重命名
暂停
遇到此种情况暂停数据任务
忽略,不在目的地重命名该字段
忽略该DDL,不修改目的地的该字段的名称
自动重命名该字段
执行该DDL,修改目的地的该字段的名称
数据源创建了符合下列正则表达式规则的表
暂停
遇到此种情况暂停数据任务
忽略,不创建符合规则的映射
忽略,当检测到符合规则的DDL,不在系统中创建该映射,同时也不同步该表的数据
自动创建符合规则的映射
当检测到符合规则的DDL,在系统中创建该映射,同时同步该表的数据
表格16 结构变化策略选项说明列表
可以获取到某个类型的DDL
可以执行该类型的DDL
暂停,忽略,跟随DDL
不可以执行该类型的DDL
暂停,忽略
不可以获取到某个类型的DDL
忽略
结构变化策略需要对数据目的地有更改表结构(alter table)、删除表(drop table)权限,如无该类型权限,遇到数据源结构变化的情况,执行结构变化策略的任务将报错暂停;
现版本支持结构变化策略的数据目的地有:MySQL、MS SQL Sever、Oracle、Kafka、SequoiaDB、Redis、Amazon Redshift、TiDB、Greenplum,OpenGauss,Hive ,Inceptor等。
结构变化策略中,当填写正则表达式时,不允许相同的源及目的地创建相同的规则,但是字段或高级清洗处理不一致。因为当前产品不支持同源到同目的地,在同一个链路里,选择两遍。
结构变化策略中,当开启高级清洗时,不支持rename的结构变化策略。
由于PostgreSQL 数据源 wal2json 和MS SQL Server的CT读取模式无法感知数据源删除表,因此日志增量读取阶段不支持数据源删除表结构变化策略。当任务暂停,被再次激活时,会触发源端删除表的DDL,其全量或 JDBC 增量支持数据源删除表结构变化策略。
对于Rename Table的情况,当解析到以后,目前系统默认的策略是会在目的地按照源表被删除来触发逻辑。
对于SQL Server数据源,在使用Change Data Capture模式同步数据时,不支持数据源增加列的自动化结构变化处理流程;如发生结构变化,需要您在数据库中做如下更改,保证数据不会丢失:
停止该数据表的业务增量
挂起DP任务
在数据库中停止该表的CDC进程
变更数据结构
在数据库中创建新的对该表的CDC进程
开始采集
恢复业务增量
激活DP任务
最后更新于
这有帮助吗?