本发明涉及数据库变更,一种数据库变更方法及系统、电子设备、存储介质。
背景技术:
1、随着云计算和大数据技术的不断发展,mpp云数据仓库支撑业务规模越来越庞大,应用开发人员在全行生产运行环境中对于数据库变更的需求日益增多。
2、现有技术中,数据库的变更、变更验证和变更回退自动化程度较低,依靠人工编写脚本执行,耗费人力并且效率低下。
3、因此,如何实现数据库变更、变更验证和变更回退的自动化,是目前急需解决的问题。
技术实现思路
1、有鉴于此,本发明实施例提供一种数据库变更方法及系统、电子设备、存储介质,以实现自动化执行数据库变更、变更验证和变更回退的目的。
2、为实现上述目的,本发明实施例提供如下技术方案:
3、本发明实施例第一方面公开了一种数据库变更方法,所述方法包括:
4、获取针对目标数据库的变更工单,并提取所述变更工单中的变更信息;
5、基于预设的语义分析规则对所述变更信息进行正确性校验;
6、若所述变更信息通过所述正确性校验,则基于所述变更信息,生成变更脚本、验证脚本和回退脚本;
7、执行所述变更脚本对所述目标数据库进行变更;
8、执行所述验证脚本判断所述目标数据库变更是否成功;
9、若是,确定所述目标数据库变更完成;
10、若否,执行所述回退脚本,将所述目标数据库回退到执行所述变更脚本前的状态。
11、优选的,所述变更信息至少包括主机ip、变更场景、变更类型、变更对象名称和各个变更参数值,所述针基于预设的语义分析规则对所述变更信息进行正确性校验,包括:
12、验证所述主机ip是否存在;
13、若所述主机ip存在,针对每一所述变更参数值,获取对应的验证信息,判断所述变更参数值与所述验证信息是否匹配;
14、若每一所述变更参数值均与对应的验证信息匹配,则基于所述变更场景、所述变更类型和所述变更对象名称,生成审核脚本;
15、执行所述审核脚本,判断所述目标数据库中是否存在所述变更对象名称对应的变更对象;
16、若是,并且所述变更类型为修改或删除,则确定所述变更信息通过所述正确性校验;
17、若否,并且所述变更类型为新增,则确定所述变更信息通过所述正确性校验。
18、优选的,所述基于所述变更场景、所述变更类型和所述变更对象名称,生成审核脚本,包括:
19、获取所述变更场景对应的预设查询语句集合;
20、从所述预设查询语句集合中获取所述变更类型对应的查询语句;
21、将所述变更对象名称与所述查询语句进行拼接,得到完整的查询语句;
22、基于完整的查询语句生成审核脚本。
23、优选的,所述若所述变更信息通过所述正确性校验,则基于所述变更信息,生成变更脚本、验证脚本和回退脚本,包括:
24、若所述变更信息通过所述正确性校验,则基于变更信息,从预设语句集合中分别提取相应的变更语句、验证语句和回退语句;
25、基于变更信息,对所述变更语句、所述验证语句和所述回退语句分别进行拼接,得到完整的所述变更语句、所述验证语句和所述回退语句;
26、基于完整的所述变更语句、所述验证语句和所述回退语句,分别生成变更脚本、验证脚本和回退脚本。
27、优选的,所述方法还包括:
28、若执行所述变更脚本或所述验证脚本过程中产生错误信息,则展示所述错误信息;
29、当接收到用户输入的回退指令时,执行所述回退脚本将所述目标数据库回退到执行所述变更脚本前的状态。
30、本发明实施例第二方面公开了一种数据库变更系统,所述系统包括:
31、获取模块,用于获取针对目标数据库的变更工单,并提取所述变更工单中的变更信息;
32、校验模块,用于基于预设的语义分析规则对所述变更信息进行正确性校验;
33、生成模块,用于若所述变更信息通过所述正确性校验,则基于所述变更信息,生成变更脚本、验证脚本和回退脚本;
34、执行模块,用于执行所述变更脚本对所述目标数据库进行变更;执行所述验证脚本判断所述目标数据库变更是否成功;若是,确定所述目标数据库变更完成;若否,执行所述回退脚本,将所述目标数据库回退到执行所述变更脚本前的状态。
35、优选的,所述变更信息至少包括主机ip、变更场景、变更类型、变更对象名称和各个变更参数值,所述校验模块,包括:
36、验证单元,用于验证所述主机ip是否存在;若所述主机ip存在,针对每一所述变更参数值,获取对应的验证信息,判断所述变更参数值与所述验证信息是否匹配;
37、生成单元,用于若每一所述变更参数值均与对应的验证信息匹配,则基于所述变更场景、所述变更类型和所述变更对象名称,生成审核脚本;
38、执行单元,用于执行所述审核脚本,判断所述目标数据库中是否存在所述变更对象名称对应的变更对象;若是,并且所述变更类型为修改或删除,则确定所述变更信息通过所述正确性校验;若否,并且所述变更类型为新增,则确定所述变更信息通过所述正确性校验。
39、优选的,所述生成单元,具体用于:
40、获取所述变更场景对应的预设查询语句集合;
41、从所述预设查询语句集合中获取所述变更类型对应的查询语句;
42、将所述变更对象名称与所述查询语句进行拼接,得到完整的查询语句;
43、基于完整的查询语句生成审核脚本。
44、本发明实施例第三方面公开了一种存储介质,用于存储计算机程序,所述计算机程序被执行时,具体用于实现如本发明实施例第一方面任一所述的数据库变更方法。
45、本发明实施例第四方面公开了一种电子设备,包括:存储器和处理器;
46、所述存储器用于存储计算机程序;
47、所述处理器用于执行所述计算机程序,具体用于实现如本发明实施例第一方面任一所述的数据库变更方法。
48、基于上述本发明实施例提供的一种数据库变更方法及系统、电子设备、存储介质,获取针对目标数据库的变更工单,并提取所述变更工单中的变更信息;基于预设的语义分析规则对所述变更信息进行正确性校验;若所述变更信息通过所述正确性校验,则基于所述变更信息,生成变更脚本、验证脚本和回退脚本;执行所述变更脚本对所述目标数据库进行变更;执行所述验证脚本判断所述目标数据库变更是否成功;若是,确定所述目标数据库变更完成;若否,执行所述回退脚本,将所述目标数据库回退到执行所述变更脚本前的状态。在本方案中,基于变更工单中的变更信息生成变更脚本、验证脚本和回退脚本,执行变更脚本对目标数据库进行变更,执行验证脚本判断目标数据库变更是否成功,若变更不成功执行回退脚本进行变更回退,从而实现了自动化执行数据库变更、变更验证和变更回退的目的,解决了耗费人力效率低下的问题。