0
比如我要同步一个mysql数据库,里面有很多表,每个表又有很多记录,每个表的数据还在实时变化。 那么如何能够正确全量同步和增量同步呢? 因为在同步全量的时候,数据还在不停的变化,这样会导致增量同步的时候,某些新记录已经在全量同步的时候同步过去了,增量同步的时候又同步了一遍,会导致数据重复或者冗余(如果该记录没有主键或者唯一值等),如何解决这个问题,谢谢!
比如我要同步一个mysql数据库,里面有很多表,每个表又有很多记录,每个表的数据还在实时变化。 那么如何能够正确全量同步和增量同步呢? 因为在同步全量的时候,数据还在不停的变化,这样会导致增量同步的时候,某些新记录已经在全量同步的时候同步过去了,增量同步的时候又同步了一遍,会导致数据重复或者冗余(如果该记录没有主键或者唯一值等),如何解决这个问题,谢谢!
可以借鉴 flink-cdc 的做法, 总体上可以看做是对 binlog 消费做时停, 然后查询出全量分片数据, 在完成一些数据一致性的处理之后, 拼接在 binlog 上之后再重新开始消费
这个感觉太复杂了,而且好像只对有主键的表有效,如果表有主键,可能就不需要这么复杂了。
无主键表可能要全列匹配 + limit 1;有主键的表可以幂等消费:insert -> replace, update -> delete before + replace after