上游字段变更导致 DM 同步报错

你们可以再测试一下呀

首先 DM 1.1.0 版本还不稳定,建议线上使用 稳定版本,比如 1.0.3;

目前是想确认一下 MySQL binlog 里的内容和上游实际执行的 pt-osc 操作,因为有个建表语句直接是 create table varchar(64),这边需要确认一下。

image DM这么查看版本没错吧

是的。


以上就是mysql中的binlog,MySQL用PT-OSC修改的表结构,PT修改的过程都会记录再binlog里面,先创建个原表一样的表结构,然后修改新表的为64,再创建触发器,拷贝数据,最后改名
这个是dm-worker的日志之前就有修改新表的表结构记录啊

好的,因为比较疑问 create table 语句中 varchar 已经修改为 64,明天我尝试复现下,如果不能复现,就辛苦我们这边提供下 mysqlbinlog 那段时间的解析文件。辛苦

我这边用 dm 1.0.2 版本进行操作,没有复现出上述问题。首先使用 pt-online-schema 去给表更改字段,从 varchar(20) 改小,改成 varchar(10),从 mysqlbinlog 中也查看了一些,基本上也没有查到 create table 字段为修改后的字段类型的相关 binlog,所以需要您这边查一下 binlog 中这个位点的操作。


另外,推荐使用 1.0.3 稳定版本,如果比较多的 pt 操作上游的话,在 task 中配置

下周 我再重新测试一下

上游更改字段的大小还比较频繁,也就是说上游用pt工具修改有损变更的字段,下游tidb是可以的,但是我前天上游使用pt工具修改之后,DM是中断了,然后sql skip跳过了之后,tidb中的表才同步和mysql字段大小一致

我们这边有几点建议,辛苦看下

  • 1.目前 DM 稳定版本为 1.0.3,请更换到稳定版本,1.1.0-alpha 暂时是不稳定的版本,可能会有难以预测的问题
  • 2.pt 操作比较多的话,需要在配置文件中配置 online-ddl-scheme: “pt”,目前 rename 多表改名 目前还是不支持 osc 的时候有些问题。

好吧 。

:+1:

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