数据库中故障表的修复方法、装置、电子设备及存储介质与流程

文档序号:15982215发布日期:2018-11-17 00:27阅读:196来源:国知局
本发明涉及数据库
技术领域
:,特别是涉及一种数据库中故障表的修复方法、装置、电子设备及存储介质。
背景技术
:数据库是指在存储设备上合理存放的、相关联的、有结构的数据表集合。如,关联数据库mysql,即将数据保存在多个有关联的表中。实际应用过程中,数据库中的表会因异常原因出现故障,如安装数据库的电子设备异常关机、运行数据库的系统受到攻击等,如此会造成数据库中数据的丢失。为了避免数据的丢失,需要对出现故障的表进行修复。现有技术中是通过人工手动的方式对出现故障的表进行修复的。但是一般情况下,数据库中是通过大量的表保存数据的,例如,几百个、几千个,甚至上万个。如果通过人工手动修复的话,需要人工从多个表中搜索到出现故障的表并对其进行修复,如此使得修复效率比较低。技术实现要素:本发明实施例的目的在于提供一种数据库中故障表的修复方法、装置、电子设备及存储介质,以提高修复效率。具体技术方案如下:第一方面,本发明实施例提供了一种数据库中故障表的修复方法,包括:获取数据库日志;所述数据库日志中记录有所述数据库中包括的各个表分别对应的状态信息;根据所述各个表分别对应的状态信息,确定目标表是否出现故障;当确定所述目标表出现故障时,确定所述目标表中的数据量;其中,所述目标表为所述数据库中包括的任一表;在所述数据量大于或等于预设阈值时,获取并使用已备份的表覆盖所述目标表;在所述数据量小于所述预设阈值时,通过repairtable方式修复所述目标表。可选的,在所述根据所述各个表分别对应的状态信息,确定目标表是否出现故障之前,所述方法还包括:预先备份所述数据库中包括的各个表。可选的,在所述确定所述目标表出现故障之后,所述方法还包括:确定所述目标表的标识信息;记录所述标识信息,并向所述目标表对应的用户发送包括所述标识信息的告警信息。可选的,在所述使用已备份的表覆盖所述目标表,或通过repairtable方式修复所述目标表之后,所述方法还包括:向所述目标表对应的用户发送用于通知所述目标表已修复的修复信息。第二方面,本发明实施例提供了一种数据库中故障表的修复装置,包括:获取模块,用于获取数据库日志;所述数据库日志中记录有所述数据库中包括的各个表分别对应的状态信息;第一确定模块,用于根据所述各个表分别对应的状态信息,确定目标表是否出现故障;当确定所述目标表出现故障时,确定所述目标表中的数据量;其中,所述目标表为所述数据库中包括的任一表;覆盖模块,用于在所述数据量大于或等于预设阈值时,获取并使用已备份的表覆盖所述目标表;修复模块,用于在所述数据量小于所述预设阈值时,通过repairtable方式修复所述目标表。可选的,所述装置还包括:备份模块,用于预先备份所述数据库中包括的各个表。可选的,所述装置还包括:第二确定模块,用于确定所述目标表的标识信息;记录模块,用于记录所述标识信息;第一发送模块,用于向所述目标表对应的用户发送包括所述标识信息的告警信息。可选的,所述装置还包括:第二发送模块,用于向所述目标表对应的用户发送用于通知所述目标表已修复的修复信息。第三方面,本发明实施例提供了一种电子设备,包括处理器、通信接口、存储器和通信总线,其中,所述处理器,所述通信接口,所述存储器通过所述通信总线完成相互间的通信;所述存储器,用于存放计算机程序;所述处理器,用于执行所述存储器上所存放的程序时,实现第一方面所述的方法步骤。第四方面,本发明实施例提供了一种计算机可读存储介质,所述计算机可读存储介质内存储有计算机程序,所述计算机程序被处理器执行时实现第一方面所述的方法步骤。本发明实施例提供的数据库中故障表的修复方法、装置、电子设备及存储介质,可以获取数据库日志;数据库日志中记录有数据库中包括的各个表分别对应的状态信息;根据各个表分别对应的状态信息,确定目标表是否出现故障;当确定目标表出现故障时,确定目标表中的数据量;其中,目标表为数据库中包括的任一表;在数据量大于或等于预设阈值时,获取并使用已备份的表覆盖目标表;在数据量小于预设阈值时,通过repairtable方式修复目标表。如此,在对数据库中故障表进行修复的过程中,不再需要人工从多个表中搜索到故障表并对其进行修复,可以实现对数据库中故障表的自动修复,如此能够提高修复效率。附图说明为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。图1为本发明实施例提供的数据库中故障表的修复方法的流程图;图2为本发明实施例提供的数据库中故障表的修复装置的结构示意图;图3为本发明实施例提供的电子设备的结构示意图。具体实施方式下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。本发明实施例提供了一种数据库中故障表的修复方法,如图1所示,包括:s101,获取数据库日志。其中,数据库日志中记录有数据库中包括的各个表分别对应的状态信息。本发明实施例提供的数据库中故障表的修复方法可以应用于电子设备,其中,该电子设备可以包括台式计算机、便携式计算机、智能移动终端等。数据库通过多个有关联的表,对数据进行存储、管理等。例如,数据库中通过表1记录班级中各个学生的学号以及年龄,通过表2记录班级中各个学生的成绩。表1和表2通过学生的姓名进行关联,如此,可以将班级中各个学生的姓名、电话号码以及成绩对应起来。另外,本发明实施例中,数据库可以包括主数据库、从数据库。其中,主数据库简称主库,即集中存储管理历史归档数据的场所,永久保管具有长期保留价值、有共享需求的、经过数据质量检查验证的、规范化的数据。从数据库是相对主数据库的概念,可以是保存主数据库中部分数据的数据库。且数据库中各个表的数据是不断更新的。当该班级中新加入学生时,需要在表1和表2中增加记录,如在表1中增加包括新加入学生的姓名以及该学生的学号及年龄的记录。另外,数据库中的各个表会因异常原因出现故障,如安装数据库的电子设备异常关机、运行数据库的系统受到攻击等,使得数据库中的表无法打开等。为了能够实时地记录数据库中各个表的状态变化,例如,表中数据的更新,表出现故障等,本发明实施例中可以通过数据库日志记录数据库中各个表状态的变化,可以确定各个表状态变化过程中对应的信息为各个表的状态信息。具体地,各个表的状态信息可以包括:各个表的数据的更新,如,修改、增加、删除等。例如,当表1中增加记录时,可以记录状态信息为增加记录;而当表1中删除记录时,可以记录状态信息为删除记录,等等。另外,各个表的状态信息还可以包括:数据库中表出现故障的状态信息。例如,当数据库中表出现故障时,如因运行数据库的系统受到攻击使得数据库中的表无法打开时,可以在数据库日志中记录该表的状态信息为:出现故障:或者更具体地可以记录该表的状态信息为:出现故障-无法打开。如此,本发明实施中,数据库日志可以实时记录数据库中各个表的状态信息,通过数据库日志可以实时监控数据库中各个表的状态变化,以使可以获取数据库日志,并通过数据库日志实时确定数据库中的各个表是否出现故障,并在表出现故障时,进行修复。s102,根据各个表分别对应的状态信息,确定目标表是否出现故障;当确定目标表出现故障时,确定目标表中的数据量。其中,目标表为数据库中包括的任一表。因为数据库日志中记录各个表的状态信息时,是按照预设规则记录的,电子设备获取到数据库日志,可以检测数据库日志记录中各个表的状态信息,在检测到按照该预设规则记录的状态信息时,可以确定该表出现故障,该表即为目标表。例如,当表出现故障时,数据库日志中记录该表对应的状态信息为:出现故障;如此,电子设备获取到数据库日志,可以检测数据库日志记录中各个表的状态信息,当检测到“出现故障”的内容时,即可确定该状态信息对应的该表出现故障。另外,更具体地,当表出现故障时,数据库日志记录的状态信息不仅包括该表出现故障,而且包括出现的具体故障,例如,数据库日志中记录状态信息为;出现故障-无法打开,如此,在检测到数据库日志中记录的各个表的状态信息时,不仅能确定该状态信息对应的该表出现故障,且能够确定该表出现的是具体的哪种故障。当确定目标表出现故障时,为了避免数据表中数据的丢失,以及避免在应用该目标表的过程中出现错误等,需要对该目标表进行修复。且因为不同的表包括的数据量是不相同的,而对不同数据量的表进行修复的复杂度是不相同的,如果表中数据量过大,则会导致当该表出现故障时,对故障表进行修复的复杂度过高。为了保证在对故障表进行修复的过程中,修复的复杂度不至于过高,本发明实施中针对不同数据量的表通过不同的方式进行修复。如此,本发明实施例中,在确定目标表出现故障时,确定目标表中的数据量。其中,数据量可以通过目标表所占的内存空间表示,或者也可以通过目标表中的记录总个数表示。确定目标表的数据量后,针对不同数据量的表通过不同的方式进行修复。在目标表的数据量大于或等于预设阈值时,执行步骤s103;在目标表的数据量小于预设阈值时,执行步骤s104。其中,预设阈值可以根据实际情况确定。例如,当目标表的数据量是通过该目标表所占的内存空间表示时,可以确定预设阈值为1gb、2gb等等;或者,当目标表的数据量是通过该目标表中的记录总个数表示时,可以确定预设阈值为1000个、2000个等等。s103,获取并使用已备份的表覆盖目标表。本发明实施例中,在根据各个表分别对应的状态信息,确定目标表是否出现故障之前,还可以包括:预先备份数据库中包括的各个表。如此,在确定目标表出现故障时,可以直接获取已备份的表,并使用该已备份的表覆盖该目标表,如此实现对目标表的修复。具体地,可以将数据库中的各个表备份至、保存该数据库的存储位置1。或者,也可以将数据库中的各个表备份至不同于该存储位置1的存储位置。例如,运行该数据库的设备之外的外部存储器等等。此时,本发明实施例中,电子设备通过与该外部存储器进行交互,获取数据库中各个表对应的已备份的表。为了避免由于安装数据库的电子设备异常关机、运行数据库的系统受到攻击等原因,使得数据库出现故障的同时对备份的各个表产生损坏。本发明一种优选的实施例中,选择将数据库中的各个表备份至不同于保存该数据库的存储位置1的存储位置。如此,当目标表的数据量过大时,直接使用预先备份的、未被损坏的表,覆盖出现故障的目标表,如此能够降低修复的复杂度。s104,通过repairtable方式修复目标表。repairtable方式在数据量不大时,可以保证修复的复杂度。因此,本发明实施例中在目标表的数据量小于预设阈值时,可以通过repairtable方式修复目标表。具体地,可以通过执行语句:repairtable表名,或者通过执行语句:repairtable表名[选项],实现对目标表的修复。其中,表名即可以是目标表的表名称,如,学生成绩表等。其中,选项可以包括:quick、或extended等。quick,用于在目标表还未被修改的情况下,速度最快;extended,用于恢复每个数据行,修复过程中会产生垃圾数据行。本发明实施例中,在对数据库中故障表进行修复的过程中,不再需要人工从多个表中搜索到故障表并对其进行修复,可以实现对数据库中故障表的自动修复,如此能够提高修复效率。本发明一种可选的实施例中,在确定目标表出现故障之后,本发明实施例提供的数据库中故障表的修复方法还可以包括:a1,确定目标表的标识信息。标识信息可以包括目标表的表名称,例如,学生成绩表;和/或可以包括目标表的编号,例如,表1;等等。本发明实施例中,电子设备在确定目标表出现故障之后,可以从数据库日志中确定目标表的标识信息。a2,记录标识信息,并向目标表对应的用户发送包括标识信息的告警信息。目标表对应的用户可以是使用该目标表的用户,或者也可以是对包括该目标表的数据库进行管理的管理人员等等。电子设备向目标表对应的用户发送该包括标识信息的告警信息,可以通过向目标表对应的用户的用户终端,例如,个人计算机、平板电脑、手机等,发送该告警信息来完成,如此使得目标表对应的用户可以通过用户终端接收该告警信息。本发明实施例中,能够使得在目标表出现故障时,及时地通知目标表对应的用户,进而目标表对应的用户及时地了解目标表的状态。本发明另一种可选的实施例中,在使用已备份的表覆盖目标表,或通过repairtable方式修复目标表之后,还包括:向目标表对应的用户发送用于通知目标表已修复的修复信息。目标表对应的用户如上述实施例中所述,可以是使用该目标表的用户,或者也可以是对包括该目标表的数据库进行管理的管理人员等等。对应地,电子设备向目标表对应的用户发送该修复信息,可以通过向目标表对应的用户的用户终端发送该修复信息来完成,如此使得目标表对应的用户可以通过用户终端接收该修复信息。本发明实施例中,能够使得在目标表已修复时,及时地通知目标表对应的用户,进而目标表对应的用户可以及时地了解目标表的状态。且可以使使用该目标表的用户,在目标表已修复时可以及时地使用,降低目标表出现故障对使用该目标表过程的影响。本发明实施例提供了一种数据库中故障表的修复装置,如图2所示,包括:获取模块201,用于获取数据库日志;数据库日志中记录有数据库中包括的各个表分别对应的状态信息;第一确定模块202,用于根据各个表分别对应的状态信息,确定目标表是否出现故障;当确定目标表出现故障时,确定目标表中的数据量;其中,目标表为数据库中包括的任一表;覆盖模块203,用于在数据量大于或等于预设阈值时,获取并使用已备份的表覆盖目标表;修复模块204,用于在数据量小于预设阈值时,通过repairtable方式修复目标表。本发明实施例中,在对数据库中故障表进行修复的过程中,不再需要人工从多个表中搜索到故障表并对其进行修复,可以实现对数据库中故障表的自动修复,如此能够提高修复效率。可选的,该装置还包括:备份模块,用于预先备份数据库中包括的各个表。可选的,该装置还包括:第二确定模块,用于确定目标表的标识信息;记录模块,用于记录标识信息;第一发送模块,用于向目标表对应的用户发送包括标识信息的告警信息。可选的,该装置还包括:第二发送模块,用于向目标表对应的用户发送用于通知目标表已修复的修复信息。需要说明的是,本发明实施例提供的数据库中故障表的修复装置是应用上述数据库中故障表的修复方法的装置,则上述数据库中故障表的修复方法的所有实施例均适用于该装置,且均能达到相同或相似的有益效果。本发明实施例还提供了一种电子设备,如图3所示,包括处理器301、通信接口302、存储器303和通信总线304,其中,处理器301,通信接口302,存储器303通过通信总线304完成相互间的通信,存储器303,用于存放计算机程序;处理器301,用于执行存储器303上所存放的程序时,实现上述实施例中数据库中故障表的修复方法的方法步骤。本发明实施例中,在对数据库中故障表进行修复的过程中,不再需要人工从多个表中搜索到故障表并对其进行修复,可以实现对数据库中故障表的自动修复,如此能够提高修复效率。上述电子设备提到的通信总线可以是外设部件互连标准(peripheralcomponentinterconnect,pci)总线或扩展工业标准结构(extendedindustrystandardarchitecture,eisa)总线等。该通信总线可以分为地址总线、数据总线、控制总线等。为便于表示,图中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。通信接口用于上述电子设备与其他设备之间的通信。存储器可以包括随机存取存储器(randomaccessmemory,ram),也可以包括非易失性存储器(non-volatilememory,nvm),例如至少一个磁盘存储器。可选的,存储器还可以是至少一个位于远离前述处理器的存储装置。上述的处理器可以是通用处理器,包括中央处理器(centralprocessingunit,cpu)、网络处理器(networkprocessor,np)等;还可以是数字信号处理器(digitalsignalprocessing,dsp)、专用集成电路(applicationspecificintegratedcircuit,asic)、现场可编程门阵列(field-programmablegatearray,fpga)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。本发明实施例提供了一种计算机可读存储介质,计算机可读存储介质内存储有计算机程序,计算机程序被处理器执行时实现上述实施例中数据库中故障表的修复方法的方法步骤。本发明实施例中,在对数据库中故障表进行修复的过程中,不再需要人工从多个表中搜索到故障表并对其进行修复,可以实现对数据库中故障表的自动修复,如此能够提高修复效率。需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。本说明书中的各个实施例均采用相关的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于装置、电子设备及存储介质实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。以上所述仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围。凡在本发明的精神和原则之内所作的任何修改、等同替换、改进等,均包含在本发明的保护范围内。当前第1页12当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1