CN117131004A - 数据库变更方法、装置及电子设备 - Google Patents

数据库变更方法、装置及电子设备 Download PDF

Info

Publication number
CN117131004A
CN117131004A CN202310822900.3A CN202310822900A CN117131004A CN 117131004 A CN117131004 A CN 117131004A CN 202310822900 A CN202310822900 A CN 202310822900A CN 117131004 A CN117131004 A CN 117131004A
Authority
CN
China
Prior art keywords
target database
information
change
target
database
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
CN202310822900.3A
Other languages
English (en)
Inventor
熊辉
闫宇星
周靖
张炯
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Haitong Securities Co ltd
Original Assignee
Haitong Securities Co ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Haitong Securities Co ltd filed Critical Haitong Securities Co ltd
Priority to CN202310822900.3A priority Critical patent/CN117131004A/zh
Publication of CN117131004A publication Critical patent/CN117131004A/zh
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/21Design, administration or maintenance of databases
    • G06F16/219Managing data history or versioning
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • G06F11/1402Saving, restoring, recovering or retrying
    • G06F11/1446Point-in-time backing up or restoration of persistent data
    • G06F11/1448Management of the data involved in backup or backup restore
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • G06F11/1402Saving, restoring, recovering or retrying
    • G06F11/1471Saving, restoring, recovering or retrying involving logging of persistent data for recovery
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Abstract

本申请提供一种数据库变更方法、装置及电子设备。该方法根据目标数据库变更指令对目标数据库信息进行备份,备份成功后自动根据上一次变更判断是否执行本次变更。在执行本次变更时,基于程序脚本,并根据目标数据库变更脚本和目标数据库回滚脚本对目标数据库初始信息进行变更,通过对目标数据库初始信息一次变更后进行回滚,并再次执行二次变更的方式,实现了对回滚脚本的验证,增强了回滚脚本的可靠性和数据库变更的稳定性。并通过自动触发自动回滚流程和自动重复执行变更流程增强数据库变更的自动化,提升了数据库变更的效率。

Description

数据库变更方法、装置及电子设备
技术领域
本申请涉及数据库技术,尤其涉及一种数据库变更方法、装置及电子设备。
背景技术
数据库变更是对数据库进行结构和内容的修改,以满足不同的业务需求。开发人员对编写变更脚本后,还需要对变更脚本进行提测构建,测试人员根据变更脚本对变更后的数据库手工执行测试。测试通过后进行生产,从而实现数据库变更对应业务需求的满足。另外,在下一次变更时,需要单独重新对下一次变更脚本进行提测构建。
对变更的数据库进行提测构建过程中,当执行失败时,需要通过回滚脚本将数据库回滚至变更前的状态,根据失败原因进行修改,直到执行成功。之后在生产中出现问题时,也可以使用对应的回滚脚本将数据库回滚到变更前的状态,进而重新修正直到变更成功。
由于回滚脚本可能出现错误,经常导致使用对应的回滚脚本不能将数据库回滚到变更前的状态,此时只能手工进行适应性修正,直到变更成功。因此在手工进行测试和生产的过程中,回滚脚本的可靠性降低影响了执行数据库变更的稳定性,同时在执行过程中,通过多次手工提交多个变更脚本和手工修复执行失败的变更脚本降低了数据库实现变更的效率。
发明内容
本申请提供一种数据库变更方法、装置及电子设备,用以提升数据库变更的稳定性和效率。
第一方面,本申请提供一种数据库变更方法,应用于版本控制系统,方法包括:
获取目标数据库变更指令,并根据目标数据库变更指令停止目标服务;
根据目标数据库变更指令备份目标数据库信息,并获取目标数据库信息的备份结果,其中,目标数据库信息包括:目标数据库配置信息和目标数据库初始信息;
基于目标数据库信息的备份结果,根据目标数据库变更脚本对目标数据库初始信息执行一次变更并生成目标数据库第一信息,并确认目标数据库第一信息是否有效;
基于有效的目标数据库第一信息,根据目标数据库回滚脚本对目标数据库初始信息执行二次变更并生成目标数据库第二信息,并确认目标数据库第二信息是否有效;
基于有效的目标数据库第二信息,生成本次变更成功指示,根据目标数据库变更脚本对目标数据库配置信息进行变更集成并生成变更集成结果,根据变更集成结果启动并验证目标服务。
可选地,当目标数据库第二信息无效时,生成本次变更失败指示,并确认目标运行环境,根据目标运行环境对目标数据库第二信息进行修正并生成修正的目标数据库第二信息;
根据修正的目标数据库第二信息执行下一次变更,其中,目标运行环境包括目标测试环境和目标部署环境。
可选地,根据目标运行环境对目标数据库第二信息进行修正,具体包括:
当目标运行环境为目标测试环境时,根据历史数据对目标数据库第二信息进行历史回滚;
当历史回滚成功时,生成目标数据库初始信息,并生成变更失败指示;
当历史回滚失败时,生成历史回滚失败指示和变更失败指示,并对目标数据库第二信息进行手工修正。
可选地,当目标运行环境为目标部署环境时,阻塞目标数据库第二信息无效部分的下一次执行,根据目标数据库第二信息有效部分修正目标数据库第二信息。
可选地,基于目标数据库信息的备份结果,根据目标数据库变更脚本对目标数据库初始信息执行一次变更并生成目标数据库第一信息,具体包括:
当目标数据库信息备份成功时,获取用户提交的目标SQL文件和目标SQL第一文件,其中,目标SQL文件包括程序脚本、目标数据库变更脚本、目标数据库回滚脚本;
执行程序脚本中的第一语句并确认是否根据目标数据库变更脚本对目标数据库初始信息进行一次变更;
当确认进行一次变更时,根据程序脚本的第二语句对目标数据库初始信息进行一次变更,并获取目标数据库变更脚本的一次变更结果。
可选地,执行程序脚本中的第一语句并确认是否根据目标数据库变更脚本对目标数据库初始信息进行一次变更,具体包括:
根据目标SQL文件和目标SQL第一文件确认是否存在差异项,若存在差异项,则根据目标数据库变更脚本对目标数据库初始信息进行一次变更;和/或根据目标SQL第一文件中的第一目标数据库初始信息的变更结果确定是否执行目标数据库初始信息的一次变更。
可选地,基于有效的目标数据库第一信息,根据目标数据库回滚脚本对目标数据库初始信息执行二次变更并生成目标数据库第二信息,并确认目标数据库第二信息是否有效,具体包括:
基于有效的目标数据库第一信息,根据目标数据库回滚脚本对目标数据库第一信息进行回滚;
基于成功的回滚获得目标数据库初始信息,根据目标数据库变更脚本对目标数据库初始信息执行二次变更并生成目标数据库第二信息,并确认目标数据库第二信息是否有效。
可选地,当目标数据库信息备份失败时,生成第一提示。
第二方面,本申请提供一种数据库变更装置,包括:
获取模块,用于获取目标数据库变更指令,并根据目标数据库变更指令停止目标服务;
处理模块,用于根据目标数据库变更指令备份目标数据库信息,并获取目标数据库信息的备份结果,其中,目标数据库信息包括:目标数据库配置信息和目标数据库初始信息;
处理模块还基于目标数据库信息的备份结果,根据目标数据库变更脚本对目标数据库初始信息执行一次变更并生成目标数据库第一信息,并确认目标数据库第一信息是否有效;
处理模块,还用于基于有效的目标数据库第一信息,根据目标数据库回滚脚本对目标数据库初始信息执行二次变更并生成目标数据库第二信息,并确认目标数据库第二信息是否有效;
处理模块,还用于基于有效的目标数据库第二信息,生成本次变更成功指示,根据目标数据库变更脚本对目标数据库配置信息进行变更集成并生成变更集成结果,根据变更集成结果启动并验证目标服务。
可选地,当目标数据库第二信息无效时,处理模块,还用于生成本次变更失败指示,并确认目标运行环境,根据目标运行环境对目标数据库第二信息进行修正并生成修正的目标数据库第二信息;
根据修正的目标数据库第二信息执行下一次变更,其中,目标运行环境包括目标测试环境和目标部署环境。
可选地,处理模块,还用于根据目标运行环境对目标数据库第二信息进行修正,具体包括:
当目标运行环境为目标测试环境时,根据历史数据对目标数据库第二信息进行历史回滚;
当历史回滚成功时,生成目标数据库初始信息,并生成变更失败指示;
当历史回滚失败时,生成历史回滚失败指示和变更失败指示,并对目标数据库第二信息进行手工修正。
可选地,当目标运行环境为目标部署环境时,处理模块,还用于阻塞目标数据库第二信息无效部分的下一次执行,根据目标数据库第二信息有效部分修正目标数据库第二信息。
可选地,当目标数据库信息备份成功时,获取模块,还用于获取用户提交的目标SQL文件和目标SQL第一文件,其中,目标SQL文件包括程序脚本、目标数据库变更脚本、目标数据库回滚脚本;
执行程序脚本中的第一语句并确认是否根据目标数据库变更脚本对目标数据库初始信息进行一次变更;
当确认进行一次变更时,根据程序脚本的第二语句对目标数据库初始信息进行一次变更,并获取目标数据库变更脚本的一次变更结果。
可选地,处理模块,还用于执行程序脚本中的第一语句并确认是否根据目标数据库变更脚本对目标数据库初始信息进行一次变更,具体包括:
根据目标SQL文件和目标SQL第一文件确认是否存在差异项,若存在差异项,则根据目标数据库变更脚本对目标数据库初始信息进行一次变更;和/或根据目标SQL第一文件中的第一目标数据库初始信息的变更结果确定是否执行目标数据库初始信息的一次变更。
可选地,基于有效的目标数据库第一信息,处理模块,还用于根据目标数据库回滚脚本对目标数据库初始信息执行二次变更并生成目标数据库第二信息,并确认目标数据库第二信息是否有效,具体包括:
基于有效的目标数据库第一信息,根据目标数据库回滚脚本对目标数据库第一信息进行回滚;
基于成功的回滚获得目标数据库初始信息,根据目标数据库变更脚本对目标数据库初始信息执行二次变更并生成目标数据库第二信息,并确认目标数据库第二信息是否有效。
可选地,当目标数据库信息备份失败时,处理模块,还用于生成第一提示。
第三方面,本申请提供一种电子设备,包括:处理器,以及与处理器通信连接的存储器;
存储器存储计算机执行指令;
处理器执行存储器存储的计算机执行指令,以实现第一方面和第二方面所涉及的方法。
第四方面,本申请提供一种计算机可读存储介质,计算机可读存储介质中存储有计算机执行指令,计算机执行指令被处理器执行时用于实现如上第一方面和第二方面所涉及的方法。
本申请提供的数据库变更方法、装置及电子设备,首先对目标数据库信息中的目标数据库配置信息和目标数据库初始信息进行备份,备份成功后将变更指令与前一次变更结果进行差异对比,根据对比结果使用目标数据库变更脚本对目标数据库初始信息执行一次变更生成第一信息,一次变更成功后通过目标数据库回滚脚本回滚第一信息,用以验证回滚脚本的可靠性,回滚成功后再次根据目标数据库变更脚本对初始信息进行二次变更,二次变更成功即证明数据库变更成功,二次变更失败时根据目标运行环境对第二信息进行回滚或手工修正,还原初始信息用于下次变更,之后通过对目标数据库配置信息进行变更实现集成并启动验证目标服务。通过差异对比、变更配置信息并在变更失败时还原初始信息实现了对数据库的重复多次变更,提升数据库变更的效率,并在变更过程中实现了对回滚脚本可靠性的验证,增强数据库变更的稳定性。
附图说明
此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本申请的实施例,并与说明书一起用于解释本申请的原理。
图1为本申请实施例提供的一种数据库变更方法的应用场景图;
图2为本申请实施例提供的一种数据库变更方法的流程图;
图3为本申请实施例提供的一种数据库变更方法的流程图;
图4为本申请实施例提供的一种数据库一次变更方法的流程图;
图5为本申请实施例提供的一种SQL文件的结构示意图;
图6为本申请实施例提供的一种数据库变更的流程图;
图7为本申请实施例提供的一种数据库变更装置的结构示意图;
图8为本申请实施例提供的一种电子设备的结构示意图。
通过上述附图,已示出本申请明确的实施例,后文中将有更详细的描述。这些附图和文字描述并不是为了通过任何方式限制本申请构思的范围,而是通过参考特定实施例为本领域技术人员说明本申请的概念。
具体实施方式
这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本申请相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本申请的一些方面相一致的装置和方法的例子。
需要说明的是,本申请所涉及的用户信息(包括但不限于用户设备信息、用户个人信息等)和数据(包括但不限于用于分析的数据、存储的数据、展示的数据等),均为经用户授权或者经过各方充分授权的信息和数据,并且相关数据的收集、使用和处理需要遵守相关国家和地区的相关法律法规和标准,并提供有相应的操作入口,供用户选择授权或者拒绝。
数据库变更应用于软件交付过程中,在软件交付过程中需要对数据库进行设计或变更。其中,数据库变更是指对数据库进行结构和内容的修改,以满足不同的业务需求。数据库变更包括添加、修改和删除数据库表、字段、约束、索引等结构元素,以及对数据库表中的数据内容进行增、删、改等操作,其中,表是数据库的基础,是数据库中用来存储数据的对象,并且是有结构的数据的集合。
在数据库变更中,经常会出现变更失败的情况,因此现有技术通过编写回滚脚本并根据回滚脚本回滚变更脚本的方式将变更失败后的数据库回退到变更前的状态。其中,每一个变更脚本对应一个回滚脚本,因此,回滚脚本可以将变更脚本的操作抵消,返回到变更之前的状态,以确保数据的一致性和完整性。
但是编写的回滚脚本可能出现错误,导致在生产出现问题的时候,不能通过回滚脚本将数据库回滚到变更前的状态,降低了数据库变更的稳定性,另外,有些回滚脚本很难编写,此时针对变更失败的数据库,现有技术只能基于变更失败的数据库进行手动修正,需要耗费大量时间,降低了实现数据库变更的效率。
可选地,常用软件交付流程包括:首先开发人员根据用户需求在编写代码,之后运维人员将代码上传,并同时负责代码的备份和更新,测试人员对分别代码和网站进行测试,测试通过后构建各个环境的发布包并发布到生产环境中,其中,运维人员负责在整个过程中维护生产环境和测试环境的稳定正常。
但是软件交付是信息流动和转换的过程,多次人工交接会加重信息的编译,并且在人与人的沟通中很容易受到人为的情绪影响,从而影响交付的质量和速率,因此现有技术以自动化为切入点将开发、测试、部署和运营中的流程尽可能集成为一条自动化流水线,从而减少工作人员人工操作耗费的精力和时间,整体提高工作效率和质量,例如DevOps流水线。
其中,DevOps流水线是一个将软件开发和运维结合在一起的自动化过程。它是一种持续交付模式,通过自动化工具和流程,将软件从代码编写到部署、测试、集成和监控等全过程进行集成和协调。
例如,可以使用DevOps流水线进行软件交付,如图1所示,开发人员根据需求编写应用代码,同时编写SQL变更脚本,编写完成后将应用代码和SQL变更脚本一起提交至配置库进行提测构建,配置库获取到应用代码和变更脚本自动触发集成环境中持续集成,对应用进行自动编译并发布数据库变更脚本。之后对相关的环境进行测试,更具体地,编译好的可执行的应用软件包在测试环境中执行数据库变更脚本完成数据库变更,数据库变更成功后进行应用变更部署,在测试环境通过测试后,执行QA验证和模拟环境的数据库变更和应用变更部署。相关的环境测试通过后实现生产环境的部署,更具体地,相关人员对应用以及数据库变更脚本进行监控评审,并完成生产环境的自动化部署。DevOps流水线的软件交付实现了从开发到运维的持续且快速的工作机制。其中,提测构建是开发人员在代码提交到版本控制系统后,通过自动化工具自动集成构建出可执行的软件包,以便在测试环境中通过执行数据库变更脚本对数据库进行变更完成测试。
但是针对一个应用,每次需要升级版本和/或修正版本时,开发人员都需要人工通过命令行或者开发环境程序界面的形式提交了新的变更脚本,并经过测试环境的测试才能查看运行结果,在测试失败时往往不容易回退和修正,因此需要根据用户需求和/或测试失败结果在开发环境中对变更脚本进行修正后再重新提交测试变更,降低了数据库变更的效率。
因此,本申请基于图1所示的DevOps流水线建立一种数据库变更方法,在数据库变更过程中对回滚脚本进行充分验证,提升回滚脚本的可靠性,并采用自动增量提交变更脚本的方式进行数据库变更,针对同一应用的多次数据库变更无需多次提交变更脚本,实现自动变更以及自动回滚,在提升数据库变更的同时提高变更效率。
图2为本申请实施例提供的一种数据库变更方法的流程图,如图2所示,该数据库变更方法包括如下步骤:
S201、获取目标数据库变更指令,并根据目标数据库变更指令停止目标服务。
更具体地,版本控制系统获取目标数据库变更指令,并根据目标数据库变更指令停止目标服务。其中,目标数据库变更指令包括目标数据库变更脚本和目标数据库备份表清单。
可选地,当目标服务需要进行升级时,开发人员根据升级需求编写SQL变更脚本,并根据SQL变更脚本生成目标数据库变更指令,版本控制系统获取到目标数据库变更指令后,根据目标数据库变更指令停止正在运行中的目标服务。
S202、根据目标数据库变更指令备份目标数据库信息,并获取目标数据库信息的备份结果。
更具体地,版本控制系统根据目标数据库变更指令备份目标数据库信息,存储到目标备份目录下,并获取目标数据库信息的备份结果,其中,目标数据库信息包括:目标数据库配置信息和目标数据库初始信息。在备份过程中,当目标数据库中某一个表备份失败时,在日志中生成第一提示,并且在后续数据库变更中会因为缺少表备份而无法恢复该表,其中,目标数据库中某一个表的备份失败不会阻塞其他表备份和其他表恢复的进程。
可选地,目标数据库信息备份包括文件备份和表备份,其中,文件备份是通过命令将数据库表导出成文件,存储到目标备份目录下,表备份是在目标数据库中新建目标备份表,目标数据库备份清单中的每一个表对应一个备份,均存储最新的数据,其中,备份表用魔法值标识。
在一种可能的实施例中,版本控制系统根据目标数据库变更指令中的目标数据库备份表清单在目标数据库中以应用版本命名的目录下新建目标备份表,对目标数据库表信息进行备份和存储,当目标数据信息备份失败时,生成当前表备份失败的提示,提示用户无法混滚建议重试。
S203、基于目标数据库信息的备份结果,根据目标数据库变更脚本对目标数据库初始信息执行一次变更并生成目标数据库第一信息,并确认目标数据库第一信息是否有效。
更具体地,当版本控制系统得到目标数据库信息备份成功的结果时,根据目标数据库变更指令中的目标数据库变更脚本以文件为粒度对目标数据库信息中的目标数据库初始信息执行一次变更,变更后生成目标数据库第一信息并确认目标数据库第一信息是否有效。其中,当目标数据库第一信息有效时生成一次变更成功提示,当目标数据库第一信息无效时生成一次变更失败提示。
在一种可能的实施例中,当目标数据库第一信息无效时生成一次变更失败提示,此时根据该一次变更失败的历史数据对无效的目标数据库第一信息执行一次变更历史回滚。当一次变更历史回滚成功时,无效的目标数据库第一信息恢复为目标数据库初始信息,并生成一次变更历史回滚验证成功提示和本次变更失败提示,当一次变更回滚失败时,通过手动修复失效的目标数据库第一信息还原为目标数据库初始信息,并生成一次变更历史回滚验证失败提示和本次变更失败提示。
S204、基于有效的目标数据库第一信息,根据目标数据库回滚脚本对目标数据库初始信息执行二次变更并生成目标数据库第二信息,并确认目标数据库第二信息是否有效。
更具体地,基于有效的目标数据库第一信息,一次变更指示成功,此时,根据目标数据库回滚脚本对目标数据库第一信息进行回滚并获得回滚结果,当回滚成功时,基于通过回滚目标数据库第一信息得到的目标数据库初始信息,根据目标数据库变更脚本对目标数据库初始信息执行二次变更并生成目标数据库第二信息,并确认目标数据库第二信息是否有效。其中,当目标数据库第二信息有效时生成二次变更成功提示,当目标数据库第二信息无效时生成二次变更失败提示。
在一种可能的实施例中,基于有效的目标数据库第一信息,当目标数据库第一信息回滚成功时,生成回滚脚本验证成功指示,并获取经过回滚得到的目标数据库初始信息,根据目标数据库脚本对该目标数据库初始信息执行二次变更并生成目标数据库第二信息,同时确认目标数据库第二信息是否有效。
在一种可能的实施例中,基于有效的目标数据库第一信息,当目标数据库第一信息回滚失败时,生成回滚脚本验证失败指示,根据目标数据库第一信息回滚失败的历史数据对目标数据库第一信息进行历史回滚,当对目标数据库第一信息历史回滚成功时,获得回滚后的目标数据库初始数据并生成第一信息历史回滚验证成果提示和本次变更失败提示。
当对目标数据库第一信息历史回滚失败时,手动修复历史回滚失败的目标数据库第一信息,直到还原为目标数据库初始信息,并生成第一信息历史回滚验证失败提示和本次变更失败提示。
S205、基于有效的目标数据库第二信息,生成本次变更成功指示,根据目标数据库变更脚本对目标数据库配置信息进行变更集成并生成变更集成结果,根据变更集成结果启动并验证目标服务。
更具体地,基于有效的目标数据库第二信息,生成本次变更成功指示,之后根据目标数据库变更脚本对目标数据库配置信息进行变更集成并生成变更集成结果,根据变更集成结果启动并验证目标服务。
在一种可能的实施例中,基于无效的目标数据库第二信息,生成二次变更失败指示,并根据目标数据库回滚脚本对无效的目标数据库第二信息进行回滚,当对无效的目标数据库第二信息回滚成功时,无效的目标数据库第二信息恢复为目标数据库初始状态,并生成二次变更回滚验证成功指示和本次变更失败指示。
在一种可能的实施例中,当对无效的目标数据库第二信息回滚失败时,根据目标数据库第二信息变更失败的数据,对失效的目标数据库第二信息执行第二信息历史回滚,当历史回滚成功时,得到目标数据库初始信息,并生成第二信息历史回滚成功指示和本次变更失败指示。
在一种可能的实施例中,对失效的目标数据库第二信息执行第二信息历史回滚,当历史回滚失败时,通过手工修复目标数据库初始信息,并生成第二信息历史回滚失败指示和本次变更失败指示。
在本申请实施例提供的数据库变更方法中,获取目标数据库变更指令进行数据库变更流程,通过使用文件备份和表备份的方式对目标数据库表进行备份,成功备份后根据目标数据库变更脚本对目标数据库初始信息进行一次变更,变更成功后使用目标数据库回滚脚本对目标数据库一次变更后的第一信息进行回滚,回滚成功后再次对目标数据库初始信息进行二次变更,通过该回滚过程充分验证回滚脚本的可靠性,提升数据库变更失败后能回滚到初始数据的稳定性。
图3为本申请实施例提供的一种数据库变更方法的流程图,如图3所示,当目标数据库第二信息无效时,该数据库变更方法包括如下步骤:
S301、当目标数据库第二信息无效时,生成本次变更失败指示,并确认目标运行环境,根据目标运行环境对目标数据库第二信息进行修正并生成修正的目标数据库第二信息。
更具体地,当目标数据库第二信息无效时,生成本次变更失败指示,并确认当前的目标运行环境,根据目标运行环境对目标数据库第二信息选择对应的修正方式进行修正,并生成修正的目标数据库第二信息。
S302、根据修正的目标数据库第二信息执行下一次变更。
更具体地,基于二次变更的失败,根据修正的目标数据库第二信息执行下一次数据库的变更,其中,目标运行环境包括目标测试环境和目标部署环境。
在一种可能的实施例中,基于目标数据库初始信息执行二次变更至目标数据库第二信息的失败,当目标运行环境为目标测试环境时,根据历史数据对目标数据库第二信息进行历史回滚;
可选地,当历史回滚成功时,获得恢复的目标数据库初始信息,并生成第二信息历史回滚成功指示和本次变更失败指示;
可选地,当历史回滚失败时,生成第二信息历史回滚失败指示和本次变更失败指示,并对目标回滚脚本进行手工修正并更新。
在一种可能的实施例中,基于目标数据库初始信息执行二次变更至目标数据库第二信息的失败,当目标运行环境为目标部署环境时,阻塞目标数据库第二信息无效部分的下一次执行,根据目标数据库第二信息有效部分修正目标数据库第二信息。
在本申请实施例提供的数据库变更方法中,在目标数据库第二信息无效的情况下,根据目标运行环境对目标数据库第二信息进行修正,在目标测试环境中,通过历史回滚使目标数据库第二信息恢复至目标数据库初始信息,为下一次全量执行数据库变更提供基础,在目标部署环境中,选择手动阻塞目标数据库第二信息无效部分的运行,在后续运行中仅增量提交目标数据库第二信息的有效部分,实现部署环境中对数据库变更的增量执行,在保证正常执行数据库变更的同时减少了因变更失败而停滞的时间,提升数据库变更效率。
图4为本申请实施例提供的一种数据库一次变更方法的流程图,当目标数据库信息备份成功时,如图4所示,根据目标数据库变更脚本对目标数据库初始信息执行一次变更并生成目标数据库第一信息,该方法包括如下步骤:
S401、当目标数据库信息备份成功时,获取用户提交的目标SQL文件和目标SQL第一文件。
更具体地,目标数据库的信息备份成功后,版本控制系统获取用户提交的目标SQL文件和目标SQL第一文件。其中,目标SQL文件包括程序脚本、目标数据库变更脚本和目标数据库回滚脚本,目标SQL第一文件包括第一程序脚本、第一目标数据库变更脚本和第一目标数据库回滚脚本。
可选地,如图5所示,目标SQL文件包括程序脚本和应用版本文件夹,其中,应用版本文件夹包括对应应用版本的变更脚本和回滚脚本,程序脚本包括第一语句和第二语句。
更具体地,程序脚本用于存放程序语句,通过先执行第一语句后执行第二语句实现对变更脚本和回滚脚本的执行。
S402、执行程序脚本中的第一语句并确认是否根据目标数据库变更脚本对目标数据库初始信息进行一次变更。
更具体地,执行程序脚本中的第一语句,通过第一语句的执行结果确认本次目标数据库变更是否执行,即判断是否根据目标数据库变更脚本对目标数据库初始信息进行一次变更。
可选地,通过对目标SQL文件中的目标数据库变更脚本和目标SQL第一文件中的第一目标数据库变更脚本进行对比,确认是否存在差异项,若存在目标数据库变更脚本的差异项,则根据目标数据库变更脚本对目标数据库初始信息进行一次变更。
可选地,当文件不存在差异时,根据目标SQL第一文件中的第一目标数据库初始信息的变更结果确定是否执行目标数据库初始信息的一次变更,当第一目标数据库初始信息变更成功时,不执行目标数据库初始信息的变更,当第一目标数据库初始信息变更失败时,执行目标数据库初始信息的变更,其中,目标SQL第一文件包括目标数据库上一次变更的文件。
例如:如下表所示,当目标SQL文件和目标SQL第一文件不存在差异项时,若目标数据库上一次变更成功,则不执行本次目标数据库变更;若目标数据库上一次变更失败,则执行本次目标数据库变更;若目标数据库上一次变更无执行结果,则执行本次目标数据库变更,其中,无执行结果包括没有对数据库执行对应变更。当目标SQL文件和目标SQL第一文件存在差异项时,均执行本次目标数据库变更。
是否存在差异项 上一次变更结果 是否执行
成功
失败
无执行结果
成功
失败
无执行结果
S403、当确认进行一次变更时,根据程序脚本的第二语句对目标数据库初始信息进行一次变更,并获取目标数据库变更脚本的一次变更结果。
更具体地,当确认进行一次变更时,根据程序脚本的第二语句对目标数据库初始信息进行一次变更,并获取目标数据库变更脚本的一次变更结果。
在本申请实施例提供的数据库变更方法中,通过在备份完成后进行是否执行本次变更的自动判断,针对同一目标数据库将本次的目标SQL文件和上一次的目标SQL第一文件进行对比,在具有差异和/或上一次变更结果未成功时确认执行本次变更,实现了自动化变更,节省了实现数据库变更的人力和时间。
在一种可能的实施例中,如图6所示,数据库变更方法首先需要对目标数据库表进行备份,备份成功后对目标数据库初始数据执行目标数据库变更脚本,若最终执行成功,则提示本次变更成果,否则提示执行失败。当提示执行失败时阻塞执行,并根据目标运行环境选择合适的修复方式。
例如,当目标运行环境为目标测试环境时,对执行变更失败的脚本进行回滚,若回滚成功,则恢复为目标数据库初始数据,并继续进行下一次变更,直到变更成功,若回滚失败,则阻塞运行并针对回滚失败的目标数据库回滚脚本进行手工修复,从而修正并更新存储回滚失败的目标数据库回滚脚本,实现对目标数据库回滚脚本的验证检验和修复,提升回滚脚本的可靠性。当目标运行环境为目标部署环境时,手工对执行变更的脚本断点,从断点处执行目标数据库变更脚本的剩余部分,执行成功后对目标部署环境中的目标数据库变更脚本进行更新,实现下一次再次使用该变更脚本时,自动增量执行剩余部分对目标数据库初始数据进行变更。
可选地,阻塞执行后,在目标测试环境中对目标数据库变更脚本进行手工修复并更新出错的目标数据库回滚脚本,并自动触发对目标数据库初始数据下一次变更的全量执行,直到目标数据库变更成功。在目标部署环境中,跳过手工断点修复目标数据库变更脚本并更新执行失败的目标数据库变更脚本,并自动触发对目标数据库初始数据下一次变更的增量执行。当目标SQL文件执行失败时,程序脚本记录文件执行失败的结果,其中,全量执行跳过后续执行过程,跳过调用回滚脚本恢复目标数据库初始数据并自动重新全量执行变更,增量执行不阻塞执行。本申请针对目标数据库变更失败阻塞运行时,通过选择自动回滚和自动重复执行的方式增强数据库变更的自动化,提升数据库变更的效率和准确率。
图7为本申请实施例提供的一种数据库变更装置的结构示意图,数据库变更装置700包括:
获取模块701,用于获取目标数据库变更指令,并根据目标数据库变更指令停止目标服务;
处理模块702,用于根据目标数据库变更指令备份目标数据库信息,并获取目标数据库信息的备份结果,其中,目标数据库信息包括:目标数据库配置信息和目标数据库初始信息;
处理模块还基于目标数据库信息的备份结果,根据目标数据库变更脚本对目标数据库初始信息执行一次变更并生成目标数据库第一信息,并确认目标数据库第一信息是否有效;
处理模块,还用于基于有效的目标数据库第一信息,根据目标数据库回滚脚本对目标数据库初始信息执行二次变更并生成目标数据库第二信息,并确认目标数据库第二信息是否有效;
处理模块,还用于基于有效的目标数据库第二信息,生成本次变更成功指示,根据目标数据库变更脚本对目标数据库配置信息进行变更集成并生成变更集成结果,根据变更集成结果启动并验证目标服务。
可选地,当目标数据库第二信息无效时,处理模块,还用于生成本次变更失败指示,并确认目标运行环境,根据目标运行环境对目标数据库第二信息进行修正并生成修正的目标数据库第二信息;
根据修正的目标数据库第二信息执行下一次变更,其中,目标运行环境包括目标测试环境和目标部署环境。
可选地,处理模块,还用于根据目标运行环境对目标数据库第二信息进行修正,具体包括:
当目标运行环境为目标测试环境时,根据历史数据对目标数据库第二信息进行历史回滚;
当历史回滚成功时,生成目标数据库初始信息,并生成变更失败指示;
当历史回滚失败时,生成历史回滚失败指示和变更失败指示,并对目标数据库第二信息进行手工修正。
可选地,当目标运行环境为目标部署环境时,处理模块,还用于阻塞目标数据库第二信息无效部分的下一次执行,根据目标数据库第二信息有效部分修正目标数据库第二信息。
可选地,当目标数据库信息备份成功时,获取模块,还用于获取用户提交的目标SQL文件和目标SQL第一文件,其中,目标SQL文件包括程序脚本、目标数据库变更脚本、目标数据库回滚脚本;
执行程序脚本中的第一语句并确认是否根据目标数据库变更脚本对目标数据库初始信息进行一次变更;
当确认进行一次变更时,根据程序脚本的第二语句对目标数据库初始信息进行一次变更,并获取目标数据库变更脚本的一次变更结果。
可选地,处理模块,还用于执行程序脚本中的第一语句并确认是否根据目标数据库变更脚本对目标数据库初始信息进行一次变更,具体包括:
根据目标SQL文件和目标SQL第一文件确认是否存在差异项,若存在差异项,则根据目标数据库变更脚本对目标数据库初始信息进行一次变更;和/或根据目标SQL第一文件中的第一目标数据库初始信息的变更结果确定是否执行目标数据库初始信息的一次变更。
可选地,基于有效的目标数据库第一信息,处理模块,还用于根据目标数据库回滚脚本对目标数据库初始信息执行二次变更并生成目标数据库第二信息,并确认目标数据库第二信息是否有效,具体包括:
基于有效的目标数据库第一信息,根据目标数据库回滚脚本对目标数据库第一信息进行回滚;
基于成功的回滚获得目标数据库初始信息,根据目标数据库变更脚本对目标数据库初始信息执行二次变更并生成目标数据库第二信息,并确认目标数据库第二信息是否有效。
可选地,当目标数据库信息备份失败时,处理模块,还用于生成第一提示。
如图8所示,本申请一实施例提供一种电子设备800,电子设备800包括存储器801和处理器802。
其中,存储器801用于存储处理器可执行的计算机指令;
处理器802在执行计算机指令时实现上述实施例中方法中的各个步骤。具体可以参见前述方法实施例中的相关描述。
可选地,上述存储器801既可以是独立的,也可以跟处理器802集成在一起。当存储器801独立设置时,该电子设备还包括总线,用于连接存储器801和处理器802。
本申请实施例还提供一种计算机可读存储介质,计算机可读存储介质中存储有计算机指令,当处理器执行计算机指令时,实现上述实施例中方法中的各个步骤。
本申请实施例还提供一种计算机程序产品,包括计算机指令,该计算机指令被处理器执行时实现上述实施例中方法中的各个步骤。
本领域技术人员在考虑说明书及实践这里公开的发明后,将容易想到本申请的其它实施方案。本申请旨在涵盖本申请的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本申请的一般性原理并包括本申请未公开的本技术领域中的公知常识或惯用技术手段。说明书和实施例仅被视为示例性的,本申请的真正范围和精神由下面的权利要求书指出。
应当理解的是,本申请并不局限于上面已经描述并在附图中示出的精确结构,并且可以在不脱离其范围进行各种修改和改变。本申请的范围仅由所附的权利要求书来限制。

Claims (10)

1.一种数据库变更方法,其特征在于,应用于版本控制系统,所述方法包括:
获取目标数据库变更指令,并根据所述目标数据库变更指令停止目标服务;
根据所述目标数据库变更指令备份目标数据库信息,并获取所述目标数据库信息的备份结果,其中,所述目标数据库信息包括:目标数据库配置信息和目标数据库初始信息;
基于所述目标数据库信息的备份结果,根据目标数据库变更脚本对所述目标数据库初始信息执行一次变更并生成目标数据库第一信息,并确认所述目标数据库第一信息是否有效;
基于有效的目标数据库第一信息,根据目标数据库回滚脚本对所述目标数据库初始信息执行二次变更并生成目标数据库第二信息,并确认所述目标数据库第二信息是否有效;
基于有效的目标数据库第二信息,生成本次变更成功指示,根据所述目标数据库变更脚本对所述目标数据库配置信息进行变更集成并生成变更集成结果,根据所述变更集成结果启动并验证目标服务。
2.根据权利要求1所述的方法,其特征在于,所述方法还包括:
当所述目标数据库第二信息无效时,生成本次变更失败指示,并确认目标运行环境,根据目标运行环境对所述目标数据库第二信息进行修正并生成修正的目标数据库第二信息;
根据所述修正的目标数据库第二信息执行下一次变更,其中,所述目标运行环境包括目标测试环境和目标部署环境。
3.根据权利要求2所述的方法,其特征在于,根据目标运行环境对所述目标数据库第二信息进行修正,具体包括:
当目标运行环境为目标测试环境时,根据历史数据对所述目标数据库第二信息进行历史回滚;
当历史回滚成功时,生成所述目标数据库初始信息,并生成变更失败指示;
当历史回滚失败时,生成历史回滚失败指示和变更失败指示,并对目标数据库第二信息进行手工修正。
4.根据权利要求3所述的方法,其特征在于,所述方法还包括:
当目标运行环境为目标部署环境时,阻塞所述目标数据库第二信息无效部分的下一次执行,根据所述目标数据库第二信息有效部分修正所述目标数据库第二信息。
5.根据权利要求1所述的方法,其特征在于,基于所述目标数据库信息的备份结果,根据目标数据库变更脚本对所述目标数据库初始信息执行一次变更并生成目标数据库第一信息,具体包括:
当所述目标数据库信息备份成功时,获取用户提交的目标SQL文件和目标SQL第一文件,其中,所述目标SQL文件包括程序脚本、目标数据库变更脚本、目标数据库回滚脚本;
执行程序脚本中的第一语句并确认是否根据所述目标数据库变更脚本对所述目标数据库初始信息进行一次变更;
当确认进行一次变更时,根据所述程序脚本的第二语句对目标数据库初始信息进行一次变更,并获取目标数据库变更脚本的一次变更结果。
6.根据权利要求5所述的方法,其特征在于,执行程序脚本中的第一语句并确认是否根据目标数据库变更脚本对所述对目标数据库初始信息进行一次变更,具体包括:
根据所述目标SQL文件和目标SQL第一文件确认是否存在差异项,若存在差异项,则根据目标数据库变更脚本对所述目标数据库初始信息进行一次变更;和/或根据所述目标SQL第一文件中的第一目标数据库初始信息的变更结果确定是否执行目标数据库初始信息的一次变更。
7.根据权利要求1所述的方法,其特征在于,基于有效的目标数据库第一信息,根据目标数据库回滚脚本对所述目标数据库初始信息执行二次变更并生成目标数据库第二信息,并确认所述目标数据库第二信息是否有效,具体包括:
基于有效的目标数据库第一信息,根据目标数据库回滚脚本对所述目标数据库第一信息进行回滚;
基于成功的回滚获得目标数据库初始信息,根据目标数据库变更脚本对所述目标数据库初始信息执行二次变更并生成目标数据库第二信息,并确认所述目标数据库第二信息是否有效。
8.根据权利要求1所述的方法,其特征在于,所述方法还包括:
当所述目标数据库信息备份失败时,生成第一提示。
9.一种数据库变更装置,其特征在于,包括:
获取模块,用于获取目标数据库变更指令,并根据所述目标数据库变更指令停止目标服务;
处理模块,用于根据所述目标数据库变更指令备份目标数据库信息,并获取所述目标数据库信息的备份结果,其中,所述目标数据库信息包括:目标数据库配置信息和目标数据库初始信息;
处理模块还基于所述目标数据库信息的备份结果,根据目标数据库变更脚本对所述目标数据库初始信息执行一次变更并生成目标数据库第一信息,并确认所述目标数据库第一信息是否有效;
所述处理模块,还用于基于有效的目标数据库第一信息,根据目标数据库回滚脚本对所述目标数据库初始信息执行二次变更并生成目标数据库第二信息,并确认所述目标数据库第二信息是否有效;
所述处理模块,还用于基于有效的目标数据库第二信息,生成本次变更成功指示,根据所述目标数据库变更脚本对所述目标数据库配置信息进行变更集成并生成变更集成结果,根据所述变更集成结果启动并验证目标服务。
10.一种电子设备,其特征在于,包括:处理器,以及与所述处理器通信连接的存储器;
所述存储器存储计算机执行指令;
所述处理器执行所述存储器存储的计算机执行指令,以实现如权利要求1至8中任一项所述的方法。
CN202310822900.3A 2023-07-05 2023-07-05 数据库变更方法、装置及电子设备 Pending CN117131004A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202310822900.3A CN117131004A (zh) 2023-07-05 2023-07-05 数据库变更方法、装置及电子设备

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202310822900.3A CN117131004A (zh) 2023-07-05 2023-07-05 数据库变更方法、装置及电子设备

Publications (1)

Publication Number Publication Date
CN117131004A true CN117131004A (zh) 2023-11-28

Family

ID=88859062

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202310822900.3A Pending CN117131004A (zh) 2023-07-05 2023-07-05 数据库变更方法、装置及电子设备

Country Status (1)

Country Link
CN (1) CN117131004A (zh)

Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20140337282A1 (en) * 2013-05-07 2014-11-13 Red Hat Israel, Ltd. Deploying database upgrades to multiple environments in a different order
CN104243515A (zh) * 2013-06-13 2014-12-24 中兴通讯股份有限公司 一种配置信息处理方法及装置
CN111736865A (zh) * 2020-05-28 2020-10-02 苏州浪潮智能科技有限公司 一种数据库升级方法及系统
CN112130891A (zh) * 2020-09-23 2020-12-25 上海逸迅信息科技有限公司 一种数据库持续部署的方法和设备
CN113268470A (zh) * 2021-06-17 2021-08-17 重庆富民银行股份有限公司 一种高效的数据库回滚方案验证方法
CN113792052A (zh) * 2021-09-17 2021-12-14 中国农业银行股份有限公司 数据模型处理方法及装置
US20220404983A1 (en) * 2021-06-17 2022-12-22 Vmware, Inc. Data and configuration integrity checking post-rollback using backups in virtualized computing environments

Patent Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20140337282A1 (en) * 2013-05-07 2014-11-13 Red Hat Israel, Ltd. Deploying database upgrades to multiple environments in a different order
CN104243515A (zh) * 2013-06-13 2014-12-24 中兴通讯股份有限公司 一种配置信息处理方法及装置
CN111736865A (zh) * 2020-05-28 2020-10-02 苏州浪潮智能科技有限公司 一种数据库升级方法及系统
CN112130891A (zh) * 2020-09-23 2020-12-25 上海逸迅信息科技有限公司 一种数据库持续部署的方法和设备
CN113268470A (zh) * 2021-06-17 2021-08-17 重庆富民银行股份有限公司 一种高效的数据库回滚方案验证方法
US20220404983A1 (en) * 2021-06-17 2022-12-22 Vmware, Inc. Data and configuration integrity checking post-rollback using backups in virtualized computing environments
CN113792052A (zh) * 2021-09-17 2021-12-14 中国农业银行股份有限公司 数据模型处理方法及装置

Similar Documents

Publication Publication Date Title
EP3265916B1 (en) A method for identifying a cause for a failure of a test
CN110209521A (zh) 数据校验方法、装置、计算机可读存储介质和计算机设备
US20060107121A1 (en) Method of speeding up regression testing using prior known failures to filter current new failures when compared to known good results
CN106991104B (zh) 数据库脚本部署装置和数据库脚本部署方法
US20030088810A1 (en) Methods and apparatus for determining software component sizes associated with errors
CN111240980A (zh) 一种基于云管平台的自动回归测试方法
CN114880220A (zh) 车辆自动驾驶软件的开发系统和方法
CN111104155A (zh) 数据库脚本管理平台、方法及电子设备和存储介质
CN109271199B (zh) 一种用于数据库持续集成与脚本文件管理的方法及系统
CN117131004A (zh) 数据库变更方法、装置及电子设备
CN111198920B (zh) 一种基于数据库同步确定对比表快照的方法及装置
CN110597649B (zh) 一种数据处理方法、系统及装置
CN112148614A (zh) 回归测试方法及装置
EP3955127A1 (en) Automatic database schema updater
CN112883050B (zh) 一种数据库的数据变更方法及装置
CN113918162A (zh) 一种基于集中式管理模式下的前端代码自动化校验方法
CN116610551A (zh) 代码覆盖率计算方法、装置、设备和介质
CN109683980B (zh) 实现轨旁安全平台u盘配置文件可靠装载的方法
CN112579338A (zh) 一种设备的启动方法、系统及存储介质
CN111796847A (zh) 一种系统软件的校验方法及装置
CN114968338A (zh) 一种利用md5码对船用软件版本检核的系统及方法
CN111651364B (zh) 并行开发下的sql检查方法及装置
CN112860492B (zh) 一种适用于核心系统的自动化回归测试方法及系统
CN109451037B (zh) Cws容错问题中的错误修复策略的选择方法
CN113778997B (zh) 一种数据库版本管理方法、系统及设备

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination