掌桥专利:专业的专利平台
掌桥专利
首页

数据库管理方法、装置、计算机可读存储介质和电子设备

文献发布时间:2023-06-19 09:30:39


数据库管理方法、装置、计算机可读存储介质和电子设备

技术领域

本发明涉及数据库技术领域,具体而言,涉及一种数据库管理方法、装置、计算机可读存储介质和电子设备。

背景技术

数据库是现代信息技术的重要组成部分,也是现代计算机信息系统和计算机应用系统的基础和核心。数据库的重要性不言而喻。

对于数据库而言,存储的数据的一致性和准确性是评价数据库的重要指标。然而,数据库运行过程中会面对很多突发异常事件,造成数据库内数据出现不一致或者不准确的问题。比如,出现操作设备突然掉电、数据写入不完整、多个用户对同一条记录进行写操作,读与写不致,或ID增量重号等。

相关技术中,通常采用记录日志的方式,记录对数据库的操作,以便在数据库出现异常时人工进行事务回滚或者重做来保证数据库准确性。但是,实际运行过程中,面对数据异常仅通过简单回滚和重做,依然无法保证数据库的准确性,且工作量也将很大。

发明内容

本发明实施例的目的在于提供了数据库管理方法、装置、计算机可读存储介质和电子设备,其能够有效的确保数据库内数据的准确性和一致性。

本发明的实施例可以这样实现:

第一方面,本发明实施例提供一种数据库管理方法,所述数据库管理方法的步骤包括:获取第一数据库快照与第二数据库快照之间针对数据库的操作日志;筛除所述操作日志中被判定为异常的操作日志以得到目标操作日志;依据所述目标操作日志,重新对所述第一数据库快照对应的数据库数据执行操作,以生成第三数据库快照;根据所述第二数据库快照与第三数据库快照,对所述数据库进行调整。

第二方面,本发明实施例提供一种数据库管理装置,所述数据库管理装置包括:获取模块、筛除模块、执行模块及调整模块;其中,获取模块,用于获取第一数据库快照与第二数据库快照之间针对数据库的操作日志;筛除模块,用于筛除所述操作日志中被判定为异常的操作日志以得到目标操作日志;执行模块,用于依据所述目标操作日志,重新对所述第一数据库快照对应的数据库数据执行操作,以生成第三数据库快照;调整模块,用于根据所述第二数据库快照与第三数据库快照,对所述数据库进行调整。

第三方面,本发明实施例提供一种程序产品,例如计算机可读取存储介质,包括程序,该程序在被处理器执行时用于执行以上第一方面提供的方法。

第四方面,本发明实施例提供一种电子设备,包括:处理器、存储介质和总线,所述存储介质存储有所述处理器可执行的机器可读指令,当电子设备运行时,所述处理器与所述存储介质之间通过总线通信,所述处理器执行所述机器可读指令,以执行如前述实施方式任一所述的数据库管理方法的步骤。

相对现有技术,本发明实施例提供的一种数据库管理方法,通过获取第一数据库快照与第二数据库快照之间针对数据库的操作日志,并筛除其中被判定为异常的操作日志以得到目标操作日志。基于目标操作日志,重新对第一数据库快照对应的数据库数据执行操作,得到可以确保数据准确的第三数据库快照。最后,结合第二数据库快照与第三数据库快照,对数据库进行调整。也就是,通过对操作日志和数据库快照进行双重检验,确保调整后的数据库内的数据具有准确性和一致性。实现过程性能开销小,即使面对复杂逻辑的业务也不影响其效果。

附图说明

为了更清楚地说明本发明实施例的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,应当理解,以下附图仅示出了本发明的某些实施例,因此不应被看作是对范围的限定,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他相关的附图。

图1为本发明实施例提供的一种电子设备的示意图;

图2为本发明实施例提供的数据库管理方法的步骤流程图;

图3为图2中步骤S104的子步骤流程图;

图4为图2中步骤S104的另一种子步骤流程图;

图5为本发明实施例提供的数据库管理方法的步骤流程图的另一部分;

图6为本发明实施例提供的数据库管理方法的一个实例的流程图;

图7为本发明实施例提供的数据库管理装置的示意图。

图标:100-电子设备;101-存储器;102-通信接口;103-处理器;104-总线;200-数据库管理装置;201-获取模块;202-筛除模块;203-执行模块;204-调整模块;205-判定模块。

具体实施方式

为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。通常在此处附图中描述和示出的本发明实施例的组件可以以各种不同的配置来布置和设计。

因此,以下对在附图中提供的本发明的实施例的详细描述并非旨在限制要求保护的本发明的范围,而是仅仅表示本发明的选定实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步定义和解释。

可以理解地,上述数据库管理方法可以应用于图1示出的电子设备100。上述电子设备100可以是,但不限于个人电脑(personal computer,PC)、服务器、分布式部署的计算机等等。可以理解的是,电子设备100也不限于物理服务器,还可以是物理服务器上的虚拟机、基于云平台上构建的虚拟机等能提供与所述服务器或者虚拟机有相同功能的计算机。

电子设备100的操作系统可以是,但不限于,Windows系统、Linux系统等。上述电子设备100包括存储器101、通信接口102、处理器103和总线104,所述存储器101、通信接口102和处理器103通过总线104连接,处理器103用于执行存储器101中存储的可执行模块,例如计算机程序。其中,存储器101可能包含高速随机存取存储器(RAM:Random AccessMemory),也可能还包括非不稳定的存储器(non-volatile memory),例如至少一个磁盘存储器。通过至少一个通信接口102(可以是有线或者无线)实现该电子设备100与外部设备之间的通信连接。

总线104可以是ISA总线、PCI总线或EISA总线等。图3中仅用一个双向箭头表示,但并不表示仅有一根总线104或一种类型的总线104。

其中,存储器101用于存储程序,例如图7所示的数据库管理装置200。该数据库管理装置200包括至少一个可以软件或固件(firmware)的形式存储于所述存储器101中或固化在所述电子设备100的操作系统(operating system,OS)中的软件功能模块。所述处理器103在接收到执行指令后,执行所述程序以实现本发明上述实施例揭示的数据库管理方法。

处理器103可能是一种集成电路芯片,具有信号的处理能力。在实现过程中,上述方法的各步骤可以通过处理器103中的硬件的集成逻辑电路或者软件形式的指令完成。上述的处理器103可以是通用处理器103,包括中央处理器(Central Processing Unit,简称CPU)、网络处理器(Network Processor,简称NP)等;还可以是数字信号处理器(DSP)、专用集成电路(ASIC)、现成可编程门阵列(FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。

第一实施例

请参考图2,图2示出了本发明实施例提供的数据库管理方法,应用于电子设备100。上述数据库管理方法可以包括以下步骤:

步骤S101,获取第一数据库快照与第二数据库快照之间针对数据库的操作日志。

可以理解地,上述数据库快照可以是数据库的只读静态视图,其可以理解为一个只读的数据库,通过提供了一个静态的视图,实现为报表提供服务。采用数据库快照对数据库进行恢复,相比备份恢复来说,恢复速度会大大提高。数据库快照可以表征一时刻下数据库中的数据。在数据库使用期间可以在不同的时刻创建对应的数据库快照。作为一种实施方式,在数据库建成并创建初始数据快照之后,周期性地创建数据库对应的数据库快照。比如,可以在每天选择数据库使用频率较少的凌晨,进行一次数据库快照创建。即在每天的凌晨创建一该时刻下数据库对应的数据库快照。作为其他可能的实施方式,也可以是数据库建成并创建初始数据快照之后,随机地或者响应用户操作进行数据库快照创建。

本发明实施例中,上述第一数据库快照的创建时间点早于第二数据库快照的创建时间点。比如,若第二数据库快照是当前时间周期创建的数据库快照,则第一数据库快照可以是相邻上一个时间周期的数据库快照,也可以是相邻前两个时间周期的数据库快照,对此不做限定。可选地,第一数据库快照可以选择数据确认正确的数据库的快照。

进一步地,可以从用于记录对数据库进行处理的日志中,获取第一数据库快照的创建时间点和第二数据库快照的创建时间点之间产生的操作日志。比如,可以从数据库自带的Xlog日志中获取。可以理解的,每一个操作日志对应着对数据的一个操作。上述操作日志可以包括用于记录增加数据或删除数据或修改数据的变更操作日志,也可以包括记录的查找数据的操作日志,当然还可以包括记录的基于数据进行其他运算的其他操作日志。

在一些实施例中,为了验证某一时间点数据库中数据的准确性和一致性,可以确定一待检验时段,该时间点为待检验时段的终止时刻。此时,第一数据库快照可以是在该待检验时间段的起始时刻创建的数据库快照,第二数据库快照可以是在该待检验时间段的终止时刻创建的数据库快照。此时,上述第一数据库快照可以选择初始数据库快照,也可以选择已经检验过确定数据正确的数据库快照。

在一些实施例中,为了自动的实现对数据库的监管,可以是在每次基于当前的数据库创建一个数据库快照后,将该数据库快照作为第二数据库快照,并确定对应的第一数据库快照。具体地,确定对应的第一数据库快照可以是从存储的其他数据库快照中选择出第一数据库快照。

步骤S102,筛除操作日志中被判定为异常的操作日志以得到目标操作日志。

在本发明实施例中,上述异常的操作日志可以包括造成数据库内数据异常、数据残留、数据变更无效的操作所对应的操作日志。可以理解地,基于异常数据的其他操作也是异常的,因此,上述异常的操作日志还可以包括基于异常数据的操作对应的记录日志。通过筛除异常的操作日志,使得到的目标操作日志对应的操作均不会影响数据库内数据准确性和一致性。

步骤S103,依据目标操作日志,重新对第一数据库快照对应的数据库数据执行操作,以生成第三数据库快照。

上述第一数据库快照对应的数据库数可以是第一数据库快照创建时刻对应的数据库镜像。上述数据库镜像是数据库在另一存储空间内的备份,其内记录数据随着数据库内数据变化而对应变化。可以理解的,数据库镜像内数据可写,数据库快照可读,同一时刻的数据库镜像与数据库快照配合,则可以实现读写分离。

在本发明实施例中,可以先依据第一数据库快照获取其对应的数据库镜像。再按照各条目标操作日志产生的时间顺序,依次对数据库镜像执行对应的操作,以得到数据比较准确的新数据库。创建新数据库的数据库快照,作为第三数据库快照。可以理解地,由于目标操作日志对应的操作均是正常且不会造成数据异常的操作,因此,在确定第一数据库快照对应的数据均是正确的情况下,第三数据库快照对应的数据也是正确的。

步骤S104,根据第二数据库快照与第三数据库快照,对数据库进行调整。

在本发明实施例中,可以采用数据确保准确的第三数据库快照为参考,评价第二数据库快照对应的数据是否是正确的,并基于评价结果判定是否对数据库进行恢复,进而,保障数据库内的数据准确且一致。

作为一种实施方式,如图3所示,上述步骤S104可以包括以下步骤:

子步骤S1041,将第二数据库快照和第三数据库快照进行比较。可选地,可以将第二数据库快照中各个表格内数据与第三数据库快照中各个表格内数据进行比较。

子步骤S1042,若第二数据库快照与第三数据库快照之间存在差异,则用第三数据库快照替换所述第二数据库快照,并根据第三数据库快照对数据库进行数据恢复。

可以理解地,上述存在差异可以是指对应的数据差异,比如,第二数据库快照与第三数据库快照中相同表格内的数据数值不同,或者数据个数不同等。

在本发明实施例中,通过子步骤S1041和子步骤S1042实现对数据库的异常保护,避免数据库中存在异常数据,保障数据库内数据的准确性。

进一步地,由于数据库运行期间会持续创建新的数据库快照,为了节约存储内存,在确定一对应数据准确的数据库快照后,可以将位于他之前的其他数据库快照删除。因此,如图4所示,上述步骤S104还可以包括:

子步骤S1043,若第二数据库快照与第三数据库快照相同,则删除第一数据库快照。

可以理解地,由于第三数据库快照对应的数据是准确的,因此,与其相同的第二数据库快照也是准确的。在数据库运行的后续过程中,该第二数据库快照可以作为检验数据库内数据准确性的基准。那么第一数据库快照以及采集时间点位于第一数据库快照之前的其他数据库快照则可以删除,从而节约存储空间。

在一些其他实施例中,如图5所示,在图2所示的数据库管理方法的基础上,在步骤S102之前,还可以包括以下步骤:

步骤S201,依据外键关联记录,结合操作日志,获取第一数据的状态变更信息。

在本发明实施例中,上述第一数据和第二数据为同一数据库中的数据,可选地,第一数据和第二数据被记录于同一数据库的不同数据表格中。上述第一数据可以是与第二数据通过外键关联的数据。上述第二数据是操作日志中变更操作日志所针对的数据。具体地,可以先确定操作日志中的变更操作日志对应的第二数据,再依据外键关联记录查询与其对应的第一数据。上述第一数据可以包括多个,第二数据也可以包括多个。可以理解的,上述外键关联记录中记载了通过外键实现关联的表格之间的对应关系。也就是,当第二数据所属的表格A具有通过外键关联的表格B时,表格B中则存在对应的第一数据。进一步地,上述状态变更信息可以表示在变更操作日志产生的时间点前后第二数据的状态变化。比如,状态变更信息可以包括数据从无到有、从有到无或者保持不变之中的一个。

步骤S202,当第一数据的状态变更信息与变更操作日志不匹配时,将变更操作日志和变更操作日志之后基于第一数据或第二数据的操作日志判定为异常的操作日志。

在本发明实施例中,第一数据的状态变更信息与变更操作日志是否匹配可以通过比较上述状态变更信息是否与变更操作日志指示的动作一致,进行判断。比如:

当变更操作日志为指示往数据库写入一个数据的增加数据日志(该数据为第二数据)时,如果对应的第一数据并没因该数据的写入而出现在数据库中(即第二数据的状态变更信息不是从无到有),则判定第一数据的状态变更信息与变更操作日志不匹配。如果对应的第一数据因该数据的写入而出现在数据库中(即第二数据的状态变更信息是从无到有),则判定第一数据的状态变更信息与变更操作日志匹配。

当变更操作日志为指示将数据库中一个数据删除的删除数据日志(该数据为第二数据)时,如果对应的第一数据并没因该数据的删除而从数据库中消失(即第二数据的状态变更信息是保持不变),则判定第一数据的状态变更信息与变更操作日志不匹配。如果对应的第一数据因该数据的删除而从数据库中消失(即第二数据的状态变更信息是从有到无),则判定第一数据的状态变更信息与变更操作日志匹配。

当变更操作日志为指示将数据库中一个数据对应的数值进行更改的修改数据日志(该数据为第二数据)时,如果对应的第一数据未出现数值的变更,则判定第一数据的状态变更信息与变更操作日志不匹配。如果对应的第一数据出现数值的变更,则判定第一数据的状态变更信息与变更操作日志匹配。

进一步地,通过上述判断,将与第一数据的状态变更信息不匹配的变更操作日志确定为异常的操作日志。同时,也就位于该变更操作日志之后所有基于该第一数据和第二数据的操作日志均作为异常的操作日志。可以理解地,异常的增删操作无论是增加数据还是减少数据均是无效的,因此,该异常增删操作其后所有基于该第一数据和第二数据的操作也是异常的。

再通过配合步骤S102对异常的操作日志的删除,避免生成的用于校验的第三数据库快照中存在数据残留、数据异常等问题。

进一步地,在判定出操作日志中存在异常的操作日志后,上述数据库管理方法还可以包括步骤:依据异常的操作日志,生成告警信息,提醒数据库维护人员异常的发生。

为了方便理解本发明,下面以一个实例进行举例。实例中数据库按照预设时间周期,周期性的创建数据库快照,如图6所示,上述数据库管理方法包括步骤:

S1,在新的数据库快照创建后,将该数据库快照作为第二数据库快照。

S2,获取上一时间周期对应的数据库快照,作为第一数据库快照。

S3,获取第一数据库快照对应的创建时刻到第二数据库快照对应的创建时刻之间的Xlog日志。

S4,检验Xlog日志中是否存在异常的操作日志。可选地,如果存在,流程同时进入步骤S5和步骤S6。如果不存在,流程结束。

S5,生成告警信息。

S6,筛除Xlog日志中被判定为异常的操作日志以得到目标Xlog日志。

S7,依据目标Xlog日志对第一数据库快照对应的数据库镜像进行操作,以生成第三数据库快照。

S8,将第三数据库快照与第二数据库快照进行比较。如果二者相同,继续以第二数据库快照作为当前时间周期的数据库快照,流程进入步骤S11。如果二者存在差异,流程进入步骤S9。

S9,利用第三数据库快照替换第二数据库快照。可以理解地,将第二数据库快照删除,以第三数据库快照作为当前时刻的数据库快照,并存储。

S10,基于第三数据库快照,自动对数据库进行数据恢复。确保数据库内数据准确。

S11,将第一数据库快照删除。待进入下一个时间周期时,流程回到步骤S1。

综上,通过从数据库创建开始,周期性的基于相邻两个数据库快照以及数据库快照之间的有效的Xlog日志,对当前数据库内数据是否准确进行检查,识别数据库中是否存在数据异常,并对应的采取措施管理数据库,确保数据库的准确性和一致性。换句话说,就是利用Xlog日志和快照进行双重校验,简单高效地保证数据库的准确性和一致性。即使面对向复杂业务提供服务的数据库也可以及时发现异常数据,并对数据库进行恢复。

第二实施例

请参照图7,图7示出了本发明实施例提供的一种数据库管理装置200,所述数据库管理装置200包括:获取模块201、筛除模块202、执行模块203及调整模块204。

上述获取模块201,用于获取第一数据库快照的创建时间点与第二数据库快照的创建时间点之间针对数据库的操作日志;其中,所述第一数据库快照的创建时间点早于第二数据库快照的创建时间点。

在本发明实施例中,上述步骤S101可以由获取模块201执行。

上述筛除模块202,用于筛除所述操作日志中被判定为异常的操作日志以得到目标操作日志。

在本发明实施例中,上述步骤S102可以由筛除模块202执行。

上述执行模块203,用于依据所述目标操作日志,重新对所述第一数据库快照对应的数据库数据执行操作,以生成第三数据库快照。

在本发明实施例中,上述步骤S103可以由执行模块203执行。

上述调整模块204,用于根据所述第二数据库快照与第三数据库快照,对所述数据库进行调整。

在本发明实施例中,上述步骤S104可以由调整模块204执行。

可选地,上述调整模块204具体用于:将所述第二数据库快照和第三数据库快照进行比较;若所述第二数据库快照与第三数据库快照之间存在差异,则用所述第三数据库快照替换所述第二数据库快照,并根据所述第三数据库快照对所述数据库进行数据恢复。

进一步地,上述数据库管理装置200还包括判定模块205。

上述判定模块205具体用于:依据外键关联记录,结合所述操作日志,获取第一数据的状态变更信息;其中,所述第一数据与所述操作日志中变更操作日志对应的第二数据关联;当所述第一数据的状态变更信息与所述变更操作日志不匹配时,将所述变更操作日志和所述变更操作日志之后基于所述第一数据或第二数据的操作日志判定为所述异常的操作日志。

可以理解地,上述步骤S201和S202可以由上述判定模块205执行。

所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的装置的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。

本发明实施例还揭示了一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器103执行时实现本发明前述实施例揭示的方法。

综上所述,本发明实施例提供了一种数据库管理方法、装置、计算机可读存储介质和电子设备。其中,上述数据库管理方法包括:获取第一数据库快照的创建时间点与第二数据库快照的创建时间点之间针对数据库的操作日志;其中,所述第一数据库快照的创建时间点早于第二数据库快照的创建时间点;筛除所述操作日志中被判定为异常的操作日志以得到目标操作日志;依据所述目标操作日志,重新对所述第一数据库快照对应的数据库数据执行操作,以生成第三数据库快照;根据所述第二数据库快照与第三数据库快照,对所述数据库进行调整。也就是,通过操作日志和数据库快照的双重检验,确保数据库内数据的准确性和一致性。

在本申请所提供的几个实施例中,应该理解到,所揭露的装置和方法,也可以通过其它的方式实现。以上所描述的装置实施例仅仅是示意性的,例如,附图中的流程图和框图显示了根据本发明的多个实施例的装置、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或代码的一部分,所述模块、程序段或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现方式中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或动作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。

另外,在本发明各个实施例中的各功能模块可以集成在一起形成一个独立的部分,也可以是各个模块单独存在,也可以两个或两个以上模块集成形成一个独立的部分。

所述功能如果以软件功能模块的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。

以上所述仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步定义和解释。

相关技术
  • 数据库管理方法、装置、计算机可读存储介质和电子设备
  • 数据库管理方法及装置、电子设备和计算机可读存储介质
技术分类

06120112197151