DM分表合并主键冲突

为提高效率,提问时请尽量提供详细背景信息,问题描述清晰可优先响应。以下信息点请尽量提供:

  • 系统版本 & kernel 版本】 系统版本:CentOS 7.3 内核版本:3.10.0-514.21.1.el7.x86_64
  • TiDB 版本】 v2.1.15
  • DM 版本】 v1.0.1
  • 磁盘型号
  • 集群节点分布
  • 数据量 & region 数量 & 副本数
  • 问题描述(我做了什么)】 用DM同步MySQL分表到TiDB总表,消除自增主键冲突的时候,用你们官网推荐的方式(非Column mapping),但是check-task的时候通过不了,需要怎么配置呢?

上游分表表结构:

CREATE TABLE `user_card_pack_0` (
 `id` bigint(20) NOT NULL AUTO_INCREMENT,
 `bid` bigint(20) NOT NULL COMMENT '代码中生成的唯一id',
 `user_id` bigint(20) NOT NULL COMMENT '用户id',
 `type` int(11) NOT NULL DEFAULT '0' COMMENT '类型,0-普通抽卡券,1-彩蛋券',
 `card_pack_id` bigint(20) NOT NULL COMMENT '卡包id',
 `subject_id` bigint(20) NOT NULL COMMENT '获取该卡包时,该卡包是与哪个专题绑定的',
 `comic_topic_id` bigint(20) NOT NULL DEFAULT '0' COMMENT '冗余字段,存储专题对应的漫画topicId',
 `source` int(11) NOT NULL COMMENT '枚举',
 `status` int(11) NOT NULL COMMENT '购买中,未打开,已打开',
 `cur_date` int(11) NOT NULL,
 `create_time` bigint(20) NOT NULL,
 `update_time` bigint(20) NOT NULL,
 PRIMARY KEY (`id`),
 UNIQUE KEY `uk_bid` (`bid`),
 KEY `idx_uid_cardpack_id_status` (`user_id`,`card_pack_id`,`status`),
 KEY `idx_uid_subject_id_status` (`user_id`,`subject_id`,`status`),
 KEY `idx_uid_status` (`user_id`,`status`,`subject_id`),
 KEY `idx_uid_comic_status` (`user_id`,`status`,`comic_topic_id`),
 KEY `idx_uid_type_source` (`user_id`,`type`,`source`),
 KEY `idx_subject_id_type_status` (`subject_id`,`type`,`status`)
 ) ENGINE=InnoDB AUTO_INCREMENT=553519 DEFAULT CHARSET=utf8;

TiDB总表表结构:

CREATE TABLE `user_card_pack` (
`id` bigint(20) NOT NULL,
`bid` bigint(20) NOT NULL COMMENT '代码中生成的唯一id',
`user_id` bigint(20) NOT NULL COMMENT '用户id',
`type` int(11) NOT NULL DEFAULT '0' COMMENT '类型,0-普通抽卡券,1-彩蛋券',
`card_pack_id` bigint(20) NOT NULL COMMENT '卡包id',
`subject_id` bigint(20) NOT NULL COMMENT '获取该卡包时,该卡包是与哪个专题绑定的',
`comic_topic_id` bigint(20) NOT NULL DEFAULT '0' COMMENT '冗余字段,存储专题对应的漫画topicId',
`source` int(11) NOT NULL COMMENT '枚举',
`status` int(11) NOT NULL COMMENT '购买中,未打开,已打开',
`cur_date` int(11) NOT NULL,
`create_time` bigint(20) NOT NULL,
`update_time` bigint(20) NOT NULL,
KEY `idx_id` (`id`),
UNIQUE KEY `bid` (`bid`),
KEY `idx_uid_cardpack_id_status` (`user_id`,`card_pack_id`,`status`),
KEY `idx_uid_subject_id_status` (`user_id`,`subject_id`,`status`),
KEY `idx_uid_status` (`user_id`,`status`,`subject_id`),
KEY `idx_uid_comic_status` (`user_id`,`status`,`comic_topic_id`),
KEY `idx_uid_type_source` (`user_id`,`type`,`source`),
KEY `idx_subject_id_type_status` (`subject_id`,`type`,`status`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin;

check-task异常报错:

配置文件:

  • 关键词

麻烦上传下配置文件,多谢

你好,官网按照如下方式处理:https://pingcap.com/docs-cn/v3.0/reference/tools/data-migration/usage-scenarios/best-practice-dm-shard/#

可以具体描述一下 你按照官网推荐进行了哪些操作?操作后的表结构是什么样的?

MySQL分表的表结构和TiDB创建好的表结构我上面已经更新在问题当中了,谢谢

请把上游表结构也改成和tidb表结构一致的状态

好的,了解了,多谢