基于绑定接口和Binlog日志实现数据恢复的方法及系统
文献发布时间:2023-06-19 11:45:49
技术领域
本申请涉及接口测试技术领域,尤其涉及一种基于绑定接口和Binlog日志实现数据恢复的方法及系统。
背景技术
在接口测试过程中如果用户的实际操作行为实行后未达到预期,进行排查过程时需要通过数据恢复进行情景再现,但是往往由于部分表数据已经改变,重新创建当时的数据场景需要花费很长时间,有时还未必能恢复如初,不利于问题的高效排查以及后续的验证。现阶段的测试过程中需要场景再现时,一般需要反复重复相同操作步骤,营造尽可能相同的数据场景,或者通过特定的手段比如接口自动化,或者sql语句进行充分的数据库干预,无论哪种方式,都是针对个案的特定场景特定处理,很难精准的恢复到到当时的场景节点。
发明内容
为至少在一定程度上克服相关技术中进行数据恢复需要大量人力资源且无法精准进行数据恢复的问题,本申请提供一种基于绑定接口和Binlog日志实现数据恢复的方法及系统。
本申请的方案如下:
根据本申请实施例的第一方面,提供一种基于绑定接口和Binlog日志实现数据恢复的方法,包括:
在接收数据检索请求时,根据所述数据检索请求在本地数据库中检索对应的value数据;
从检索到的所述value数据中提取数据表变化的详细信息;
在接收到确认恢复请求时,根据所述数据表变化的详细信息进行数据恢复;
其中,所述数据检索请求至少包括:单条value数据,或,需要恢复的数据的动作流水id,或,需要恢复的数据的接口流水id;
所述value数据是将系统中的处理动作触发的Binlog日志按照key-value格式存储到本地数据库并关联所述处理动作对应的动作流水id,接口流水id和value数据产生的。
优选的,在本申请一种可实现的方式中,还包括:
接收用户设置的配置内容,维护动作信息,动作关联接口和接口关联的数据表;
所述配置内容至少包括:动作名称,动作唯一码,动作绑定的接口,以及接口绑定的数据表。
优选的,在本申请一种可实现的方式中,还包括:
基于预先设置的配置内容,实时监控系统的动作日志,接口日志及对应的Binlog日志。
优选的,在本申请一种可实现的方式中,还包括:
在监控到系统中的处理动作发生后,将所述处理动作触发的Binlog日志以key-value格式进行缓存;其中,所述Binlog日志包括:数据变动的信息;所述key-value格式的key值为所述处理动作对应的接口流水id,所述key-value格式的value数据为所述处理动作对应的接口绑定的数据表变化的详细信息。
优选的,在本申请一种可实现的方式中,还包括:
将key-value数据传输落库到本地数据库,根据所述key-value数据的key值为所述key-value数据的value数据绑定对应的接口流水id;
根据预先设置的配置内容,监控并记录动作流水id和接口流水id的数据关系,根据所述动作流水id和接口流水id的数据关系,为所述key-value数据的value数据绑定对应的动作流水id。
优选的,在本申请一种可实现的方式中,还包括:
根据所述处理动作的触发时间进行校验,确定由所述处理动作触发的Binlog日志被缓存,非相关动作触发的Binlog日志不被缓存。
优选的,在本申请一种可实现的方式中,所述在接收到确认恢复请求时,根据所述数据表变化的详细信息进行数据恢复,具体包括:
在接收到确认恢复请求时,在所述数据表变化的详细信息中提取变化前数据,并写入sql脚本,将所述变化前数据置为即将更新的值进行数据恢复。
优选的,在本申请一种可实现的方式中,还包括:
完成数据恢复后,对应修改各处理动作记录的状态。
优选的,在本申请一种可实现的方式中,在进行数据恢复时,只根据最新记录的处理动作进行恢复,历史记录的处理动作不执行恢复。
根据本申请实施例的第二方面,提供一种基于绑定接口和Binlog日志实现数据恢复的系统,包括:
数据搜索模块,用于在接收数据检索请求时,根据所述数据检索请求在本地数据库中检索对应的value数据;
数据恢复模块,用于从检索到的所述value数据中提取数据表变化的详细信息;在接收到确认恢复请求时,根据所述数据表变化的详细信息进行数据恢复;
其中,所述数据检索请求至少包括:单条value数据,或,需要恢复的数据的动作流水id,或,需要恢复的数据的接口流水id;
所述value数据是将系统中的处理动作触发的Binlog日志按照key-value格式存储到本地数据库并关联所述处理动作对应的动作流水id,接口流水id和value数据产生的。
本申请提供的技术方案可以包括以下有益效果:在接收数据检索请求时,根据数据检索请求在本地数据库中检索对应的value数据;其中,数据检索请求至少包括:单条value数据,或,需要恢复的数据的动作流水id,或,需要恢复的数据的接口流水id;value数据是将系统中的处理动作触发的Binlog日志按照key-value格式存储到本地数据库并关联处理动作对应的动作流水id,接口流水id和value数据产生的。Binlog日志是用来监听数据库变化的日志,会记录数据库表中每一个表的变化前数据和变化后数据。本申请中,从检索到的value数据中提取数据表变化的详细信息,由于数据表变化的详细信息中包括变化前数据和变化后数据,在接收到确认恢复请求时,根据数据表变化的详细信息进行数据恢复即可进行场景重现。
应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本申请。
附图说明
此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本申请的实施例,并与说明书一起用于解释本申请的原理。
图1是本申请一个实施例提供的基于绑定接口和Binlog日志实现数据恢复的方法的流程示意图;
图2是本申请另一个实施例提供的基于绑定接口和Binlog日志实现数据恢复的方法的流程示意图;
图3是本申请一个实施例提供的基于绑定接口和Binlog日志实现数据恢复的系统的结构示意图;
图4是本申请一个实施例提供的基于绑定接口和Binlog日志实现数据恢复的设备的结构示意图。
附图标记:数据搜索模块-31;数据恢复模块-32;监控处理模块-33;配置模块-34;缓存模块-35;存储模块-36;处理器-41;存储器-42。
具体实施方式
这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本申请相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本申请的一些方面相一致的装置和方法的例子。
一种基于绑定接口和Binlog日志实现数据恢复的方法,参照图1,包括:
S11:在接收数据检索请求时,根据数据检索请求在本地数据库中检索对应的value数据;
S12:从检索到的value数据中提取数据表变化的详细信息;
S13:在接收到确认恢复请求时,根据数据表变化的详细信息进行数据恢复;
具体的,在接收到确认恢复请求时,在数据表变化的详细信息中提取变化前数据(before),并写入sql脚本,将变化前数据置为即将更新的值进行数据恢复。
其中,数据检索请求至少包括:单条value数据,或,需要恢复的数据的动作流水id,或,需要恢复的数据的接口流水id;
value数据是将系统中的处理动作触发的Binlog日志按照key-value格式存储到本地数据库并关联处理动作对应的动作流水id,接口流水id和value数据产生的。
Binlog日志用来监听数据库变化,会记录数据库表每一个表的变化前数据(before)和变化后数据(after)。
key-value格式的分布式存储系统查询速度快、存放数据量大、支持高并发,非常适合通过主键进行查询。Key-value数据库是一种以键值对存储数据的一种数据库,类似Java中的map。可以将整个数据库理解为一个大的map,每个键都会对应一个唯一的值。
在接收数据检索请求时,根据数据检索请求在本地数据库中检索对应的value数据;其中,数据检索请求至少包括:单条value数据,或,需要恢复的数据的动作流水id,或,需要恢复的数据的接口流水id;value数据是将系统中的处理动作触发的Binlog日志按照key-value格式存储到本地数据库并关联处理动作对应的动作流水id,接口流水id和value数据产生的。Binlog日志是用来监听数据库变化的日志,会记录数据库表中每一个表的变化前数据和变化后数据。本申请中,从检索到的value数据中提取数据表变化的详细信息,由于数据表变化的详细信息中包括变化前数据和变化后数据,在接收到确认恢复请求时,根据数据表变化的详细信息进行数据恢复即可进行场景重现。
一些实施例中的基于绑定接口和Binlog日志实现数据恢复的方法,参照图2,还包括:
S21:接收用户设置的配置内容,维护动作信息,动作关联接口和接口关联的数据表;
配置内容至少包括:动作名称,动作唯一码,动作绑定的接口,以及接口绑定的数据表。
用户可以登录系统后台设置配置内容,维护动作信息,动作关联接口和接口关联的数据表。一个动作可以关联多个接口,一个接口可以关联多个数据表,即本实施例中配置的内容会维护一对多再对多的树形关系。
一些实施例中的基于绑定接口和Binlog日志实现数据恢复的方法,还包括:
S22:基于预先设置的配置内容,实时监控系统的动作日志,接口日志及对应的Binlog日志。
系统的监控处理模块会基于预先设置的配置内容,实时监控系统的动作日志,接口日志及对应的Binlog日志。
S23:在监控到系统中的处理动作发生后,将处理动作触发的Binlog日志以key-value格式进行缓存;其中,Binlog日志包括:数据变动的信息;key-value格式的key值为处理动作对应的接口流水id,key-value格式的value数据为处理动作对应的接口绑定的数据表变化的详细信息;
key-value格式的key值由监控处理模块捕获,监控处理模块监控到被配置的接口被调用后记录该接口的流水id,并将该接口流水id作为key-value格式的key值。
key-value格式的value数据为处理动作对应的接口绑定的数据表变化的详细信,数据表变化的详细信息是通过Binlog日志得到的。
优选的,方法还包括:根据处理动作的触发时间进行校验,确定由处理动作触发的Binlog日志被缓存,非相关动作触发的Binlog日志不被缓存。
S24:将key-value数据传输落库到本地数据库,根据key-value数据的key值为key-value数据的value数据绑定对应的接口流水id;
将key-value数据通过消息中间件传输落库到本地mysql数据库,方便后续将value数据和动作流水id做关联。
S25:根据预先设置的配置内容,监控并记录动作流水id和接口流水id的数据关系,根据动作流水id和接口流水id的数据关系,为key-value数据的value数据绑定对应的动作流水id。
根据预先设置的配置内容中动作与接口的关系,监控并记录动作流水id和接口流水id的数据关系。
动作流水id和接口流水id不一定是一一对应,一个动作流水可能会触发多个接口流水,但是监控数据的关系是一一对应的,所以可以根据通过监控得到的动作流水id和接口流水id的数据关系,为key-value数据的value数据绑定对应的动作流水id。
value数据绑定了动作流水id和接口流水id后,便可以执行S11-S13步骤。
一些实施例中的基于绑定接口和Binlog日志实现数据恢复的方法,还包括:
完成数据恢复后,对应修改各处理动作记录的状态。
因为完成数据恢复后,之前记录的在数据恢复节点后的发生的动作已经不存在了,所以需要对应修改各处理动作记录的状态。
进一步的,在进行数据恢复时,只根据最新记录的处理动作进行恢复,历史记录的处理动作不执行恢复。
比如对第一条时间线上的数据进行恢复,得到第二条时间线上的数据,再次进行数据恢复时,只能对第二条时间线上的数据进行回复,而不能恢复到第一条时间线上的数据。
一种基于绑定接口和Binlog日志实现数据恢复的系统,参照图3,包括:
数据搜索模块31,用于在接收数据检索请求时,根据数据检索请求在本地数据库中检索对应的value数据;
数据恢复模块32,用于从检索到的value数据中提取数据表变化的详细信息;在接收到确认恢复请求时,根据数据表变化的详细信息进行数据恢复;
监控处理模块33,用于基于预先设置的配置内容,实时监控系统的动作日志,接口日志及对应的Binlog日志。根据预先设置的配置内容,监控并记录动作流水id和接口流水id的数据关系,根据动作流水id和接口流水id的数据关系,为key-value数据的value数据绑定对应的动作流水id。
配置模块34,用于接收用户设置的配置内容,维护动作信息,动作关联接口和接口关联的数据表。
缓存模块35,在监控到系统中的处理动作发生后,将处理动作触发的Binlog日志以key-value格式进行缓存。
存储模块36,用于将key-value数据传输落库到本地数据库,根据key-value数据的key值为key-value数据的value数据绑定对应的接口流水id。
其中,数据检索请求至少包括:单条value数据,或,需要恢复的数据的动作流水id,或,需要恢复的数据的接口流水id;
value数据是将系统中的处理动作触发的Binlog日志按照key-value格式存储到本地数据库并关联处理动作对应的动作流水id,接口流水id和value数据产生的。
本实施例中的基于绑定接口和Binlog日志实现数据恢复的系统,在接收数据检索请求时,根据数据检索请求在本地数据库中检索对应的value数据;其中,数据检索请求至少包括:单条value数据,或,需要恢复的数据的动作流水id,或,需要恢复的数据的接口流水id;value数据是将系统中的处理动作触发的Binlog日志按照key-value格式存储到本地数据库并关联处理动作对应的动作流水id,接口流水id和value数据产生的。Binlog日志是用来监听数据库变化的日志,会记录数据库表中每一个表的变化前数据和变化后数据。本申请中,从检索到的value数据中提取数据表变化的详细信息,由于数据表变化的详细信息中包括变化前数据和变化后数据,在接收到确认恢复请求时,根据数据表变化的详细信息进行数据恢复即可进行场景重现。
一种基于绑定接口和Binlog日志实现数据恢复的设备,参照图4,包括:
处理器41和存储器42;
所述处理器41与存储器42通过通信总线相连接:
其中,所述处理器41,用于调用并执行所述存储器42中存储的程序;
所述存储器42,用于存储程序,所述程序至少用于执行以上任一实施例所述的一种基于绑定接口和Binlog日志实现数据恢复的方法。
在本发明实施例中还可以包括一种存储介质,该存储介质存储有计算机程序,当计算机程序被处理器执行时,实现上述的基于绑定接口和Binlog日志实现数据恢复的方法中各个步骤。
可以理解的是,上述各实施例中相同或相似部分可以相互参考,在一些实施例中未详细说明的内容可以参见其他实施例中相同或相似的内容。
需要说明的是,在本申请的描述中,术语“第一”、“第二”等仅用于描述目的,而不能理解为指示或暗示相对重要性。此外,在本申请的描述中,除非另有说明,“多个”的含义是指至少两个。
流程图中或在此以其他方式描述的任何过程或方法描述可以被理解为,表示包括一个或更多个用于实现特定逻辑功能或过程的步骤的可执行指令的代码的模块、片段或部分,并且本申请的优选实施方式的范围包括另外的实现,其中可以不按所示出或讨论的顺序,包括根据所涉及的功能按基本同时的方式或按相反的顺序,来执行功能,这应被本申请的实施例所属技术领域的技术人员所理解。
应当理解,本申请的各部分可以用硬件、软件、固件或它们的组合来实现。在上述实施方式中,多个步骤或方法可以用存储在存储器中且由合适的指令执行系统执行的软件或固件来实现。例如,如果用硬件来实现,和在另一实施方式中一样,可用本领域公知的下列技术中的任一项或他们的组合来实现:具有用于对数据信号实现逻辑功能的逻辑门电路的离散逻辑电路,具有合适的组合逻辑门电路的专用集成电路,可编程门阵列(PGA),现场可编程门阵列(FPGA)等。
本技术领域的普通技术人员可以理解实现上述实施例方法携带的全部或部分步骤是可以通过程序来指令相关的硬件完成,所述的程序可以存储于一种计算机可读存储介质中,该程序在执行时,包括方法实施例的步骤之一或其组合。
此外,在本申请各个实施例中的各功能单元可以集成在一个处理模块中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个模块中。上述集成的模块既可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。所述集成的模块如果以软件功能模块的形式实现并作为独立的产品销售或使用时,也可以存储在一个计算机可读取存储介质中。
上述提到的存储介质可以是只读存储器,磁盘或光盘等。
在本说明书的描述中,参考术语“一个实施例”、“一些实施例”、“示例”、“具体示例”、或“一些示例”等的描述意指结合该实施例或示例描述的具体特征、结构、材料或者特点包含于本申请的至少一个实施例或示例中。在本说明书中,对上述术语的示意性表述不一定指的是相同的实施例或示例。而且,描述的具体特征、结构、材料或者特点可以在任何的一个或多个实施例或示例中以合适的方式结合。
尽管上面已经示出和描述了本申请的实施例,可以理解的是,上述实施例是示例性的,不能理解为对本申请的限制,本领域的普通技术人员在本申请的范围内可以对上述实施例进行变化、修改、替换和变型。
- 基于绑定接口和Binlog日志实现数据恢复的方法及系统
- 基于设备日志的设备操作用时估算系统及方法、基于设备日志的动态预约系统及其实现方法