应用系统迁移正确性的验证方法及装置、设备、存储介质
文献发布时间:2023-06-19 10:57:17
技术领域
本发明涉及数据验证技术领域,尤其涉及一种用于应用系统迁移正确性的验证方法及装置、设备、存储介质。
背景技术
经过多年信息化建设的积淀,各经营单位积累了数量可观的业务系统。随着开源数据库在互联网行业大规模的商用,以MySQL为代表的开源数据库越来越受到银行业的关注。一方面,监管层对银行业的“安全自主可控”提出了更高的要求,另一方面,商业数据库的授权许可费用及其运行所需的高端硬件环境价格昂贵,利率市场化下的银行业面临日趋严峻的成本压力。越来越多的业务系统开始谋求从商业数据库转向开源数据库。从保护既有业务系统投资的角度出发,大规模的实施业务重构显然并不可取。因此,实施这类应用的迁移,业务模型和处理逻辑尽量保持不变或基本不变。本文将这类迁移称为系统的平移。
在实施业务系统平移的过程中,最重要的是证明迁移的正确性。传统的方法是选取新老系统的时点数据切面,使用统计或其他校验手段证明其正确性,我们称之为静态数据切面的证明。这种证明方法通常既包括业务规则校验,又包括技术规则校验。业务规则校验通常使用的手段是统计报表以及基于业务规则的校对,比如总分核对、记录内关系的检核、表内记录间关系检核、表间记录间关系检核等;技术校验即通过纯技术手段校验两边数据是否一致,比如基于主键的分块数据指纹校验、UDF(user defined function)的校验和计算、基于Merkle Tree的指纹校验、基于Rolling Checksum计算的校验、全文匹配等。将这两种手段结合,一定程度上可以帮助我们检出两个系统不一致的地方。
虽然上述方法实现起来比较容易,但其局限性显而易见:
1.只能证明切面时刻的数据一致性,而不能证明两个切面之间任一时刻的数据是否一致。
2.如果数据校验不一致,无法给出不一致的变迁履历。这对应用迁移来说尤为重要,意味着并不能为应用排查问题提供更多有用的信息。
发明内容
针对上述需求,本发明人设计出了一种用于应用系统迁移正确性的验证方法及装置、设备、存储介质,解决目前业务系统迁移的数据验证技术所存在的缺陷和局限性,。
本发明的一个方案是一种用于应用系统迁移正确性的验证方法,包括:
S1.采用模拟备机接入新系统和旧系统,并分别获取所述新系统中的新物理日志和所述旧系统中的旧物理日志;
S2.确定所述新物理日志和所述旧物理日志的比对区间;
S3.按照所述比对区间分别解析所述新物理日志和所述旧物理日志,并获取SQL语句;
S4.汇总所述SQL语句,并按照时序对所述比对区间内的所述新物理日志和所述旧物理日志进行数据比对,输出差异率。
本发明的方案中,日志采集模块、管理模块和数据比对模块;
所述日志采集模块用于接入所述新系统和所述旧系统获得日志,用于对齐作为比对源的所述新物理日志和所述旧物理日志,以及用于按所述比对区间采集所述新物理日志和所述旧物理日志、解析所述新物理日志和所述旧物理日志并转换为SQL语句或者按照自定义格式、按表+主键的维度拆分所述新物理日志和所述旧物理日志;
所述管理模块用于管理比对服务集群、启停任务、集中配置下发、分派所述日志采集模块的比对源;
所述数据比对模块内置于所述管理模块,用于比对所述新物理日志和所述旧物理日志之间的数据变化,以及计算所述差异率。
本发明的方案中,步骤S1中,包括:
S11所述管理模块向所述日志采集模块分配比对源并集中下发配置;
S12.所述日志采集模块分别接入所述新系统和所述旧系统的主机节点,并获取所述新物理日志和所述旧物理日志。
本发明的方案中,步骤S2中,包括:
S21.在所述新系统中指定一个新日志起始点及特征交易,所述日志采集模块在所述新物理日志中定位该特征交易;
S22.在所述旧系统中指定一个旧日志起始点,所述日志采集模块以所述旧日志起始点起始在所述旧物理日志中定位与所述特征交易相匹配的特征点位置;
S23.所述日志采集模块将所述特征点位置上传至所述管理模块;
S24.所述管理模块以所述特征点位置起始,获取所述新物理日志和所述旧物理日志的对齐位置并下发至所述日志采集模块;
S25.所述日志采集模块根据所述特征点位置和所述对齐位置获取所述比对区间。
本发明的方案中,步骤S4中,所述管理模块汇总所述SQL语句并下发至所述数据比对模块,所述数据比对模块按照时序对所述比对区间内的所述新物理日志和所述旧物理日志进行数据比对,输出所述差异率。
本发明的方案中,所述差异率表示为:1-S/A,其中A表示为本次差异计算的全集,即参与比对且已经确认差异的记录之和,S表示匹配成功的记录之和。
本发明的方案中,在所述比对区间内,所述新物理日志与所述旧物理日志匹配成功的最后一对记录,作为当前所述比对区间内确认差异的最后记录,并以所述最后记录之前的全部记录作为本次差异计算的全集。
本发明的方案中,在当前所述比对区间内,若在所述最后记录之后存在未匹配记录,则将所述未匹配记录流转至下一比对区间进行比对。
本发明的方案中,步骤S4中,若所述比对区间内出现无法匹配的区间数大于预设值,则将所述比对区间记录为失效周期。
步骤S4中,按照时序对所述比对区间内的所述新物理日志和所述旧物理日志进行数据比对的步骤中,可选择的采用前向匹配或后向匹配的方式进行比对。
本发明的另一个方案是一种用于应用系统迁移正确性的模拟备机装置,所述模拟备机装置包括:
所述日志采集模块用于接入所述新系统和所述旧系统获得日志,用于对齐作为比对源的所述新物理日志和所述旧物理日志,以及用于按所述比对区间采集所述新物理日志和所述旧物理日志、解析所述新物理日志和所述旧物理日志并转换为SQL语句或者按照自定义格式、按表+主键的维度拆分所述新物理日志和所述旧物理日志;
所述管理模块用于管理比对服务集群、启停任务、集中配置下发、分派所述日志采集模块的比对源;
所述数据比对模块内置于所述管理模块,用于比对所述新物理日志和所述旧物理日志之间的数据变化,以及计算所述差异率。
本发明的再一个方案是一种验证设备,包括:处理器、存储介质和总线,所述存储介质存储有所述处理器可执行的机器可读指令,当所述交易设备运行时,所述处理器与所述存储介质之间通过所述总线通信,所述处理器执行所述机器可读指令,以执行权利要求1至7任一项所述的验证方法的步骤。
本发明的再一个方案是一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器运行时执行权利要求1至7任一项所述的验证方法的步骤。
通过以上技术方案,能够从不断变化的新老两个系统的某个大体一致的时间点开始,持续不断的进行数据变化轨迹的监控和并进行实时或准实时的比较。本方案采用这种纯技术手段的比对,不含或者基本不含业务规则概念,使其能够更加通用且准确高效。
通过以上技术方案,能够有效解决目前业务系统迁移的数据验证技术的缺陷和局限性,提升了数据校验的可靠性和真实性。
通过以上技术方案,由于数据库日志本身记录了数据变化的全部历史记录,且严格的按照事务发生(以提交为准)的次序记录其变化轨迹,进而使得本方案可以做到准实时的系统一致性分析。
通过以上技术方案,本方案在执行验证的过程中,比对区间具备自我纠正的能力,如果某个区间内待比较的两个系统一侧少了若干记录,不会将该差距继续传递到下一个区间,从而避免累积误差。
通过以上技术方案,本方案中通过记录失效周期可以有效解决一直无法匹配导致内存不足的问题,达到了系统运行流畅、效率高的有点;此外,还解决了序列超长后比对耗时的问题。进而,在本方案中,失效周期的配置可以按照业务的实际情况配置足够大的值。
通过以上技术方案,能够保证应用系统迁移正确性证明的可靠性和普适性,确保了应用系统的可维护性和数据安全。同时,本方案还能够有效且及时获取记录从什么时候开始出现差异,这对应用系统分析问题提供了很大的便利。
附图说明
图1是用于本发明的验证方法的步骤框图。
图2是用于本发明的验证方法的系统框架图。
图3是用于本发明的比对区间的示意图。
具体实施方式
在本发明的方案中,由于数据库的日志记录了数据全部的变化。其中,日志条目从逻辑上分为插入、更新、删除。进而通过解析数据库日志,就可以得到每一条记录的每一次变化。通过按记录比对数据的变化,就可以得到同一条记录在两个数据库中变化的差异。
图1是用于本发明的验证方法的步骤框图。如图1所示本发明的一种用于应用系统迁移正确性的验证方法,包括:
S1.采用模拟备机接入新系统和旧系统,并分别获取新系统中的新物理日志和旧系统中的旧物理日志;
S2.确定新物理日志和旧物理日志的比对区间;
S3.按照比对区间分别解析新物理日志和旧物理日志,并获取SQL语句;
S4.汇总SQL语句,并按照时序对比对区间内的新物理日志和旧物理日志进行数据比对,输出差异率。
通过上述步骤,本发明的方案的基本逻辑客分为以下几步:1.模拟备机接入新旧系统,获取物理日志。2.根据获取的物理日志确定比较起点,解析日志,获取SQL语句。3.统筹SQL语句,进行数据比对,输出差异。进而,模拟备机是进行数据采集、比对的重要组成部分。图2是用于本发明的验证方法的系统框架图。本发明的方案中,模拟备机包括:日志采集模块(Compare Client,简称CC,下同)、管理模块和数据比对模块(Compare server,简称CS,下同)。在本实施方式中,日志采集模块主要功能是用于接入新系统和旧系统获得日志,用于对齐作为比对源的新物理日志和旧物理日志,以及用于按比对区间采集新物理日志和旧物理日志、解析新物理日志和旧物理日志并转换为SQL语句或者按照自定义格式、按表+主键的维度拆分所述新物理日志和所述旧物理日志等。在本实施方式中,管理模块的主要功能是用于管理比对服务集群(单台机器的处理能力有限,我们通常会用多台服务器运行比对服务,进而管理模块此时管理整个比对服务集群)、启停任务、集中配置下发、分派日志采集模块的比对源。在本实施中,数据比对模块内置于管理模块,主要功能是用于比对新物理日志和旧物理日志之间的数据变化,统计一致率、输出差异等。
如图2所示,根据本发明的方案,其核心算法如下:
在步骤S1中,包括:
S11.管理模块(如CS1)向日志采集模块(如CC1,CC2,...,CCn)分配比对源并集中下发配置;
S12.日志采集模块(如CC1,CC2,...,CCn)分别接入新系统和旧系统的主机节点,并获取新物理日志和旧物理日志。
图3是用于本发明的比对区间的示意图。如图3所示,在步骤S2中,包括:
S21.在新系统中指定一个新日志起始点及特征交易,日志采集模块(如CC1,CC2,...,CCn)在新物理日志中定位该特征交易。在本实施方式中,在新系统指定新日志起始点时,可通过新系统粗略指定某个起始点及特征交易,并通过日志采集模块进行特征交易定位。
S22.在旧系统中指定一个旧日志起始点,日志采集模块(如CC1,CC2,...,CCn)以旧日志起始点起始在旧物理日志中定位与特征交易相匹配的特征点位置。在本实施方式中,在旧系统指定旧日志起始点时,在老系统中粗略指定某个起始点,根据指定的旧日志起始点,日志采集模块进而确定在旧物理日志中与前述步骤相匹配的特征交易的特征点位置。
S23.日志采集模块(如CC1,CC2,...,CCn)将特征点位置上传至管理模块(如CS1)。
S24.管理模块(如CS1)以特征点位置起始,获取新物理日志和旧物理日志的对齐位置并下发至日志采集模块(如CC1,CC2,...,CCn)。在本实施方式中,管理模块(如CS1)计算出的对齐位置,是初始化起始位置确定,在工作期间只需要计算一次。比如有两个数据库都是分布式数据库。每个库下有多个分片。起始位置比如序号1000。显然,包含1000这个序号的只可能在一个分片上。其他分片的起始位置则按照每个分片上大于等于1000的序号即为起始位置。这样,各个分片确定的起始位置,即为对齐位置。这发生在按区间比对记录之前。在本实施方式中,将日志中的事务按照预设规则划分比对区间,例如,参见图3,利用递增的流水号的方式构造区间。首先日志采集模块解析新物理日志和旧物理日志获取流水号,直到第一个大于区间末位流水号(不含)结束,而不管是否遇到小于区间起始流水号。
可以理解的,流水号在逻辑上是递增的。但是一个交易在获取到流水号,在数据库上执行事务并不会按照流水号的次序执行。由于并发和时序等问题,流水号所在事务在数据库日志中是交错的。我们的区间定义比如:1-1000,1001-2000,...也即按照流水号递增,每1000个是一个区间。在获取1-1000区间时,区间末位流水号为1000。数据库日志中的流水号比如:
1到900,950,1001,943,976,1008,...,2008,..。
显然这里日志是交错的。在获取1-1000区间时,日志中第一个大于区间末位流水号1000的位置结束。因此,实际处理时第一个区间到1001位置结束(第一对中括号),尽管后续943、976等逻辑上都应该属于1-1000的区间。同理:第二个区间见第二对中括号,以此类推:
[1到900,950,][1001,943,976,1008,...,][2008,..]。
在本实施方式中,一个区间记为一个批次。由CS汇总一个批次的数据。
S25.日志采集模块(如CC1,CC2,...,CCn)根据特征点位置和对齐位置获取比对区间。
根据本发明的方案,步骤S3中,日志采集模块(如CC1,CC2,...,CCn)按批次(即按照比对区间)分别解析新物理日志和旧物理日志,并获取SQL语句;
根据本发明的方案,步骤S4中,管理模块汇总SQL语句并下发至数据比对模块,数据比对模块按照时序对比对区间内的新物理日志和旧物理日志进行数据比对,输出差异率。在本实施方式中,将数据库日志记录序列按照“表+主键”的维度拆分为多个序列,数据比对模块进行数据比对。在本实施方式中,差异率表示为:1-S/A,其中A表示为本次差异计算的全集,即参与比对且已经确认差异的记录之和,S表示匹配成功的记录之和。
在本实施方式中,将可以容忍记录无法匹配的最大区间数,作为记录的失效周期。因此,步骤S4中,若比对区间内出现无法匹配的区间数大于预设值,则将比对区间记录为失效周期。
根据本发明的方案,在比对区间内,新物理日志与旧物理日志匹配成功的最后一对记录,作为当前比对区间内确认差异的一组最后记录,并以最后记录之前的全部记录作为本次差异计算的全集。而确认差异是指在失效周期到达之前,“直到有记录能够匹配”这个动作被定义为确认差异。进而,在本实施方式中,在当前比对区间内,若在最后记录之后仍存在未匹配记录,则将未匹配记录流转至下一次新的变化到达后再次比(即下一比对区间进行比对)。
根据本发明的方案,步骤S4中,按照时序对比对区间内的新物理日志和旧物理日志进行数据比对的步骤中,可选择的采用前向匹配或后向匹配的方式进行比对。其中,在匹配率一致的条件下,优先匹配时序靠前的记录称为前向匹配,优先匹配时序靠后的记录称为后向匹配。前向匹配能最大程度的保留不匹配的记录,而后向匹配策略将有利于最大程度的确认差异后丢弃记录。在比对源数据质量较高的情况下,这两种策略基本没有差异,而在数据质量较差的情况下,前向匹配的匹配率通常会更好,但执行会更慢些。
在本实施方式中,步骤S4中,必须按照时序匹配,即不能交叉匹配。如果两个集合存在多种匹配的可能,则应当按照最大匹配的原则确定。参见图3所示,对最大匹配原则进行说明,图3中若左6和右1匹配,则少了2个匹配(少了左2和右3匹配,左4和右4匹配)。因此,若以左6和右1匹配,即不符合不交叉原则,也不符合最大匹配原则,进而以左2和右3匹配并按照时序获得最大匹配数量。参见图3所示,当最后一对匹配确定(匹配即为日志内容的对齐点,即两边数据库日志中出现相同动作的点。这两个日志点的内容表示的更改是一样的,逻辑上是对齐的。),如图左9和右10的连线,则后续未匹配的记录将会挂起(即图中左9以下的记录和右10以下的记录),等待后续记录加入后继续匹配,如图3左侧最后一条记录和右侧最后两条记录,都将进入后续比对批次。
根据本方案的另一个实施方式,在本发明的方法中可通过缩短静态切面的间隔,从而渐进的模拟数据变化履历的比对。静态切面的意思是两个数据库的数据要进行比对,常规的做法比如约定当天批处理结束之后,暂停业务处理,此时两边数据处于静止状态。然后两个数据库的数据比对。这样的静态间隔就是1天,也就是1天比较一次。如果计算能力足够强,可以缩短比对间隔,比如每半小时比对一次,每分钟比对一次等。从而渐进的达到数据变化轨迹的比对。
本发明的另一个方案是一种用于应用系统迁移正确性的模拟备机装置,模拟备机装置包括:
日志采集模块用于接入新系统和所述旧系统获得日志,用于对齐作为比对源的新物理日志和所述旧物理日志,以及用于按比对区间采集新物理日志和旧物理日志、解析新物理日志和旧物理日志并转换为SQL语句或者按照自定义格式、按表+主键的维度拆分新物理日志和所述旧物理日志;
管理模块用于管理比对服务集群、启停任务、集中配置下发、分派所述日志采集模块的比对源;
数据比对模块内置于管理模块,用于比对新物理日志和旧物理日志之间的数据变化,以及计算差异率。
本发明的再一个方案是一种验证设备,包括:处理器、存储介质和总线,存储介质存储有处理器可执行的机器可读指令,当交易设备运行时,处理器与存储介质之间通过总线通信,处理器执行机器可读指令,以执行前述的验证方法的步骤。
本发明的再一个方案是一种计算机可读存储介质,计算机可读存储介质上存储有计算机程序,计算机程序被处理器运行时执行前述的验证方法的步骤。
为进一步阐述本发明,则下面举例进行详细说明。
中信银行X系统拟从AS400迁移到X86集群,该迁移属于系统平移。本发明中提到的模拟备机称为增量比对工具。X系统仿真运行逻辑如下:
1,生产备份时点T数据
2,从T时点开始保存全部的生产交易报文P
3,将T时点数据迁入仿真环境AS400系统
4,将T时点数据迁入X86系统
5,在AS400上回放交易报文P
6,在X86上回放交易报文P
增量比对工具在步骤5、6执行过程中,采用本发明的前述方法,实时/准实时的采集AS400日志和X86数据库日志,对同一条记录的变化履历比对,输出字段级比对差异明细,并给出比对差异率。应用系统依据给出的差异明细,核查具体哪笔交易造成差异并分析差异原因。
- 应用系统迁移正确性的验证方法及装置、设备、存储介质
- 应用系统的迁移方法、装置、电子设备及存储介质