大家好,最近看到有小伙伴问到 数据迁移后,数据一致性校验用自动化怎么做,如下图:
于是乎,我就直接开源了我之前自研的自动化校验新老数据库数据一致性工具,希望能对他产生一点帮助,
代码仓库地址:
https://github.com/lv1792017548/two-data-source-check.git
但是这个工具具体使用了那些技术呢?且听我下文详细介绍。
一、背景
数据一致性校验时有发生,如果光靠人工肉眼去比对,一方面效率低下,另一方面人工校验难免会出现疲乏,厌倦情绪,容易出现校验错误。
这款工具解决新老系统采购单数据校验因人工肉眼检验效率低下问题。实现新老系统采购单数据自动化校验,
二、工具使用技术
1.springboot框架
springboot的优点不言而喻,方便集成其他框架。
2. mybatis-plus
java领域流行的orm框架,操作数据库
3. mysql
采购单服务采用的数据库,最重要的就是开源
4、canal
canal 是阿里巴巴旗下的一款开源项目,纯Java开发。基于数据库增量日志解析,提供增量数据订阅&消费,目前主要支持了MySQL(也支持mariaDB)。
基本上都是当前java常用的技术。
三、业务数据流转
新系统页面对采购单数据的增删改查操作 ,一方面落入新采购单数据库,另外会同步一份到老采购单数据库。
四、工具实现逻辑
v1:工具对外暴露的匹配接口,用户在页面提交一个采购单数据后,调用匹配接口,传入用采购单的编号,工具后端会用这笔采购单编号,去新库查询一条采购单信息,再去老库去查询一条采购单信息,然后进行字段校验,若字段完全一致接口返回校验通过,如果字段不一致,接口会返回不一致的字段。避免了,人工肉眼去校验新老数据库的数据一致性
v2:springboot集成 canal,监听新库的binlog(前提是,采购单落入新库和老库是原子操作,也就意味着,新库有binlog产生,那么老库理论上也会有对应的采购单产生),一旦监听新库有新的采购单binlog(包含采购单编号),会直接去新库查询一条采购单信息,再去老库查询一条采购单信息,然后进行字段校验,校验结果会在钉钉群里发布。
不同之处,v1版本需要用户自己手动调用接口,传入采购单编号,才能获取最终的匹配结果,v2代替了v1的手动操作,用户提交一条采购单数据以后,静等钉钉群消息返回的结果即可。大大提高的测试效率
五、代码主体结构
六、安装
-
下载所需文件, 里面有 canal 、 starter-canal-0.0.1-SNAPSHOT.jar 。链接如下,如失效,添加文末微信获取 https://pan.baidu.com/s/1R9PIB52OMNBh3Rx4jROWYA?pwd=hicd
-
安装搭建canal服务端 https://blog.csdn.net/Ren_1760217692/article/details/126620250
-
下载 starter-canal-0.0.1-SNAPSHOT.jar ,maven下载不了jar,需要 手动执行以下命令
mvn install:install-file -DgroupId=com.xpand -DartifactId=starter-canal -Dversion=0.0.1-SNAPSHOT -Dpackaging=jar -Dfile=D:\starter-canal-0.0.1-SNAPSHOT.jar
ps :注意 Dfile 的路径
-
安装mysql 5.7版本
七、适用场景
1、新产生的数据,新老数据库一致性校验。
2、老库迁移新库后,数据一致性校验(待完善)。
八、校验逻辑关键类解析
最后:下方这份完整的软件测试视频学习教程已经整理上传完成,朋友们如果需要可以自行免费领取【保证100%免费】
软件测试面试文档
我们学习必然是为了找到高薪的工作,下面这些面试题是来自阿里、腾讯、字节等一线互联网大厂最新的面试资料,并且有字节大佬给出了权威的解答,刷完这一套面试资料相信大家都能找到满意的工作。