杂记-Flink CDC

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 的全部删除,其才会全部删除完