设置同步属性
为什么需要设置同步属性?
在数据同步过程中,我们可能需要根据业务需求对同步行为进行精细化控制。例如,某些场景下我们可能不希望同步删除操作,或者只关注特定的DDL操作。通过设置同步属性,我们可以灵活地控制哪些数据变更操作(DML)和结构变更操作(DDL)需要被同步,从而更好地满足业务需求,提高同步的效率和安全性。
在增量同步的时候,ProtonBase 根据对象属性过滤数据,包括 DDL 和 DML。可以修改对象属性来忽略源端某些数据行为,比如 Delete 数据。
修改属性
点击"修改属性"可以修改全局属性和任意节点属性。
对象属性默认使用 default 全局属性,每个节点可以配置各自的属性。节点属性配置之后,所有下属子节点使用该节点属性。
如下图所示:bit_type_test 表的属性,默认使用 mysql_normal_test database 的属性;mysql_normal_test database 的属性默认使用 default 属性。
一旦节点属性配置之后,会增加一个撤销按钮,如下图红框所示。点击该按钮,可以清空修改,使用上层节点属性或者全局属性
属性含义
支持的 DDL 操作
- Create:侦听创建表事件,默认选中,如果上游有创建表事件,则下游同步创建表。
- Alter:侦听修改表事件,比如新增字段、修改字段等(当前只支持新增字段),默认选中
- Drop:侦听删除表事件
- Rename:侦听表的重命名事件
- Truncate:侦听清空表事件
支持的 DML 操作
- Insert:新增数据,默认选中,当上游执行 Insert 命令时,下游同步执行 Insert。
- Update:更新数据,默认选中,当上游执行 Update 命令时,下游同步执行 Update。
- Delete:删除数据,默认选中,当上游执行 Delete 命令时,下游同步执行 Delete。
支持无损变更
当使用阿里云 DMS 工具提交数据结构变更时,可以选择无损变更
模式变更,在该模式下,DMS 会首先创建临时表,数据写入临时表,在临时表上进行变更,最后通过 RENAME 操作,完成临时表和目标表的替换。Teleport 在打开 Create、Alter、Drop、Rename 等一些事件侦听后,可以支持这类变更操作。但在某些场景下,这些操作并不适用或者无法执行,如数据同步作业仅需要同步某张固定的表,并不侦听新建表;如下游的表已经有视图依赖,不能通过 RENAME 方式进行替换。在这些情况下,推荐启用无损变更
选项。
在无损变更
模式下,不会创建临时表,而是利用 ProtonBase 数据库本身的 Online Schema Evolution 能力,直接将变更操作应用在目标表上,这个过程需要创建新表,也不会变更 table id,无需下游视图重建。