使用DM组件进行多表合并时报错

【TiDB 使用环境】测试/ Poc
【TiDB 版本】8.5.1
【操作系统】centos7.9

报错信息如下:
{
“severity”: “fail”,
“short_error”: “sourceID test-mysql-replica-01 table {my_test test_01} of sharding my_test.test have auto-increment key, please make sure them don’t conflict in target table!”
},
{
“severity”: “warn”,
“short_error”: “table my_test.test_01 upstream has more PK or NOT NULL UK than downstream, index name: PRIMARY, columns: [id]”
}

这解释的挺清楚的啊。 my_test .test是自增id,在分表分库合并的时候有可能冲突。

https://docs.pingcap.com/zh/tidb/stable/shard-merge-best-practices/#跨分表数据在主键或唯一索引冲突处理

参考这个文档。

我是按照文档操作的,下游表的主键id已经改为普通索引,并且配置文件中加了ignore-checking-items: [“auto_increment_ID”]。但是在check-task的时候还是报这个错呢

我不知道你为啥加了这个还是报这个错。但你加这个,显然只是为了让这个task建立成功,离着真实的使用场景还有距离。
我不信真实的同步场景,你仅仅只想忽略这个错误,任由数据在下游相互覆盖。

https://docs.pingcap.com/zh/tidb/stable/dm-table-routing/#配置表路由

# extract-table、extract-schema 和 extract-source 为可选配置,仅在需要提取分表、分库和数据源信息时填写
extract-table:
  table-regexp: "t_(.*)"
  target-column: "c_table"
extract-schema:
  schema-regexp: "test_(.*)"
  target-column: "c_schema"
extract-source:
  source-regexp: "(.*)"
  target-column: "c_source"

你可以考虑一下这个方案,在下游多加3列 c_table,c_schema,c_source,这3列和自增id在下游组成联合主键。

这样就不会冲突了。

好的,感谢回复,我在试试