1. mysql-cdc 主键问题
不设置主键时,flink cdc 仍旧会根据某一个字段(第一个字段?)对数据来进行增删改。又由于表有无主键的特性,会引起多次删改
1. 源有主键 -> 尾有主键
自动增删改
2. 源无主键 -> 尾无主键
必须添加 'scan.incremental.snapshot.enabled' = 'false'
才能使用源无主键的情形,否则报错提示需要主键;
2.1. 新增
直接新增
2.2. 修改
- 不会删除原始数据,但新增一条修改后的数据
- 由于未设置主键,可能导致同样 id 的数据都会被修改,如源表中 id 是 1 的有两条,一旦修改它,尾表中会新增两条数据
2.3. 删除
会根据某个字段就行修改,如果字段值非唯一,可能导致同样 id 的数据都会被删除,即可能删除多条
3. 源有主键 -> 尾无主键
行为与 2 源无尾无一致
4. 源无主键 -> 尾有主键
必须添加 'scan.incremental.snapshot.enabled' = 'false'
才能使用源无主键的情形,否则报错提示需要主键;
4.1. 新增
直接新增
4.2. 修改
会根据某个字段就行修改,如果字段值非唯一,同值字段每此修改,都会引起尾表同字段数据变化,如源表中有 2 个 id 为 1 字段,2条数据每此修改,都会引起尾表数据变化
4.3. 删除
会根据某个字段就行修改,如果字段值非唯一,删除其中一条,则会更新为另一条,不会删除多条,如源表中有 2 个 id 为 1 字段,删除其中一条,尾表会修改为另一条,直到 id 为 1 的全部删除,其才会全部删除完