tidm同步mysql数据报错

为提高效率,请提供以下信息,问题描述清晰能够更快得到解决:

【TiDB 版本】4.0.8
dm 2.0
【问题描述】
mysql 建表sql: CREATE TABLE make_model_super202 (
id int(11) GENERATED ALWAYS AS (json_unquote(json_extract(ext,’$.id’))) STORED NOT NULL,
name varchar(40) GENERATED ALWAYS AS (trim(json_unquote(json_extract(ext,’$.name’)))) STORED NOT NULL,
network varchar(10) GENERATED ALWAYS AS (json_unquote(json_extract(ext,’$.wangluo’))) VIRTUAL NOT NULL,
make varchar(150) GENERATED ALWAYS AS (json_unquote(json_extract(ext,’$.pinpai’))) STORED NOT NULL,
model varchar(150) GENERATED ALWAYS AS (json_unquote(json_extract(ext,’$.jixing’))) STORED NOT NULL,
crdate datetime NOT NULL DEFAULT CURRENT_TIMESTAMP,
ts timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
ext text NOT NULL,
PRIMARY KEY (id),
KEY crdate (crdate),
KEY ts (ts)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
通过dm 同步到tidb,好像有问题,手动在tidb上执行上述sql;
然后从mysql插入,一条数据,同步依然报错,信息如下:
“Message”: “startLocation: [position: (db165.182183, 533850403), gtid-set: ], endLocation: [position: (db165.182183, 533850712), gtid-set: ]: gen insert sqls failed, schema: ex_public, table: make_model_super202: Column count doesn’t match value count: 4 (columns) vs 8 (values)”,

另外,在上述sql上将ext 类型换成json的话,navicate打开表时只显示7个列,并不是8个,我们是先用的json,json同步报错,才变成的text,修改后navicate显示的是8列

插入数据sql如下: INSERT INTO make_model_super202 VALUES (1, ‘dd’, ‘333’, ‘a’, ‘3444’, ‘2021-1-27 20:51:44’, ‘2021-1-27 20:51:44’, ‘{“id”: 1, “pinpai”: “a”, “name”: “dd”, “wangluo”: “333”, “jixing”: “3444”, “lianjie”: “”, “beizhu”: “”, “tijiao_name”: “”, “shenhe_name”: “”, “shenhe”: 0, “time”: “2020-10-15 03:45:29”, “create_time”: null, “update_time”: null, “delete_time”: 0 }’);


若提问为性能优化、故障排查类问题,请下载脚本运行。终端输出的打印结果,请务必全选并复制粘贴上传。

你好,可以使用 DM 2.0.1,下游 TiDB 4.0.10 进行数据同步么?我这边测试了一下同步是正常的/

mysql

query-status 状态

下游 TiDB 数据可以查到

我现在的版本是v2.0.0,怎么升级到2.0.1呢?升级的话会影响我现在的同步任务吗,我现在的节点是3个master,2个worker,其中一个worker是free的。 我的mysql版本是5.7.20,tidb版本是4.0.8,请问您可以试试将ext字段换成json的时候是否可以吗? 我写错了,我的dm版本是1.3.0,dmctl版本是2.0.0,抱歉

1.升级可参考官网使用 TiUP 升级
https://docs.pingcap.com/zh/tidb-data-migration/stable/maintain-dm-using-tiup#滚动升级

2.升级建议在业务低峰期操作,滚动升级过程中尽量保证对前端业务透明、无感知,其中对不同节点有不同的操作。

3.dm 没有 1.3.0 版本,1.3.0 是 TiUP 的版本,可以通过 tiup dm list 来查看 dm 的版本

好的,我升级试试,升级完就好了,多谢老师啦,真棒:grinning:

:handshake::handshake:

老师,我昨晚上看监控,发现已经都不能使用了,麻烦您看看怎么解决

1.新问题麻烦开新帖。
2.监控问题为已知问题,asktug 搜索一下临时解决方案,等 tiup 发布 1.3.2 后升级即可。

好的,谢谢老师,问题已经解决:smiley:

:ok_hand:

此话题已在最后回复的 1 分钟后被自动关闭。不再允许新回复。