-
Notifications
You must be signed in to change notification settings - Fork 7.7k
Closed
Description
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
Reactions are currently unavailable