同步了一张11966733条数据的表到mysql,用的ALL模式,同步期间oracle库无操作,同步完成进入增量模式后 查mysql那个表记录数为11941943,少了24790条。用CHECK模式运行了下check.log里确实检查出了这些没过去的行。 试了两次都会少几万条,但少的条数不完全一样。全量时看这张表对应的table.log会一直报com.mysql.jdbc.exceptions.jdbc4.MySQLIntegrityConstraintViolationException: Duplicate entry '6337315' for key 'PRIMARY'
at sun.reflect.GeneratedConstructorAccessor12.newInstance(Unknown Source) ~[na:na]
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) ~[na:1.7.0_67]
但是报的这些主键也成功写到mysql里了。
PS:
原因可能是联合唯一索引造成的,我把mysql表上这个索引删了,只留了个主键的,数据就没丢了---
但原来oracle表上是有这个索引的,数据肯定没问题,,还没想到为啥多这个索引会导致数据丢失。。
3条答案
按热度按时间bnl4lu3b1#
多主键索引可能导致部分数据重复,出现主键约束冲突时,我们会认为是重复同步直接忽略了
bq8i3lrv2#
是否可以迁移没有主键的表的数据
moiiocjp3#
可以迁移无主键表,就是任务不能暂停,如果一旦重启目标数据就会重复,可以在每次启动之前清空目标库