新老系统数据同步方案

最近业务涉及老系统重构需求,新老系统需要并行运行一段时间,给用户一个过渡期。由于新系统和老系统的数据表结构无法兼容,所以无法直接使用老系统的数据库,只能重新设计。那么就需要保持新老业务系统之间数据必须是同步的。

问题来了,怎么让两个业务系统的数据能够尽可能保持实时同步?

目前想到了4个方案:

  1. 双库MySQL bin-log监听
  2. 双库建立触发器
  3. 数据库上层封装数据查询API
  4. 业务系统操作实时通知

各个业务方案有什么优缺点?

1. 双库MySQL bin-log监听

监听MySQL bin-log 方式,实时将记录变更同步到双库。

优点:

  • 不侵入业务系统
  • 同步速度快
  • 独立设计开发

缺点:

  • 开发难度大,要熟悉MySQL Replication 协议
  • 依赖MySQL数据库版本
  • MySQL Binlog 三种模式,需要确定一种模式
  • 识别业务复杂

2. 双库建立触发器

对所有数据库表增加触发器,有变更则将所有变更记录添加到变更表。

优点:

  • 可以实时记录所有变更

缺点:

  • 对一个具有上百张表的数据库创建触发器,增加维护复杂度
  • 触发器违反了公司的数据库规约

3. 数据库上层封装数据查询API

增加对所有表/业务查询的API封装,一条条来对比数据变更。

优点:

  • 开发及其简单

缺点:

  • 实时性根本无从谈起
  • 速度无法保证。单张表数据千万级,一页页查询要猴年马月去了

4. 业务系统操作实时通知

业务层将事件通知到业务系统

优点:

  • 业务识别明确

缺点:

  • 老系统N个服务,每个服务都在变更数据,需要做大量的业务代码更改
上一篇:一个Java crash问题解决


下一篇:团队协作工具