【潘森教育】业务系统数据库
2025-05-11
最近在工作中,遇到了这样一个业务场景,我们需要关注一个业务系统数据库中某几张表的数据,当数据发生新增或修改时,将它同步到另一个业务系统数据库中的表中。
一提到数据库的同步,估计大家第一时间想到的就是基于 binlog 的主从复制了,但是放在我们的场景中,还有几个问题:
第一,并不是需要复制所有表的数据,复制对象只有少量的几张表
第二,也是比较麻烦的,两个业务系统数据库表结构可能不一致。例如,要同步数据库 1 的 A 表中的某些字段到数据库 2 的 B 表中,在这一过程中,A 表和 B 表的字段并不是完全相同
这样的话,我们只能通过代码的方式,首先获取到数据库 1 表中数据的变动,再通过手动映射的方式,插入到数据库 2 的表中。但是,获取变动数据的这一过程,还是离不开 binlog,因此我们就需要在代码中对 binlog 进行一下监控。
先说结论,我们最终使用了一个开源工具 mysql-binlog-connector-java,用来监控 binlog 变化并获取数据,获取数据后再手动插入到另一个库的表中,基于它来实现了数据的同步。