CN109491834B - 一种应用于数据库的数据恢复方法及装置 - Google Patents

一种应用于数据库的数据恢复方法及装置 Download PDF

Info

Publication number
CN109491834B
CN109491834B CN201811237524.7A CN201811237524A CN109491834B CN 109491834 B CN109491834 B CN 109491834B CN 201811237524 A CN201811237524 A CN 201811237524A CN 109491834 B CN109491834 B CN 109491834B
Authority
CN
China
Prior art keywords
time point
data recovery
backup
candidate
data
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.)
Expired - Fee Related
Application number
CN201811237524.7A
Other languages
English (en)
Other versions
CN109491834A (zh
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.)
Wangsu Science and Technology Co Ltd
Original Assignee
Wangsu Science and Technology 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 Wangsu Science and Technology Co Ltd filed Critical Wangsu Science and Technology Co Ltd
Priority to CN201811237524.7A priority Critical patent/CN109491834B/zh
Publication of CN109491834A publication Critical patent/CN109491834A/zh
Application granted granted Critical
Publication of CN109491834B publication Critical patent/CN109491834B/zh
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • 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

Abstract

本发明公开了一种应用于数据库的数据恢复方法及装置。所述方法包括:至少根据接收到的数据恢复请求中包括的数据恢复的时间点以及预先存储的多个备份数据的备份时间点,确定目标备份时间点,若确定目标备份时间点位于数据恢复的时间点之后,则可以对目标备份时间点与数据恢复的时间点之间的对应的日志记录进行逆向解析,进而可以执行数据恢复。相比于现有技术中直接选择位于数据恢复的时间点之前的备份时间点的方式而言,本发明实施例扩大了的目标备份时间点的可选择性,从而使得在执行数据恢复的过程中,能够更加合理地选择目标备份时间点,进而缩短数据恢复的时长。

Description

一种应用于数据库的数据恢复方法及装置
技术领域
本发明涉及数据库技术领域,尤其涉及一种应用于数据库的数据恢复方法及装置。
背景技术
随着科技的进步与信息化的发展,各种各样的信息不断地被产生以及被重复利用,用来存储信息的数据库也因此扮演着重要的角色。
MySQL数据库是一种被广泛使用的开源数据库。现有技术中,当MySQL数据库需要恢复指定时间点的数据时,通常是先将数据恢复到指定时间点之前且与指定时间点最近的一次备份时间点,然后获取备份时间点与指定时间点之间的所有操作语句,最后在恢复出来的备份时间点对应的备份数据上重新回放执行备份时间点与指定时间点之间的所有操作语句,从而实现MySQL数据库的数据恢复至指定时间点。然而,现有的数据方法可能存在相邻两个备份时间点之间的跨度较大,备份时间点与指定时间点之间的所有操作语句的数量较多,导致延长了对这些操作语句进行解析和回放所需的时间,进而导致数据恢复耗时长的问题。
基于此,目前亟需一种应用于数据库的数据恢复方法,用于解决现有技术中数据恢复耗时长的问题。
发明内容
本发明实施例提供一种应用于数据库的数据恢复方法及装置,以解决现有技术中数据恢复耗时长的技术问题。
本发明实施例提供一种应用于数据库的数据恢复方法,所述方法包括:
接收数据恢复请求,所述数据恢复请求包括数据恢复的时间点;
至少根据所述数据恢复的时间点,以及预先存储的多个备份数据的备份时间点,确定目标备份时间点;
若确定所述目标备份时间点位于所述数据恢复的时间点之后,且所述候选备份时间点与所述数据恢复的时间点之间的日志记录中不存在DDL语句,则确定所述目标备份时间点与所述数据恢复的时间点之间的第一时间区间,并对所述第一时间区间对应的日志记录进行逆向解析,得到第一文本信息;
根据所述目标备份时间点对应的备份数据以及所述第一文本信息,执行数据恢复。
如此,本发明实施例中可以根据数据恢复的时间点与备份时间点之间的关系确定合适的目标备份时间点,进而可以根据数据恢复的时间点与备份时间点之间的关系,确定对目标备份时间点与数据恢复的时间点之间的日志记录是进行逆向解析还是正向解析。相比于现有技术中直接选择位于数据恢复的时间点之前的备份时间点的方式而言,本发明实施例扩大了的目标备份时间点的可选择性,从而使得在执行数据恢复的过程中,能够更加合理地选择目标备份时间点,进而缩短数据恢复的时长。
在一种可能的实现方式中,所述至少根据所述数据恢复的时间点,以及预先存储的多个备份数据的备份时间点,确定目标备份时间点,包括:
根据所述数据恢复的时间点,以及所述预先存储的多个备份数据的备份时间点,确定与所述数据恢复的时间点的时间差最小的备份时间点为候选备份时间点;
针对所述候选备份时间点进行确认处理,包括:
若所述候选备份时间点位于所述数据恢复的时间点之后,且所述候选备份时间点与所述数据恢复的时间点之间的日志记录中不存在数据库模式定义语言(DataDefinition Language,DDL)语句,则将所述候选备份时间点确定为所述目标备份时间点。
采用上述方法,能够确保目标备份时间点为距离数据恢复的时间点最近的备份时间点,并且,也能够确保目标备份时间点中不会存在无法逆向解析的DDL语句,从而能够有效缩短数据恢复的耗时。
在一种可能的实现方式中,针对所述候选备份时间点进行确认处理,还包括:
若所述候选备份时间点位于所述数据恢复的时间点之前,则将所述候选备份时间点确定为所述目标备份时间点;
所述方法还包括:
若确定所述目标备份时间点位于所述数据恢复的时间点之前,则确定所述目标备份时间点与所述数据恢复的时间点之间的第二时间区间,并对所述第二时间区间对应的日志记录进行正向解析,得到第二文本信息;
根据所述目标备份时间点对应的备份数据以及所述第二文本信息,执行数据恢复。
在一种可能的实现方式中,针对所述候选备份时间点进行确认处理,还包括:
若所述候选备份时间点位于所述数据恢复的时间点之后,且所述候选备份时间点与所述数据恢复的时间点之间的日志记录中存在DDL语句,则确定与所述数据恢复的时间点的时间差仅次于上一个候选备份时间点与所述数据恢复的时间点之间的时间区间对应的备份时间点为所述候选备份时间点;重复针对所述候选备份时间点进行确认处理的步骤。
在一种可能的实现方式中,对第一时间区间对应的日志进行逆向解析之前,还包括:
根据各日志文件的起始记录时间和终止记录时间,确定候选日志文件;
从所述候选日志文件中获取所述第一时间区间对应的日志记录。
在一种可能的实现方式中,所述各日志文件中还包括DDL标识,所述DDL标识用于指示日志文件是否包含DDL语句;
通过如下方式确定所述候选备份时间点与所述数据恢复的时间点之间的日志记录中是否存在DDL语句,包括:
根据各日志文件的起始记录时间和终止记录时间,确定第三时间区间对应的日志文件;所述第三时间区间为所述候选备份时间点与所述数据恢复的时间点之间的时间区间;
根据所述第三时间区间对应的日志文件的DDL标识,确定所述候选备份时间点与所述数据恢复的时间点之间的日志记录中是否存在DDL语句。
考虑到一个日志文件中可以包括多个语句,而对于日志文件中的DDL语句是不能够逆向解析的,因此,在候选备份时间点位于数据恢复的时间点之后的情况下,需要进一步判断候选备份时间点与数据恢复的时间点之间的日志记录中是否存在DDL语句,从而避免因DDL语句无法逆向解析而导致数据恢复失败的情况。
在一种可能的实现方式中,对所述第一时间区间对应的日志记录进行逆向解析,得到第一文本信息,包括:
对所述第一时间区间对应的日志记录进行正向解析,得到第三文本信息;
将所述第三文本信息逆向解析并转换为所述第一文本信息。
在一种可能的实现方式中,所述日志记录为以行模式存储的二进制日志文件。
本发明实施例提供一种应用于数据库的数据恢复装置,所述装置包括:
接收单元,用于接收数据恢复请求,所述数据恢复请求包括数据恢复的时间点;
处理单元,用于至少根据所述数据恢复的时间点,以及预先存储的多个备份数据的备份时间点,确定目标备份时间点;若确定所述目标备份时间点位于所述数据恢复的时间点之后,且所述候选备份时间点与所述数据恢复的时间点之间的日志记录中不存在DDL语句,则确定所述目标备份时间点与所述数据恢复的时间点之间的第一时间区间,并对所述第一时间区间对应的日志记录进行逆向解析,得到第一文本信息;以及根据所述目标备份时间点对应的备份数据以及所述第一文本信息,执行数据恢复。
在一种可能的实现方式中,所述处理单元具体用于:
根据所述数据恢复的时间点,以及所述预先存储的多个备份数据的备份时间点,确定与所述数据恢复的时间点的时间差最小的备份时间点为候选备份时间点;
若所述候选备份时间点位于所述数据恢复的时间点之后,且所述候选备份时间点与所述数据恢复的时间点之间的日志记录中不存在DDL语句,则将所述候选备份时间点确定为所述目标备份时间点。
在一种可能的实现方式中,所述处理单元还用于:
若所述候选备份时间点位于所述数据恢复的时间点之前,则将所述候选备份时间点确定为所述目标备份时间点;
若确定所述目标备份时间点位于所述数据恢复的时间点之前,则确定所述目标备份时间点与所述数据恢复的时间点之间的第二时间区间,并对所述第二时间区间对应的日志记录进行正向解析,得到第二文本信息;
根据所述目标备份时间点对应的备份数据以及所述第二文本信息,执行数据恢复。
在一种可能的实现方式中,所述处理单元还用于:
若所述候选备份时间点位于所述数据恢复的时间点之后,且所述候选备份时间点与所述数据恢复的时间点之间的日志记录中存在DDL语句,则确定与所述数据恢复的时间点的时间差仅次于上一个候选备份时间点与所述数据恢复的时间点之间的时间区间对应的备份时间点为所述候选备份时间点;重复针对所述候选备份时间点进行确认处理的步骤。
在一种可能的实现方式中,所述处理单元在对第一时间区间对应的日志进行逆向解析之前,还用于:
根据各日志文件的起始记录时间和终止记录时间,确定候选日志文件;
从所述候选日志文件中获取所述第一时间区间对应的日志记录。
在一种可能的实现方式中,所述各日志文件中还包括DDL标识,所述DDL标识用于指示日志文件是否包含DDL语句;
所述处理单元具体用于:
根据各日志文件的起始记录时间和终止记录时间,确定第三时间区间对应的日志文件;所述第三时间区间为所述候选备份时间点与所述数据恢复的时间点之间的时间区间;
根据所述第三时间区间对应的日志文件的DDL标识,确定所述候选备份时间点与所述数据恢复的时间点之间的日志记录中是否存在DDL语句。
在一种可能的实现方式中,所述处理单元具体用于:
对所述第一时间区间对应的日志记录进行正向解析,得到第三文本信息;
将所述第三文本信息逆向解析并转换为所述第一文本信息。
在一种可能的实现方式中,所述日志记录为以行模式存储的二进制日志文件。
本申请实施例的还提供一种装置,该装置具有实现上文所描述的应用于数据库的数据恢复方法的功能。该功能可以通过硬件执行相应的软件实现,在一种可能的设计中,该装置包括:处理器、收发器、存储器;该存储器用于存储计算机执行指令,该收发器用于实现该装置与其他通信实体进行通信,该处理器与该存储器通过该总线连接,当该装置运行时,该处理器执行该存储器存储的该计算机执行指令,以使该装置执行上文所描述的应用于数据库的数据恢复方法。
本发明实施例还提供一种计算机存储介质,所述存储介质中存储软件程序,该软件程序在被一个或多个处理器读取并执行时实现上述各种可能的实现方式中所描述的应用于数据库的数据恢复方法。
本发明实施例还提供一种包含指令的计算机程序产品,当其在计算机上运行时,使得计算机执行上述各种可能的实现方式中所描述的应用于数据库的数据恢复方法。
附图说明
为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简要介绍。
图1为本发明实施例提供的一种应用于数据库的数据恢复方法所对应的流程示意图;
图2为本发明实施例提供的一种应用于数据库的数据恢复方法所对应的整体性的流程示意图;
图3为本发明实施例提供的一种应用于数据库的数据恢复装置的结构示意图。
具体实施方式
下面结合说明书附图对本申请进行具体说明,方法实施例中的具体操作方法也可以应用于装置实施例中。
随着信息技术的不断发展,许多系统应用都会使用数据库来存储各种信息,系统中的应用程序可以通过数据库命令将信息写入数据库,也能够通过数据库命令由数据库读取所需的信息。这些系统应用可以使用一个或多个计算机主机进行运作,计算机主机还可以利用多处理器、多机器、多执行及/或并行执行等技术来提升整个系统的可用性及处理能力。例如,可以将数据库运行于多个计算机主机上,并且将应用程序也运行于多个计算机主机上,以提升系统应用的性能。计算机主机可以运行Linux或Windows等操作系统,而数据库目前仅适用在MySQL的数据库系统。
数据库所存储的数据量,会随着系统运行的时间而不断地增加,许多数据库每日新增的数据量动辄以十亿字节或兆字节计算。当数据库异常宕机而重新开机时,或者当使用者需要将数据库恢复到特定时间的存储状态时,必须要依据一个确定的顺序串列地进行数据的恢复,才能够确保数据库能够正确地恢复至所需的存储状态。
现有的各种数据库虽然都提供存储数据的功能,然而每种数据库的设计构思、组成结构及可使用的命令等,都有可能存在很大的差异。以下将针对MySQL数据库或者依据MySQL数据库为基础所发展的数据库,提供数据恢复的技术方案。
MySQL数据库主要藉由二进制日志(binary log)的结构,而记录MySQL数据库中事件或数据的变动,已能够提供复制和备份等功能。二进制日志的结构可以包含有多个二进制日志文件(binlog)及一个二进制日志索引文件(binlog index),当MySQL数据库接收到刷新日志(flush log)等命令时,MySQL数据库就会产生新的二进制日志文件,而二进制日志索引文件则用来记录所有的二进制日志文件的索引,例如,该索引可以是二进制日志文件的文件名称。
在MySQL数据库中,二进制日志文件通常有三种存储模式,分别是行(row)模式、陈述(statement)模式和混合(mix)模式。行模式的二进制日志文件会记录MySQL数据库中每一行数据被修改的信息,陈述模式会记录MySQL数据库中每一条会修改数据的数据库命令,而混合模式则是行模式和陈述模式的结合。由于行模式记录了MySQL数据库中数据变化前后的信息,所以可以根据行模式中记录的数据值和操作类型将数据恢复至所需恢复的时间点(或称数据回滚(rollback))。下文将说明如何根据MySQL数据库中以行模式存储的二进制日志文件,进行MySQL数据库的数据恢复。
图1示例性示出了本发明实施例提供的一种应用于数据库的数据恢复方法所对应的流程示意图。如图1所示,具体包括如下步骤:
步骤101,接收数据恢复请求。
步骤102,至少根据所述数据恢复的时间点,以及预先存储的多个备份数据的备份时间点,确定目标备份时间点。
步骤103,若确定所述目标备份时间点位于所述数据恢复的时间点之后,且所述候选备份时间点与所述数据恢复的时间点之间的日志记录中不存在DDL语句,则确定所述目标备份时间点与所述数据恢复的时间点之间的第一时间区间,并对所述第一时间区间对应的日志记录进行逆向解析,得到第一文本信息。
步骤104,根据所述目标备份时间点对应的备份数据以及所述第一文本信息,执行数据恢复。
如此,本发明实施例中可以根据数据恢复的时间点与备份时间点之间的关系确定合适的目标备份时间点,进而可以根据数据恢复的时间点与备份时间点之间的关系,确定对目标备份时间点与数据恢复的时间点之间的日志记录是进行逆向解析还是正向解析。相比于现有技术中直接选择位于数据恢复的时间点之前的备份时间点的方式而言,本发明实施例扩大了的目标备份时间点的可选择性,从而使得在执行数据恢复的过程中,能够更加合理地选择目标备份时间点,进而缩短数据恢复的时长。
具体来说,步骤101中,数据恢复请求可以包括数据恢复的时间点,其中,数据恢复的时间点可以是指对数据进行恢复时所需恢复至的时间点。
进一步地,所需恢复至的时间点可以是指定的时间,比如24小时制的具体时间,如20XX年XX月XX日XX:XX:XX;或者,也可以是指定的时间单位,比如可以将一天24h,以1min为一个时间单位,24h可以分为1440个时间单位,具体如表1所示。根据表1示出的内容可知,00:00:00-00:01:00可以作为1个时间单位,记作T0;00:01:00-00:02:00可以作为另1个时间单位,记作T1,以此类推,不再一一说明。
表1:时间单位的一种示例
Figure BDA0001838547610000091
Figure BDA0001838547610000101
步骤102中,确定目标备份时间点的方式有多种,一个示例中,可以直接根据数据恢复的时间点、预先存储的多个备份数据的备份时间点,来确定目标备份时间点。比如,可以直接将与数据恢复的时间点的时间差最小的备份时间点为目标备份时间点。
另一个示例中,可以根据数据恢复的时间点、预先存储的多个备份数据的备份时间点以及日志文件,来确定目标备份时间点。
首先,可以根据数据恢复的时间点,以及预先存储的多个备份数据的备份时间点,确定与数据恢复的时间点的时间差最小的备份时间点为候选备份时间点。
举个例子,如表2所示,为多个备份数据的备份时间点的一种示例。若数据恢复的时间点为T98,根据表2示出的内容,则可以确定候选备份时间点可以为T100。
表2:多个备份数据的备份时间点的一种示例
备份数据 备份时间点
1 T0
2 T100
3 T200
4 T300
5 T400
…… ……
其次,在确定候选备份时间点之后,可以判断候选备份时间点和数据恢复时间点之间的关系。根据判断的结果,可以分为以下两种情况。
情况一:
若候选备份时间点位于数据恢复的时间点之后,则可以继续判断候选备份时间点与数据恢复的时间点之间的日志记录中是否存在DDL语句。
本发明实施例中,可以对不同备份时间点对应的数据进行备份,而对于两个备份时间点之间的操作可以根据日志文件来确定具体的操作内容。其中,日志文件可以是指在两个不同的备份时间点之间产生的二进制日志文件(binlog)。
以表2示出的内容为例,如表3所示,为不同的备份时间点之间产生的日志文件的一种示例。其中,备份时间点T0和备份时间点T100之间可以产生日志文件A,备份时间点T100和备份时间点T200之间可以产生日志文件B,具体可参见表3中示出的内容,此处不再具体说明。
表3:不同的备份时间点之间产生的日志文件的一种示例
不同备份时间点之间的时间区间 日志文件
T0-T100 日志文件A
T100-T200 日志文件B
T200-T300 日志文件C
T300-T400 日志文件D
T400-T500 日志文件E
…… ……
进一步地,考虑到一个日志文件中可以包括多个语句,而对于日志文件中的DDL语句是不能够逆向解析的,因此,在候选备份时间点位于数据恢复的时间点之后的情况下,需要进一步判断候选备份时间点与数据恢复的时间点之间的日志记录中是否存在DDL语句,从而避免因DDL语句无法逆向解析而导致数据恢复失败的情况。
为了便于本领域技术人员快速地确定日志文件的具体信息(比如是否包括DDL语句),本发明实施例中,各日志文件中还可以包括DDL标识,其中,DDL标识可以用于指示日志文件是否包含DDL语句。具体来说,每个日志文件可以对应存储有元信息,元信息可以包括DDL标识、日志文件的起始时间、日志文件的结束时间等,本领域技术人员可以通过查询元信息的方式快速地确定日志文件的具体信息。
更进一步地,由于本发明实施例中的日志文件是以行(row)模式存储的,因此,根据日志文件中每一行的内容,可以确定该行所描述的内容是否与DDL语句相关,并通过DDL标识来指示。其中,DDL语句是指用来创建、修改、删除数据库中的各种对象(表、视图、索引、同义词、聚簇等),即该语句可能包括“create”、“alter”、“drop”等关键词。也就是说,判断某一行所描述的内容是否与DDL语句相关,可以通过判断该行所描述的内容中是否包括“create”、“alter”、“drop”等DDL关键词来确定,若包括以上关键词,则可以认为该行为DDL语句,进一步可以确定该行所属的日志文件中包括DDL语句;相反地,若不包括以上关键词,则可以认为该行不是DDL语句,进一步可以确定该行所属的日志文件中不包括DDL语句。
具体实施过程中,MySQL数据库可以开启binlog,并且设置binlog的模式为row模式;进一步地,若MySQL数据库产生的binlog设置为至少保留三天,即在第二天可以将前一天产生的所有binlog进行对象存储,比如可以存储到Ceph中,或者存储到Swift中,具体不做限定;更进一步地,对binlog进行存储时,可以根据binlog的编号以及产生的时间点进行命名,比如,可以命名为“mysql-bin.000001.20180808”,表示MySQL数据库产生的binlog编号为000001,产生的日期为2018年8月8日,又比如,可以命名为“mysql-bin.000002.20180808”,表示MySQL数据库产生的binlog编号为000002,产生的日期为2018年8月8日。
进一步地,binlog的元信息的确定方式如下:可以先用mysqlbinlog命令行解析某个binlog,将该binlog中的起始记录时间、终止记录时间以及是否包含“create”、“drop”等DDL关键词记录下来,保存到对象的元信息里。比如,对“mysql-bin.000001.20180808”文件进行解析后,可以得该binlog的开始时间2018年8月8日01:08:02,结束时间为2018年8月8日22:08:02,不包含DDL关键词,则“mysql-bin.000001.20180808”的元信息可以为:
X-BIN-START-TIME:20180808 01:08:02
X-BIN-END-TIME:20180808 22:08:02
X-BIN-HAS-DDL:False
本发明实施例中,判断候选备份时间点与数据恢复的时间点之间的日志记录中是否存在DDL语句的方式有多种。一种可能的实现方式为,可以根据各日志文件的起始记录时间和终止记录时间,确定第三时间区间对应的日志文件;进而可以根据第三时间区间对应的日志文件的DDL标识,确定候选备份时间点与数据恢复的时间点之间的日志记录中是否存在DDL语句。其中,第三时间区间为候选备份时间点与数据恢复的时间点之间的时间区间。
举个例子,若数据恢复的时间点为T98,根据表2和表3示出的内容,可知第三时间区间(即数据恢复的时间点(即T98)与候选备份时间点(T100)之间的时间区间)对应的日志文件可以为表3中示出的日志文件A;进一步地,可以根据日志文件A的DDL标识来确定T98与T100之间是否存在DDL语句,具体地,若日志文件A的DDL标识指示不存在DDL语句,则可以推知T98与T100之间不存在DDL语句,相反地,若日志文件A的DDL标识指示存在DDL语句,则可以认为T98与T100之间存在DDL语句。
另一种可能的实现方式为,可以直接获取候选备份时间点与数据恢复的时间点之间的日志记录,进而确定候选备份时间点与数据恢复的时间点之间的日志记录中是否存在DDL语句。
在其它可能的实现方式中,本领域技术人员可以根据经验和实际情况来确定候选备份时间点与数据恢复的时间点之间的日志记录中是否存在DDL语句,具体不做限定。
根据是否存在DDL语句的判断结果,可以进一步地分为以下两种情形。
情形A:若候选备份时间点与数据恢复的时间点之间的日志记录中不存在DDL语句,则可以将候选备份时间点确定为目标备份时间点。
情形B:若候选备份时间点与数据恢复的时间点之间的日志记录中存在DDL语句,则可以确定与数据恢复的时间点的时间差第二小的备份时间点为候选备份时间点,并重复上述判断候选备份时间点和数据恢复时间点之间的关系的步骤。
举个例子,若候选备份时间点(T100)与数据恢复的时间点(T98)之间的日志记录中存在DDL语句,则可以重新选择与数据恢复的时间点的时间差第二小的备份时间点为候选备份时间点(即T0);然后,可以继续判断候选备份时间点(T0)和数据恢复时间点(T98)之间的关系。
情况二:
若候选备份时间点位于数据恢复的时间点之前,则可以将候选备份时间点确定为目标备份时间点。
举个例子,若数据恢复的时间点为T2,根据表2示出的内容,则可以确定候选备份时间点可以为T0;进而,由于候选备份时间点(T0)位于数据恢复的时间点(T2)之前,则可以将候选备份时间点(T0)确定为目标备份时间点。
采用上述方法,能够确保目标备份时间点为距离数据恢复的时间点最近的备份时间点,并且,也能够确保目标备份时间点中不会存在无法逆向解析的DDL语句,从而能够有效缩短数据恢复的耗时。举个例子,若在时间点T0做一次备份,过了很长时间后在时间点T100再做一次备份,T0到T100中间有100个时间单位,此时如果客户要把数据恢复至T98,那么按照现有技术中的方案,需要先把数据库还原到T0的备份,然后解析T0到T98之间的binlog,并回放T0到T98之间操作,显然,T0到T98之间的时间跨度较长,所需的解析时间和回放时间也较长。而采用本发明实施例提供的方法,可以选择T100作为目标备份时间点,只要T98至T100之间的日志记录中不存在DDL语句,那么只需要逆向解析T98到T100之间的binlog,并回放T98到T100之间的操作,显然,T0到T98之间的时间跨度较短,所需的解析时间和回放时间也较短,进而可以大大缩短对T98对应的数据进行恢复所需的时长。
步骤103和步骤104中,在确定目标备份时间点之后,可以根据目标备份时间点与数据恢复时间点之间的关系,确定不同的数据恢复的方案。具体可以分为以下两种方案:(1)目标备份时间点位于数据恢复的时间点之后;(2)目标备份时间点位于数据恢复的时间点之前。下面对这两种方案进行具体描述。
方案(1):
若确定目标备份时间点位于数据恢复的时间点之后,则可以确定目标备份时间点与数据恢复的时间点之间的第一时间区间,并对第一时间区间对应的日志记录进行逆向解析,得到第一文本信息;进而可以根据目标备份时间点对应的备份数据以及第一文本信息,执行数据恢复。
本发明实施例中,可以先根据各日志文件的起始记录时间和终止记录时间,确定候选日志文件,再从候选日志文件中获取第一时间区间对应的日志记录。举个例子,可以遍历对象存储中的MySQL数据库的binlog,根据各binlog的元信息中的起始记录时间(X-BIN-START-TIME)和终止记录时间(X-BIN-END-TIME)来确定候选日志文件,以数据恢复的时间点为T98、目标备份时间点为T100为例,候选日志文件可以为表2中示出的日志文件A;进一步地,第一时间区间为T98至T100之间的时间区间,那么,第一时间区间对应的日志记录可以为日志文件A中位于第一时间区间内的日志记录。
本发明实施例中,对第一时间区间对应的日志记录进行逆向解析的过程可以分为两个步骤,首先可以对第一时间区间对应的日志记录进行正向解析,得到第三文本信息,然后可以将第三文本信息逆向解析并转换为第一文本信息。
具体来说,可以通过MySQL数据库自带的数据库命令“mysqlbinlog”,将第一时间区间对应的日志记录进行正向解析并转换为相应的第三文本信息。其中,第三文本信息可以包括在第一时间区间内,用户对数据库执行全部操作的操作指令、操作内容及操作指令的执行顺序。
进一步地,可以通过将第三文本信息中的操作指令逆向解析并转换为逆向操作指令,并将第三文本信息中的操作指令的执行顺序逆向解析并转换为逆向操作指令的逆向执行顺序,来将第三文件信息逆向解析并转换为第一文本信息。其中,第一文本信息可以包括在第一时间区间内,用户对数据库执行全部操作的逆向操作指令、操作内容及逆向操作指令的逆向执行顺序。
更进一步地,可以根据目标备份时间点对应的备份数据,解析并回放第一文本信息对应的SQL语句,从而完成数据恢复。
方案(2):
若确定目标备份时间点位于数据恢复的时间点之前,则可以确定目标备份时间点与数据恢复的时间点之间的第二时间区间,并对第二时间区间对应的日志记录进行正向解析,得到第二文本信息;进而,可以根据目标备份时间点对应的备份数据以及第二文本信息,执行数据恢复。
本发明实施例中,对第二时间区间对应的日志记录进行逆向解析的过程可以通过MySQL数据库自带的数据库命令“mysqlbinlog”,将第二时间区间对应的日志记录进行正向解析并转换为相应的第二文本信息。其中,第二文本信息可以包括在第二时间区间内,用户对数据库执行全部操作的操作指令、操作内容及操作指令的执行顺序。
进一步地,可以根据目标备份时间点对应的备份数据,解析并回放第二文本信息对应的SQL语句,从而完成数据恢复。
为了更清楚地介绍上述数据库的数据恢复方法,下面结合图2,对本发明实施例中所涉及到的流程进行整体性说明。如图2所示,可以包括以下步骤:
步骤201,接收数据恢复请求,所述数据恢复请求包括数据恢复的时间点。
步骤202,根据数据恢复的时间点,以及预先存储的多个备份数据的备份时间点,确定与数据恢复的时间点的时间差最小的备份时间点为候选备份时间点。
步骤203,判断候选备份时间点是否位于数据恢复的时间点之后,若位于所述数据恢复的时间点之后,则执行步骤204;否则,执行步骤205。
步骤204,判断候选备份时间点与数据恢复的时间点之间的日志记录中是否存在DDL语句,若不存在DDL语句,则执行步骤205;否则,执行步骤206。
步骤205,将候选备份时间点确定为目标备份时间点。
步骤206,确定与数据恢复的时间点的时间差第二小的备份时间点为候选备份时间点,返回步骤203。
步骤207,判断目标备份时间点是否位于数据恢复的时间点之后,若位于所述数据恢复的时间点之后,则执行步骤208;否则,执行步骤211。
步骤208,确定目标备份时间点与数据恢复的时间点之间的第一时间区间。
步骤209,对第一时间区间对应的日志记录进行逆向解析,得到第一文本信息。
步骤210,根据目标备份时间点对应的备份数据以及第一文本信息,执行数据恢复。
步骤211,确定目标备份时间点与数据恢复的时间点之间的第二时间区间。
步骤212,对第二时间区间对应的日志记录进行正向解析,得到第二文本信息。
步骤213,根据目标备份时间点对应的备份数据以及第二文本信息,执行数据恢复。
相比于现有技术中直接选择位于数据恢复的时间点之前的备份时间点的方式而言,本发明实施例扩大了的目标备份时间点的可选择性,从而使得在执行数据恢复的过程中,能够更加合理地选择目标备份时间点,进而缩短数据恢复的时长。进一步地,采用上述方法,能够确保目标备份时间点为距离数据恢复的时间点最近的备份时间点,并且,也能够确保目标备份时间点中不会存在无法逆向解析的DDL语句,从而能够有效缩短数据恢复的耗时。
基于同样的发明构思,图3示例性示出了本发明实施例提供的一种应用于数据库的数据恢复装置的结构示意图,如图3所示,该装置包括接收单元301、处理单元302;其中,
接收单元301,用于接收数据恢复请求,所述数据恢复请求包括数据恢复的时间点;
处理单元302,用于至少根据所述数据恢复的时间点,以及预先存储的多个备份数据的备份时间点,确定目标备份时间点;若确定所述目标备份时间点位于所述数据恢复的时间点之后,且所述候选备份时间点与所述数据恢复的时间点之间的日志记录中不存在DDL语句,则确定所述目标备份时间点与所述数据恢复的时间点之间的第一时间区间,并对所述第一时间区间对应的日志记录进行逆向解析,得到第一文本信息;以及根据所述目标备份时间点对应的备份数据以及所述第一文本信息,执行数据恢复。
在一种可能的实现方式中,所述处理单元302具体用于:
根据所述数据恢复的时间点,以及所述预先存储的多个备份数据的备份时间点,确定与所述数据恢复的时间点的时间差最小的备份时间点为候选备份时间点;
若所述候选备份时间点位于所述数据恢复的时间点之后,且所述候选备份时间点与所述数据恢复的时间点之间的日志记录中不存在DDL语句,则将所述候选备份时间点确定为所述目标备份时间点。
在一种可能的实现方式中,所述处理单元302还用于:
若所述候选备份时间点位于所述数据恢复的时间点之前,则将所述候选备份时间点确定为所述目标备份时间点;
若确定所述目标备份时间点位于所述数据恢复的时间点之前,则确定所述目标备份时间点与所述数据恢复的时间点之间的第二时间区间,并对所述第二时间区间对应的日志记录进行正向解析,得到第二文本信息;
根据所述目标备份时间点对应的备份数据以及所述第二文本信息,执行数据恢复。
在一种可能的实现方式中,所述处理单元302还用于:
若所述候选备份时间点位于所述数据恢复的时间点之后,且所述候选备份时间点与所述数据恢复的时间点之间的日志记录中存在DDL语句,则确定与所述数据恢复的时间点的时间差第二小的备份时间点为所述候选备份时间点;重复针对所述候选备份时间点进行确认处理的步骤。
在一种可能的实现方式中,所述处理单元302在对第一时间区间对应的日志进行逆向解析之前,还用于:
根据各日志文件的起始记录时间和终止记录时间,确定候选日志文件;
从所述候选日志文件中获取所述第一时间区间对应的日志记录。
在一种可能的实现方式中,所述各日志文件中还包括DDL标识,所述DDL标识用于指示日志文件是否包含DDL语句;
所述处理单元302具体用于:
根据各日志文件的起始记录时间和终止记录时间,确定第三时间区间对应的日志文件;所述第三时间区间为所述候选备份时间点与所述数据恢复的时间点之间的时间区间;
根据所述第三时间区间对应的日志文件的DDL标识,确定所述候选备份时间点与所述数据恢复的时间点之间的日志记录中是否存在DDL语句。
在一种可能的实现方式中,所述处理单元302具体用于:
对所述第一时间区间对应的日志记录进行正向解析,得到第三文本信息;
将所述第三文本信息逆向解析并转换为所述第一文本信息。
本申请实施例的还提供一种装置,该装置具有实现上文所描述的应用于数据库的数据恢复方法的功能。该功能可以通过硬件执行相应的软件实现,在一种可能的设计中,该装置包括:处理器、收发器、存储器;该存储器用于存储计算机执行指令,该收发器用于实现该装置与其他通信实体进行通信,该处理器与该存储器通过该总线连接,当该装置运行时,该处理器执行该存储器存储的该计算机执行指令,以使该装置执行上文所描述的应用于数据库的数据恢复方法。
本发明实施例还提供一种计算机存储介质,所述存储介质中存储软件程序,该软件程序在被一个或多个处理器读取并执行时实现上述各种可能的实现方式中所描述的应用于数据库的数据恢复方法。
本发明实施例还提供一种包含指令的计算机程序产品,当其在计算机上运行时,使得计算机执行上述各种可能的实现方式中所描述的应用于数据库的数据恢复方法。
本领域内的技术人员应明白,本发明的实施例可提供为方法、系统、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
尽管已描述了本发明的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例作出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本发明范围的所有变更和修改。
显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。

Claims (14)

1.一种应用于数据库的数据恢复方法,其特征在于,所述方法包括:
接收数据恢复请求,所述数据恢复请求包括数据恢复的时间点,其中所述数据恢复的时间点是指对数据进行恢复时所需恢复至的时间点;
从预先存储的多个备份数据的备份时间点中选择与所述数据恢复的时间点的时间差最小的备份时间点,确定为候选备份时间点;
若所述候选备份时间点位于所述数据恢复的时间点之前,则确定所述候选备份时间点为目标备份时间点,并根据所述目标备份时间点对应的备份数据、所述目标备份时间点与所述数据恢复的时间点之间的日志记录,正向解析得到所述数据恢复的时间点对应的数据;
若所述候选备份时间点位于所述数据恢复的时间点之后,且所述候选备份时间点与所述数据恢复的时间点之间的日志记录中存在数据库模式定义语言DDL语句,则从所述预先存储的多个备份数据的备份时间点中选择时间差仅次于最小时间差的备份时间点,确定为所述候选备份时间点,并重复执行上述操作;
若所述候选备份时间点位于所述数据恢复的时间点之后,且所述候选备份时间点与所述数据恢复的时间点之间的日志记录中不存在DDL语句,则将所述候选备份时间点确定为目标备份时间点,确定所述目标备份时间点与所述数据恢复的时间点之间的第一时间区间,并对所述第一时间区间对应的日志记录进行逆向解析,得到第一文本信息,根据所述目标备份时间点对应的备份数据以及所述第一文本信息,执行数据恢复。
2.根据权利要求1所述的方法,其特征在于,所述根据所述目标备份时间点对应的备份数据、所述目标备份时间点与所述数据恢复的时间点之间的日志记录正向解析得到所述数据恢复的时间点对应的数据,包括:
确定所述目标备份时间点与所述数据恢复的时间点之间的第二时间区间,并对所述第二时间区间对应的日志记录进行正向解析,得到第二文本信息;
根据所述目标备份时间点对应的备份数据以及所述第二文本信息,执行数据恢复。
3.根据权利要求1或2所述的方法,其特征在于,对第一时间区间对应的日志进行逆向解析之前,还包括:
根据各日志文件的起始记录时间和终止记录时间,确定候选日志文件;
从所述候选日志文件中获取所述第一时间区间对应的日志记录。
4.根据权利要求3所述的方法,其特征在于,所述各日志文件中还包括DDL标识,所述DDL标识用于指示日志文件是否包含DDL语句;
通过如下方式确定所述候选备份时间点与所述数据恢复的时间点之间的日志记录中是否存在DDL语句,包括:
根据各日志文件的起始记录时间和终止记录时间,确定第三时间区间对应的日志文件;所述第三时间区间为所述候选备份时间点与所述数据恢复的时间点之间的时间区间;
根据所述第三时间区间对应的日志文件的DDL标识,确定所述候选备份时间点与所述数据恢复的时间点之间的日志记录中是否存在DDL语句。
5.根据权利要求1所述的方法,其特征在于,对所述第一时间区间对应的日志记录进行逆向解析,得到第一文本信息,包括:
对所述第一时间区间对应的日志记录进行正向解析,得到第三文本信息;
将所述第三文本信息逆向解析并转换为所述第一文本信息。
6.根据权利要求1所述的方法,其特征在于,所述日志记录为以行模式存储的二进制日志文件。
7.一种应用于数据库的数据恢复装置,其特征在于,所述装置包括:
接收单元,用于接收数据恢复请求,所述数据恢复请求包括数据恢复的时间点;其中所述数据恢复的时间点是指对数据进行恢复时所需恢复至的时间点;
处理单元,用于从预先存储的多个备份数据的备份时间点中选择与所述数据恢复的时间点的时间差最小的备份时间点,确定为候选备份时间点;若所述候选备份时间点位于所述数据恢复的时间点之前,则确定所述候选备份时间点为目标备份时间点,并根据所述目标备份时间点对应的备份数据、所述目标备份时间点与所述数据恢复的时间点之间的日志记录,正向解析得到所述数据恢复的时间点对应的数据;若所述候选备份时间点位于所述数据恢复的时间点之后,且所述候选备份时间点与所述数据恢复的时间点之间的日志记录中存在数据库模式定义语言DDL语句,则从所述预先存储的多个备份数据的备份时间点中选择时间差仅次于最小时间差的备份时间点,确定为所述候选备份时间点,并重复执行上述操作;若所述候选备份时间点位于所述数据恢复的时间点之后,且所述候选备份时间点与所述数据恢复的时间点之间的日志记录中不存在DDL语句,则将所述候选备份时间点确定为目标备份时间点,确定所述目标备份时间点与所述数据恢复的时间点之间的第一时间区间,并对所述第一时间区间对应的日志记录进行逆向解析,得到第一文本信息,根据所述目标备份时间点对应的备份数据以及所述第一文本信息,执行数据恢复。
8.根据权利要求7所述的装置,其特征在于,所述处理单元还用于:
确定所述目标备份时间点与所述数据恢复的时间点之间的第二时间区间,并对所述第二时间区间对应的日志记录进行正向解析,得到第二文本信息;
根据所述目标备份时间点对应的备份数据以及所述第二文本信息,执行数据恢复。
9.根据权利要求7或8所述的装置,其特征在于,所述处理单元在对第一时间区间对应的日志进行逆向解析之前,还用于:
根据各日志文件的起始记录时间和终止记录时间,确定候选日志文件;
从所述候选日志文件中获取所述第一时间区间对应的日志记录。
10.根据权利要求9所述的装置,其特征在于,所述各日志文件中还包括DDL标识,所述DDL标识用于指示日志文件是否包含DDL语句;
所述处理单元具体用于:
根据各日志文件的起始记录时间和终止记录时间,确定第三时间区间对应的日志文件;所述第三时间区间为所述候选备份时间点与所述数据恢复的时间点之间的时间区间;
根据所述第三时间区间对应的日志文件的DDL标识,确定所述候选备份时间点与所述数据恢复的时间点之间的日志记录中是否存在DDL语句。
11.根据权利要求7所述的装置,其特征在于,所述处理单元具体用于:
对所述第一时间区间对应的日志记录进行正向解析,得到第三文本信息;
将所述第三文本信息逆向解析并转换为所述第一文本信息。
12.根据权利要求7所述的装置,其特征在于,所述日志记录为以行模式存储的二进制日志文件。
13.一种计算机可读存储介质,其特征在于,所述存储介质存储有指令,当所述指令在计算机上运行时,使得计算机实现执行权利要求1至6中任一项所述的方法。
14.一种计算机设备,其特征在于,包括:
存储器,用于存储程序指令;
处理器,用于调用所述存储器中存储的程序指令,按照获得的程序执行如权利要求1至6任一权利要求所述的方法。
CN201811237524.7A 2018-10-23 2018-10-23 一种应用于数据库的数据恢复方法及装置 Expired - Fee Related CN109491834B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201811237524.7A CN109491834B (zh) 2018-10-23 2018-10-23 一种应用于数据库的数据恢复方法及装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201811237524.7A CN109491834B (zh) 2018-10-23 2018-10-23 一种应用于数据库的数据恢复方法及装置

Publications (2)

Publication Number Publication Date
CN109491834A CN109491834A (zh) 2019-03-19
CN109491834B true CN109491834B (zh) 2021-02-26

Family

ID=65692619

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201811237524.7A Expired - Fee Related CN109491834B (zh) 2018-10-23 2018-10-23 一种应用于数据库的数据恢复方法及装置

Country Status (1)

Country Link
CN (1) CN109491834B (zh)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110674151A (zh) * 2019-09-23 2020-01-10 四川长虹电器股份有限公司 一种支持MySQL快速回滚数据的方法
CN110895500A (zh) * 2019-11-18 2020-03-20 上海易点时空网络有限公司 基于mydumper的数据回档方法及装置、存储介质
CN111488243B (zh) * 2020-03-19 2023-07-07 北京金山云网络技术有限公司 MongoDB数据库的备份、恢复方法、装置、电子设备及存储介质
CN114090332A (zh) * 2021-10-14 2022-02-25 阿里云计算有限公司 数据处理方法及装置

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105447014B (zh) * 2014-08-15 2019-03-15 阿里巴巴集团控股有限公司 基于binlog的元数据管理方法和用于提供元数据的方法及装置
CN104765659A (zh) * 2015-04-30 2015-07-08 北京奇虎科技有限公司 应用于数据库的数据恢复方法及装置
CN106547801A (zh) * 2015-09-23 2017-03-29 北京奇虎科技有限公司 数据库数据闪回方法和装置

Also Published As

Publication number Publication date
CN109491834A (zh) 2019-03-19

Similar Documents

Publication Publication Date Title
CN109491834B (zh) 一种应用于数据库的数据恢复方法及装置
US9558199B2 (en) Efficient data deduplication
US11256715B2 (en) Data backup method and apparatus
US9183268B2 (en) Partition level backup and restore of a massively parallel processing database
CN107391628B (zh) 数据同步方法及装置
US9189513B1 (en) Distributed, transactional key-value store
CN108694195B (zh) 一种分布式数据仓库的管理方法及系统
US20170212781A1 (en) Parallel execution of blockchain transactions
US20130246358A1 (en) Online verification of a standby database in log shipping physical replication environments
CN105573859A (zh) 一种数据库的数据恢复方法和设备
US10146633B2 (en) Data recovery from multiple data backup technologies
CN107665219B (zh) 一种日志管理方法及装置
US8538925B2 (en) System and method for backing up test data
JP2021518021A (ja) データ処理方法、装置及びコンピュータ読み取り可能な記憶媒体
US8935207B2 (en) Inspecting replicated data
WO2019076102A1 (zh) 一种数据回滚方法、系统、设备及计算机可读存储介质
US20180293139A1 (en) Metadata recovery for de-duplicated data
US10452496B2 (en) System and method for managing storage transaction requests
CN107092671B (zh) 一种元信息管理的方法及设备
CN106648550B (zh) 用于并发执行任务的方法与设备
US10922277B1 (en) Logging file system metadata changes using a single log hold per cached block of metadata
CN108984343B (zh) 一种基于内容分析的虚拟机备份及存储管理方法
US8296336B2 (en) Techniques for efficient dataloads into partitioned tables using swap tables
US8131928B2 (en) Restoring striped volumes of data
CN107844491B (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
GR01 Patent grant
GR01 Patent grant
CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20210226

CF01 Termination of patent right due to non-payment of annual fee