想做 mysql->redis 的实时数据同步,网上也有很多开源项目,不过太重了不适合使用,需要自己搞一个,我们已经有 canal 能接入数据库的变更消息。我想的简单方案:新增一个同步表时,全量扫表一次将数据同步到 redis ,消费 canal->kafka 持续将增量数据同步到 redis ,保证 redis 数据一直为最新,再加上每天运行 1 次全量扫表同步确保没有脏数据。不需要考虑数据删除的问题,业务场景用不到。

在初始化阶段,有个顺序问题困扰我:

如果我先扫表全量同步完成,再启动 canal 消费的增量同步,那么就可能漏数据了,因为扫表期间有可能中间新插入了数据,或者已同步的数据变更了。

如果先开启 canal 消费的增量同步,然后全量扫表同步,我想下了这样是没问题的,不会出现漏数据和数据不一致的情况,但不确定有没有我没考虑到的坑?
举报· 228 次点击
登录 注册 站外分享
1 条回复  
decken 小成 2024-11-14 14:25:33
记录全量同步开始的时间, 然后启动增量,指定刚才的时间, 从这个时间回溯 kafka
返回顶部