Skip to content

表字段位置改变,数据同步错乱 #1626

@alynnchen

Description

@alynnchen

environment

  • canal version v1.1.3
  • mysql version v5.7.20
  • kafka version v1.0

Issue Description

在同步mysql数据时,如果移动表字段位置,canal只捕获alter操作但没有处理,导致数据同步错乱。在canal --> kafka、adapter的hbase 均重现该问题

Steps to reproduce

比如重现步骤:

1. 创建了一个hello库quniya4表
2. 表里有三个字段(name,value,id)
3. 我先建的name,value,最后建的id主键自增。现在我把id的位置移动到name、value的上面,
   也就是说id的字段位置变成了 frist,现在的表字段位置为(id,name,value)
4. 我插入数据(1,a,aaa)=> (aaa,1,a) ; name变成了1,value变成了a,
   而id还是没有移动位置前的第三位,所以kafka消费这条数据时id=aaa,hbase亦是如此

Expected behaviour

kafka预期显示:

{"data":[{"id":"1","name":"a","value":"aaa"}]      ...}

Actual behaviour

kafka结果显示:

{"data":[{"name":"1","value":"a","id":"aaa"}],"database":"hello","es":1553330817000,"id":20,"isDdl":false,"mysqlType":{"name":"varchar(255)","value":"varchar(255)","id":"int"},"old":null,"pkNames":["id"],"sql":"","sqlType":{"name":4,"value":12,"id":12},"table":"quniya4","ts":1553330817903,"type":"INSERT"}

hbase结果显示:

hbase(main):009:0> scan 'hello.quniya4'
ROW                 COLUMN+CELL                                          
 ccc|3              column=cf:id, timestamp=1553331439400, value=ccc     
 ccc|3              column=cf:name, timestamp=1553331439400, value=3     
 ccc|3              column=cf:value, timestamp=1553331439400, value=c

Metadata

Metadata

Assignees

Labels

Type

No type

Projects

No projects

Milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions