【TiDB 使用环境】生产环境
【TiDB 版本】V7.5.1
【操作系统】
【部署方式】
【集群数据量】
【集群节点数】
【问题复现路径】
【遇到的问题:】
上游mysql 5.7.25 。通过dm同步数据时,出现 “ErrCode”: 36027 。
这个有问题的表原来上游有59个列,下游61个列。通过官方资料https://docs.pingcap.com/zh/tidb/stable/migrate-with-more-columns-downstream/#上游表结构
得到解决。后来任务根据需要就停止了。
昨天晚上在上游表中又加了一个列,上游列数达到60个 。然后把TIDB的同步任务打开,就出现了这次的提示 。
处置过程:
还是按照官方资料操作步骤(上次已经操作过一次)进行处理 ,
tiup dmctl --master-addr 192.168.xxx.xxx:8261 binlog-schema update -s mysql50130 ycspt50130new DB1 agency_XXXX_info --from-source
tiup dmctl --master-addr 192.168.xxx.xxxx:8261 resume-task ycspt50130new
tiup dmctl --master-addr 192.168.xxx.xxxx:8261 query-status ycspt50130new
问题依旧
然后就换了一种方法,在上游执行 show create table agency_XXXX_info 。生成一个SQL。
执行
tiup dmctl --master-addr 192.168.xxx.xxxx:8261 binlog-schema update -s mysql50130 ycspt50130new DB1 agency_XXXX_info DB1.agency_XXXX_info.sql
tiup dmctl --master-addr 192.168.xxx.xxxx:8261 resume-task ycspt50130new
tiup dmctl --master-addr 192.168.xxx.xxxx:8261 query-status ycspt50130new
问题依旧
然后又执行
tiup dmctl --master-addr 192.168.xxx.xxxx:8261 binlog-schema delete -s mysql50130 ycspt50130new DB1 agency_XXXX_info
tiup dmctl --master-addr 192.168.xxx.xxx:8261 binlog-schema update -s mysql50130 ycspt50130new DB1 agency_XXXX_info --from-source
tiup dmctl --master-addr 192.168.xxx.xxxx:8261 resume-task ycspt50130new
tiup dmctl --master-addr 192.168.xxx.xxxx:8261 query-status ycspt50130new
问题依旧。
最后直接把TIDB中的表drop掉,用上游表结构直接创建新表,停掉任务,重启开启,还是提示同样的错误,可是这时上下游的表结构是一样的 。
已知的招数都用了,麻烦大佬指点!
【资源配置】**
【复制黏贴 ERROR 报错的日志】
"ErrCode": 36027,
"ErrClass": "sync-unit",
"ErrScope": "internal",
"ErrLevel": "high",
"Message": "startLocation: [position: (mysql57-bin.003975, 803093), gtid-set: 00000000-0000-0000-0000-000000000000:0], endLocation: [position: (mysql57-bin.003975, 804198), gtid-set: 00000000-0000-0000-0000-000000000000:0]: gen insert sqls failed, sourceTable: `DB1.`agency_XXX_info`, targetTable: `DB1`.`agency_XXX_info`: Column count doesn't match value count: 60 (columns) vs 59 (values)",
"RawCause": "",
"Workaround": "Please check the log files to see if a related DDL has been skipped, and you could use `operate-schema` to get and set the table structure."
【其他附件:截图/日志/监控】