如下是我在TIDB下面创建的一个表,然后在create changefeed的时候说该表不能被replicate. 请问DDL有啥问题。 该表有唯一索引
CREATE TABLE db2rp
(
subsystem
char(6) NOT NULL,
start_date
char(10) NOT NULL,
start_time
char(8) NOT NULL,
corrname
char(20) NOT NULL,
occurrence
bigint(20) DEFAULT NULL,
db2cl2time
decimal(20,6) DEFAULT NULL,
db2cl2cpu
decimal(20,6) DEFAULT NULL,
db2cl2cpuse
decimal(20,6) DEFAULT NULL,
dmlall
bigint(20) DEFAULT NULL,
pkcl7cputime
decimal(20,6) DEFAULT NULL,
pkcl7cputimese
decimal(20,6) DEFAULT NULL,
pkcl7time
decimal(20,6) DEFAULT NULL,
pkgcl8time
decimal(20,6) DEFAULT NULL,
pkgcollid
char(10) DEFAULT NULL,
pkgcorrren
bigint(20) DEFAULT NULL,
pkgname
char(20) DEFAULT NULL,
KEY start_date
(start_date
,start_time
,subsystem
)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin
同步限制
使用 TiCDC 进行同步的时候,请注意以下相关限制要求以及暂不支持的场景。
有效索引的相关要求
TiCDC 只能同步至少存在一个有效索引的表,有效索引的定义如下:
- 主键 (
PRIMARY KEY
) 为有效索引。 - 同时满足下列条件的唯一索引 (
UNIQUE INDEX
) 为有效索引:- 索引中每一列在表结构中明确定义非空 (
NOT NULL
)。 - 索引中不存在虚拟生成列 (
VIRTUAL GENERATED COLUMNS
)。
- 索引中每一列在表结构中明确定义非空 (
TiCDC 从 4.0.8 版本开始,可通过修改任务配置来同步没有有效索引的表,但在数据一致性的保证上有所减弱。具体使用方法和注意事项参考同步没有有效索引的表。
我这个索引列也是非空,为什么同步不了呢?
具体报错发下看看
[WARN] some tables are not eligible to replicate, []model.TableName{model.TableName{Schema:“zm”, Table:“db2rp”, TableID:0, IsPartition:false}}
Could you agree to ignore those tables, and continue to replicate [Y/N]
参考楼上发的
你的不是唯一索引