BDR模式删除表重建后会导致CDC不同步

v7.1.2 复现步骤
场景一:
1、 以BDR模式 bdr-mode = true 创建changfeed
2、源端、目标段创建表,源端插入数据,数据正常同步到目标端
3、源端drop table后重建,插入数据后不能进行同步。其他表也不能同步,cdc 任务状态正常。
非BDR模式在上面场景同步没有问题

cdc.txt (8.3 KB)

另外这里有个问题就是 查找ddl操作的tso, admin show ddl jobs显示不出来,需要去日志翻,很是不方便

场景二:
目标端更改tidb_source_id与源端不一致后,CDC不能同步

cdc.log没有报错信息。

bdr-mode = true
[filter]
rules = [‘sbtest.*’]
[mounter]
worker-num = 24

非常感谢您的反馈,我们在调查这个问题,稍后给您反馈。

场景三:
1、目标库提前创建好sysbench的初始化表
2、源库使用sysbench 初始化几张表(建表+插入数据)
3、如果在源库sysbench prepare命令执行前先创建changefeed则插入的数据不能同步到目标库。
4、如果是在sysbench prepare完成create table后开始插入数据时创建changfeed 则数据能同步,只不过由于默认的同步开始ts为当前时间会导致同步过去的数据不完整。

  1. 针对场景一 ,我经过测试得出的结果如下
1. 上下游先建好 t1,t2, t3 三张表
2. 创建 changefeed,开启 bdr 模式,从源端同步到目标端
3. 插入数据到 t1 ,正常同步
4. drop table t2 
5. 继续插入数据到 t1,t3正常同步 ( drop t2 不会影响 t1)
6. drop table t1 
7. create table t1 
8. 插入数据到 t1, 无法正常同步
9.插入数据到 t3, 正常同步(drop t1 不会影响 t3)
9.  pause + resume changefeed ,恢复正常同步

场景 1 目前已找到问题,在修复中。

场景 2 未复现出来,请问能够提供详细的执行步骤吗?
我是这么做的:

  1. 搭建上下游
  2. 创建 changefeed 开启 bdr 模式
  3. 更改上游 sourceID 为 6,下游改为 7
  4. 在上游插入数据
  5. 下游能够看到数据正常插入

先改source_id,然后创建changefeed 。

好 感谢回复,我今天会再测试一下。

今天用7.1.3测试前面描述的几个场景 目前没发现问题