本帖最后由 nimotea 于 2023-7-31 15:38 编辑
之前做 logstash 同步 数据库到 es 任务时候,有个类似的情况。
当然会对要同步的系统有些限制,这里只说方案,就暂时不考虑其他限制,以下描述中以A数据库表示对应接口的数据库,B数据库表示 我们要实现同步的本地数据库
1. A 数据库实现 最新更新时间字段,当 upsert 发生时都会生成当前时间作为该更新字段的值
2. B 数据库去存一个上次更新时间
3. 系统开始同步任务
① 获取本地上次更新时间
② 获取A系统中 最新更新时间 大于本地更新日期的数据
③ 使用Task 任务 批量 upsert 获取到的数据 到 B 数据库,更新本地上次更新时间
注: 这个思路其实是在 正文中提到的 小更新机制的 另一种体现,将大任务拆解为多次小任务,当然 为了避免漏数,再设置 上次更新时间时,尽量做到时间窗口的一部分重合。还有就是 Delete 需要实现软删除,硬删除就处理不了了。
|