一种数据库灾备的方法、系统、设备及介质与流程

文档序号:24941889发布日期:2021-05-04 11:34阅读:101来源:国知局
本发明涉及数据库领域,更具体地,特别是指一种数据库灾备的方法、系统、计算机设备及可读介质。
背景技术
::数据库服务作为云平台非常重要的一环,记录着关于云平台所有相关功能模块的服务信息,一旦出现异常,则会造成部署、升级、修改配置等操作失败,从实践来讲,失败场景主要集中在以下几种情况:1)原有服务容器模块出现故障,删除后需要重新部署(deploy);2)部署(deploy)新功能服务模块;3)云平台升级单个、多个及全量升级(upgrade);4)对单个或者多个模块执行修改配置(reconfigure)操作;上述场景均会存在依赖操作数据库相关操作服务的场景,比如升级cinder场景,cinder的服务对应到数据库cinder中的services表,该表包含一些cinder当前使用的availability_zone(可用域)、object_current_version(当前cinder服务使用版本号)、host(主机名)等信息,因为每个模块代码版本需要有对应的数据库表版本信息,一些值是固定的,如果被改动了,则升级过程中对数据库的操作,必然会报错,从而造成升级失败。现有的工具对数据库的recovery(恢复)维护机制还不完善,针对数据库表操作层面的灾备维护工具目前还没有专门的工具实现。技术实现要素:有鉴于此,本发明实施例的目的在于提出一种数据库灾备的方法、系统、计算机设备及计算机可读存储介质,主要面向模块数据库表的核心备份与恢复操作,具有一定的独立性,解决多架构云平台在部署、修改配置、升级过程中因为数据库非正常操作导致部署、修改配置、升级等操作执行失败的问题,提升云平台的健壮性与可靠性。基于上述目的,本发明实施例的一方面提供了一种数据库灾备的方法,包括如下步骤:循环依次登录到远程节点,在当前远程节点的模块服务配置文件目录中依次读取模块名,并读取所述模块名对应的文件以获取每个数据库的登录信息;对数据库表进行筛选以确定待备份的数据库表,并根据所述登录信息对所述待备份的数据库表进行备份;判断执行部署、修改配置或者升级时是否出现异常;以及响应于执行部署、修改配置或者升级时出现异常,确定所述异常的原因并根据所述原因通过所述备份的数据库表进行恢复。在一些实施方式中,方法还包括:将获取的登录信息与预设保存的基本登录信息进行对比;以及响应于获取的登录信息与所述基本登录信息不一致,用所述获取的登录信息更新所述基本登录信息。在一些实施方式中,所述读取所述模块名对应的文件以获取每个数据库的登录信息包括:预设信息匹配范式,读取所述模块名对应的配置文件,提取所述配置文件中数据库段的定义信息。在一些实施方式中,所述确定所述异常的原因并根据所述原因通过所述备份文件进行恢复包括:将备份数据库表以临时文件的方式导入到指定模块数据库,并比较临时文件的字段值和所述指定模块数据库的字段值;以及响应于所述临时文件的字段值与所述指定模块数据库的字段值不匹配,用所述临时文件的字段值替换所述指定模块数据库的字段值。本发明实施例的另一方面,还提供了一种数据库灾备系统,包括:获取模块,配置用于循环依次登录到远程节点,在当前远程节点的模块服务配置文件目录中依次读取模块名,并读取所述模块名对应的文件以获取每个数据库的登录信息;筛选模块,配置用于对数据库表进行筛选以确定待备份的数据库表,并根据所述登录信息对所述待备份的数据库表进行备份;判断模块,配置用于判断执行部署、修改配置或者升级时是否出现异常;以及恢复模块,配置用于响应于执行部署、修改配置或者升级时出现异常,确定所述异常的原因并根据所述原因通过所述备份的数据库表进行恢复。在一些实施方式中,系统还包括对比模块,配置用于:将获取的登录信息与预设保存的基本登录信息进行对比;以及响应于获取的登录信息与所述基本登录信息不一致,用所述获取的登录信息更新所述基本登录信息。在一些实施方式中,所述获取模块配置用于:预设信息匹配范式,读取所述模块名对应的配置文件,提取所述配置文件中数据库段的定义信息。在一些实施方式中,所述恢复模块配置用于:将备份数据库表以临时文件的方式导入到指定模块数据库,并比较临时文件的字段值和所述指定模块数据库的字段值;以及响应于所述临时文件的字段值与所述指定模块数据库的字段值不匹配,用所述临时文件的字段值替换所述指定模块数据库的字段值。本发明实施例的又一方面,还提供了一种计算机设备,包括:至少一个处理器;以及存储器,所述存储器存储有可在所述处理器上运行的计算机指令,所述指令由所述处理器执行时实现如上方法的步骤。本发明实施例的再一方面,还提供了一种计算机可读存储介质,计算机可读存储介质存储有被处理器执行时实现如上方法步骤的计算机程序。本发明具有以下有益技术效果:主要面向模块数据库表的核心备份与恢复操作,具有一定的独立性,解决多架构云平台在部署、修改配置、升级过程中因为数据库非正常操作导致部署、修改配置、升级等操作执行失败的问题,提升云平台的健壮性与可靠性。附图说明为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的实施例。图1为本发明提供的数据库灾备的方法的实施例的示意图;图2为本发明提供的数据库灾备的计算机设备的实施例的硬件结构示意图;图3为本发明提供的数据库灾备的计算机存储介质的实施例的示意图。具体实施方式为使本发明的目的、技术方案和优点更加清楚明白,以下结合具体实施例,并参照附图,对本发明实施例进一步详细说明。需要说明的是,本发明实施例中所有使用“第一”和“第二”的表述均是为了区分两个相同名称非相同的实体或者非相同的参量,可见“第一”“第二”仅为了表述的方便,不应理解为对本发明实施例的限定,后续实施例对此不再一一说明。基于上述目的,本发明实施例的第一个方面,提出了一种数据库灾备的方法的实施例。图1示出的是本发明提供的数据库灾备的方法的实施例的示意图。如图1所示,本发明实施例包括如下步骤:s1、循环依次登录到远程节点,在当前远程节点的模块服务配置文件目录中依次读取模块名,并读取模块名对应的文件以获取每个数据库的登录信息;s2、对数据库表进行筛选以确定待备份的数据库表,并根据登录信息对待备份的数据库表进行备份;s3、判断执行部署、修改配置或者升级时是否出现异常;以及s4、响应于执行部署、修改配置或者升级时出现异常,确定异常的原因并根据原因通过备份的数据库表进行恢复。本发明实施例提出了一种开放性的多架构云平台数据库灾备工具集系统性设计机制,主要面向模块数据库表的核心备份与恢复操作,具有一定的独立性,解决多架构云平台在部署、修改配置、升级过程中因为数据库非正常操作导致部署、修改配置、升级等操作执行失败的问题,提升云平台的健壮性与可靠性;本发明实施例将模块数据库登录信息获取工具a、模块数据库表查询工具b、模块数据库表备份筛选清单工具c、模块数据库表备份工具d与模块数据库表备份恢复工具e综合使用,各个工具模块既具有独立性与可分拆性,又存在一定的逻辑相关性,组成一个完整的数据库灾备工具集系统,一旦遇到数据库相关的操作异常,则可综合使用这些工具执行相匹配的操作,从而快速修复异常。使用模块数据库登录信息获取工具a获取数据库登录方式及密码并保存为本地文件。首先,检查数据库保存目录是否存在,如果数据库保存目录不存在则进行创建:mkdir/tmp/module_database_save_directory(此处只是举例,并不是进行限定);如果存在数据库保存目录则继续进行判断登录信息文件module_database_login_info(此处同样是举例)是否存在,如果不存在,则进行vi、vim或者其他方式进行创建该文件,如果存在,则继续执行后续步骤。执行循环依次登录到远程节点,在当前远程节点的模块服务配置文件目录中依次读取模块名,并读取模块名对应的文件以获取每个数据库的登录信息。在本实施例中包括外循环和内循环,外循环用于登录到每一个节点,内循环用于在一个节点中获取所有的数据库登录信息。具体的,外循环逻辑实现方法:读取云平台当前节点(一般为数据库服务节点或者控制节点)集群主机信息配置文件,平台节点一般比较多,尤其生产环境,结合hosts文件,执行循环顺次登录到远程节点,然后切换到模块服务(module)配置文件目录。内循环逻辑实现方法:在当前节点模块服务(module)配置文件目录下,执行如下循环逻辑:顺次读取模块(module_name)名并切换到到指定服务目录下,扫描并读取文件,提取配置文件中关于数据库(database)登录的信息并进行对模块名打tag记录到登录信息文件中进行保存。在一些实施方式中,所述读取所述模块名对应的文件以获取每个数据库的登录信息包括:预设信息匹配范式,读取所述模块名对应的配置文件,提取所述配置文件中数据库段的定义信息。数据库登录信息提取方法:首先编写好信息匹配范式,然后读取配置文件,提取数据库(database)段的定义信息,遵循格式:模块名(module_name)-密码(password),然后进行保存到登录信息文件中。在一些实施方式中,方法还包括:将获取的登录信息与预设保存的基本登录信息进行对比;以及响应于获取的登录信息与所述基本登录信息不一致,用所述获取的登录信息更新所述基本登录信息。保存数据库段的定义信息之前首先进行判断当前要保存的模块及数据库登录信息是否存在,如果存在,则判断提取到的密码与文件中指定模块的密码是否一致,如果不一致,则进行替换更新,如果不存在,则直接进行保存。云平台一般是多节点,可能同一种功能模块服务会部署到多个节点上,故从远端节点保存到数据库信息记录保存节点上时,就需要进行如下处理:将节点传递来的模块及数据库登录信息与数据库登录信息文件中保存的已有信息进行比较,如果一致,则直接跳出循环,执行下一次循环,如果不一致,则用获取到的两个密码分别进行数据库测试性登录并返回是否可以正常登录的信息提示(因为数据库也分多种,此处秉承一定的开源特性,只需要封装好对应的数据库登录测试命令即可),最终以可以进行正常登录的密码信息为准并进行保存。从远端节点传递数据信息的实现方式不唯一,具有开放性,因为云平台所用的三方远程登录工具可能不唯一,只需要封装相关的命令即可,举例如下:比如数据库信息保存节点为a,远端节点为b,如果想保存一个模块nova_api数据库登录信息到a节点的/tmp/module_database_save_directory/module_database_login_info中,可首先将获取到的b节点的信息保存在一个临时文件nova_api_database_info中,然后传输到节点a中,读取module_database_login_info与nova_api_database_info,比对关于nova_api的数据库信息,这样就实现了数据的传输与比较。使用模块数据库表查询工具b对待备份数据库表进行查询。鉴于云平台模块众多,一般每个模块数据库表存在多个,有些表因为是实时更新的,比如资源表,操作比较频繁,这种表对部署(deploy)、修改配置(reconfigure)、升级(upgrade)的影响可能较小,所以备份时对这种表需要针对性和筛选性备份,故需要提前进行每个模块的数据库表的查询及记录。实现方法逻辑:读取登录信息文件中关于module(模块)的数据库登录信息,封装命令,然后进行登录,查询并保存至/tmp/module_table_info临时文件中,封装命令实现举例:1)dockerexec进入数据库容器;2)mysql–u<module_name>-p<module_password>-d<module_database_name>>/tmp/module_table_info<<eof;usemodule_database_name;showtables;eof。对数据库表进行筛选以确定待备份的数据库表,并根据登录信息对待备份的数据库表进行备份。使用模块数据库表备份筛选清单工具c筛选出待备份的数据库表。根据/tmp/module_table_info表信息,确定需要备份的模块数据库表种类(module_table_name),如果存在不需要进行备份的表,则使用工具删除多余的表的名称。实现方法逻辑:输入删除(delete)、模块名(module_name)、表(module_table_name)名称参数,程序开始执行,获取参数(支持一个或者多个表参数名),进行读取/tmp/module_table_info文件,执行循环,将获取到的参数名与module_table_info文件中表名称进行匹配判断并执行删除操作,循环完成,module_table_info文件中保存的表数量与种类即为最终要进行备份的模块表(module_table_name)。使用模块数据库表备份工具d对待备份数据库表进行备份。结合工具c所确定的module_table_info文件中保存的表开始执行备份操作。实现方法逻辑:执行程序,读取module_table_info文件,开始循环,提前封装数据库表备份命令,判断/tmp/module_database_table_backup(为避免混乱,分模块进行创建目录保存)目录是否存在,如果存在,则顺次对module_table_info文件中的所有表进行备份,如果不存在,则进行创建,然后执行保存;判断执行部署、修改配置或者升级时是否出现异常。响应于执行部署、修改配置或者升级时出现异常,确定异常的原因并根据原因通过备份文件进行恢复。执行部署(deploy)、修改配置(reconfigure)或者升级(upgrade)时(三种情况下支持单个或者多个模块),观察判断是否出现数据库相关的操作异常,如果出现异常,则使用工具e,如果否,则结束(备注:部署、修改配置或者升级,从生产实践分析来看,本质是一样的,都是数据库发生了某些不可改变的操作导致的)。在一些实施方式中,所述确定所述异常的原因并根据所述原因通过所述备份文件进行恢复包括:将备份数据库表以临时文件的方式导入到指定模块数据库,并比较临时文件的字段值和所述指定模块数据库的字段值;以及响应于所述临时文件的字段值与所述指定模块数据库的字段值不匹配,用所述临时文件的字段值替换所述指定模块数据库的字段值。使用模块数据库表备份恢复工具e执行数据库表的备份恢复操作。实现方法逻辑:输入参数:恢复操作(recovery)、模块名(如果为空,默认所有模块都要执行扫描恢复操作<all_module>,如果单个或者多个,则执行对应的恢复操作),执行恢复操作:首先扫描/tmp/module_table_info文件(可能不止一个),执行循环操作,主要面向5种情况进行循环操作:1)字段值被修改过:分别读取指定模块module_table_info文件中的表名信息,登录模块数据库(module_database_name),将备份的数据库表以临时tmp_module_table_name的方式导入到指定模块数据库(module_database_name)中,然后执行循环检测比较,比较数据库表module_table_name与tmp_module_table_name的字段值,如果发现不匹配,则将tmp_module_table_name中的字段值进行提取并更新替换到指定模块(module_name)的数据库表module_table_name对应字段值中,没有变动的表字段,则直接显示正常(normal)跳过直至循环完成;2)字段值缺失:分别读取指定模块module_table_info文件中的表名信息,登录模块数据库(module_database_name),将备份的数据库表以临时tmp_module_table_name的方式导入到指定模块数据库(module_database_name)中,然后执行循环检测比较,比较数据库表module_table_name与tmp_module_table_name的字段值,如果发现表缺失,则将tmp_module_table_name中的对应表进行导入恢复到指定模块(module_name)的数据库表module_table_name对应字段值中,直至循环完成;3)字段值增加:分别读取指定模块module_table_info文件中的表名信息,登录模块数据库(module_database_name),将备份的数据库表以临时tmp_module_table_name的方式导入到指定模块数据库(module_database_name)中,然后执行循环检测比较,比较数据库表module_table_name与tmp_module_table_name的字段值,如果发现表字段值多了,则将指定模块(module_name)的数据库表module_table_name对应字段值进行删除,直至循环完成;4)模块数据库表有多余的表存在:读取指定模块module_table_info文件中的表名信息,登录模块数据库(module_database_name),进行表的比对,如果发现存在陌生的多余表存在,则执行删除操作,直至循环完成其他模块类似操作;5)模块数据库表的缺失:读取指定模块module_table_info文件中的表名信息,登录模块数据库(module_database_name),进行表的比对,如果发现少了需要的表,则执行对应表的导入恢复操作,直至循环完成,其他模块类似操作;在上述恢复操作循环执行完成后,进行循环删除临时数据库表tmp_module_table_name。需要特别指出的是,上述数据库灾备的方法的各个实施例中的各个步骤均可以相互交叉、替换、增加、删减,因此,这些合理的排列组合变换之于数据库灾备的方法也应当属于本发明的保护范围,并且不应将本发明的保护范围局限在实施例之上。基于上述目的,本发明实施例的第二个方面,提出了一种数据库灾备的系统,包括:获取模块,配置用于循环依次登录到远程节点,在当前远程节点的模块服务配置文件目录中依次读取模块名,并读取所述模块名对应的文件以获取每个数据库的登录信息;筛选模块,配置用于对数据库表进行筛选以确定待备份的数据库表,并根据所述登录信息对所述待备份的数据库表进行备份;判断模块,配置用于判断执行部署、修改配置或者升级时是否出现异常;以及恢复模块,配置用于响应于执行部署、修改配置或者升级时出现异常,确定所述异常的原因并根据所述原因通过所述备份的数据库表进行恢复。在一些实施方式中,系统还包括对比模块,配置用于:将获取的登录信息与预设保存的基本登录信息进行对比;以及响应于获取的登录信息与所述基本登录信息不一致,用所述获取的登录信息更新所述基本登录信息。在一些实施方式中,所述获取模块配置用于:预设信息匹配范式,读取所述模块名对应的配置文件,提取所述配置文件中数据库段的定义信息。在一些实施方式中,所述恢复模块配置用于:将备份数据库表以临时文件的方式导入到指定模块数据库,并比较临时文件的字段值和所述指定模块数据库的字段值;以及响应于所述临时文件的字段值与所述指定模块数据库的字段值不匹配,用所述临时文件的字段值替换所述指定模块数据库的字段值。基于上述目的,本发明实施例的第三个方面,提出了一种计算机设备,包括:至少一个处理器;以及存储器,存储器存储有可在处理器上运行的计算机指令,指令由处理器执行以实现如下步骤:s1、循环依次登录到远程节点,在当前远程节点的模块服务配置文件目录中依次读取模块名,并读取模块名对应的文件以获取每个数据库的登录信息;s2、对数据库表进行筛选以确定待备份的数据库表,并根据登录信息对待备份的数据库表进行备份;s3、判断执行部署、修改配置或者升级时是否出现异常;以及s4、响应于执行部署、修改配置或者升级时出现异常,确定异常的原因并根据原因通过备份的数据库表进行恢复。在一些实施方式中,步骤还包括:将获取的登录信息与预设保存的基本登录信息进行对比;以及响应于获取的登录信息与所述基本登录信息不一致,用所述获取的登录信息更新所述基本登录信息。在一些实施方式中,所述读取所述模块名对应的文件以获取每个数据库的登录信息包括:预设信息匹配范式,读取所述模块名对应的配置文件,提取所述配置文件中数据库段的定义信息。在一些实施方式中,所述确定所述异常的原因并根据所述原因通过所述备份文件进行恢复包括:将备份数据库表以临时文件的方式导入到指定模块数据库,并比较临时文件的字段值和所述指定模块数据库的字段值;以及响应于所述临时文件的字段值与所述指定模块数据库的字段值不匹配,用所述临时文件的字段值替换所述指定模块数据库的字段值。如图2所示,为本发明提供的上述数据库灾备的计算机设备的一个实施例的硬件结构示意图。以如图2所示的装置为例,在该装置中包括一个处理器201以及一个存储器202,并还可以包括:输入装置203和输出装置204。处理器201、存储器202、输入装置203和输出装置204可以通过总线或者其他方式连接,图2中以通过总线连接为例。存储器202作为一种非易失性计算机可读存储介质,可用于存储非易失性软件程序、非易失性计算机可执行程序以及模块,如本申请实施例中的数据库灾备的方法对应的程序指令/模块。处理器201通过运行存储在存储器202中的非易失性软件程序、指令以及模块,从而执行服务器的各种功能应用以及数据处理,即实现上述方法实施例的数据库灾备的方法。存储器202可以包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需要的应用程序;存储数据区可存储根据数据库灾备的方法的使用所创建的数据等。此外,存储器202可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他非易失性固态存储器件。在一些实施例中,存储器202可选包括相对于处理器201远程设置的存储器,这些远程存储器可以通过网络连接至本地模块。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。输入装置203可接收输入的用户名和密码等信息。输出装置204可包括显示屏等显示设备。一个或者多个数据库灾备的方法对应的程序指令/模块存储在存储器202中,当被处理器201执行时,执行上述任意方法实施例中的数据库灾备的方法。执行上述数据库灾备的方法的计算机设备的任何一个实施例,可以达到与之对应的前述任意方法实施例相同或者相类似的效果。本发明还提供了一种计算机可读存储介质,计算机可读存储介质存储有被处理器执行时执行如上方法的计算机程序。如图3所示,为本发明提供的上述数据库灾备的计算机存储介质的一个实施例的示意图。以如图3所示的计算机存储介质为例,计算机可读存储介质3存储有被处理器执行时执行如上方法的计算机程序31。最后需要说明的是,本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,可以通过计算机程序来指令相关硬件来完成,数据库灾备的方法的程序可存储于一计算机可读取存储介质中,该程序在执行时,可包括如上述各方法的实施例的流程。其中,程序的存储介质可为磁碟、光盘、只读存储记忆体(rom)或随机存储记忆体(ram)等。上述计算机程序的实施例,可以达到与之对应的前述任意方法实施例相同或者相类似的效果。以上是本发明公开的示例性实施例,但是应当注意,在不背离权利要求限定的本发明实施例公开的范围的前提下,可以进行多种改变和修改。根据这里描述的公开实施例的方法权利要求的功能、步骤和/或动作不需以任何特定顺序执行。此外,尽管本发明实施例公开的元素可以以个体形式描述或要求,但除非明确限制为单数,也可以理解为多个。应当理解的是,在本文中使用的,除非上下文清楚地支持例外情况,单数形式“一个”旨在也包括复数形式。还应当理解的是,在本文中使用的“和/或”是指包括一个或者一个以上相关联地列出的项目的任意和所有可能组合。上述本发明实施例公开实施例序号仅仅为了描述,不代表实施例的优劣。本领域普通技术人员可以理解实现上述实施例的全部或部分步骤可以通过硬件来完成,也可以通过程序来指令相关的硬件完成,程序可以存储于一种计算机可读存储介质中,上述提到的存储介质可以是只读存储器,磁盘或光盘等。所属领域的普通技术人员应当理解:以上任何实施例的讨论仅为示例性的,并非旨在暗示本发明实施例公开的范围(包括权利要求)被限于这些例子;在本发明实施例的思路下,以上实施例或者不同实施例中的技术特征之间也可以进行组合,并存在如上的本发明实施例的不同方面的许多其它变化,为了简明它们没有在细节中提供。因此,凡在本发明实施例的精神和原则之内,所做的任何省略、修改、等同替换、改进等,均应包含在本发明实施例的保护范围之内。当前第1页12当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1