当前位置:网站首页>tidb-cdc日志tables are not eligible to replicate

tidb-cdc日志tables are not eligible to replicate

2022-06-11 17:19:00 与数据交流的路上

一、背景

新建了一个cdc同步的任务,上游为tidb,下游为mysql,但是发现一些新建的表并不能同步到下游mysql中

二、排查

1.查看日志

# 内容如下这表明这个表不满足同步条件
tables are not eligible to replicate

2.cdc同步的限制

TiCDC 只能同步至少存在一个有效索引的表,有效索引的定义如下:

  • 主键 (PRIMARY KEY) 为有效索引。
  • 同时满足下列条件的唯一索引 (UNIQUE INDEX) 为有效索引:
    • 索引中每一列在表结构中明确定义非空 (NOT NULL)。
    • 索引中不存在虚拟生成列 (VIRTUAL GENERATED COLUMNS)。

三、解决办法

方案一、创建满足cdc同步条件的表

方案二、更改cdc为可以同步无有效索引的表

1.停止任务

tiup ctl:v4.0.15 cdc changefeed pause --pd=http://pd_ip:pd_port --changefeed-id=simple-replication-task

2.修改cdc任务配置文件

vim cdc.yaml
# 添加如下配置
enable-old-value = true
force-replicate = true

3.修改配置

tiup ctl:v4.0.15 cdc changefeed  update --pd=http://pd_ip:pd_port --config=./cdc.yaml --changefeed-id=simple-replication-task

4.启动cdc任务

tiup ctl:v4.0.15 cdc changefeed resume --pd=http://pd_ip:pd_port --changefeed-id=simple-replication-task

5.注意点
enable-old-value v4.0.5开始支持
force-replicate v4.0.8开始支持
对于没有有效索引的表,INSERT 和 REPLACE 等操作不具备可重入性,因此会有数据冗余的风险。TiCDC 在同步过程中只保证数据至少分发一次,
因此开启该特性同步没有有效索引的表,一定会导致数据冗余出现。如果不能接受数据冗余,建议增加有效索引,譬如增加具有 AUTO RANDOM 属性的主键列。

官网文档:文档地址

原网站

版权声明
本文为[与数据交流的路上]所创,转载请带上原文链接,感谢
https://blog.csdn.net/line_on_database/article/details/124985896