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

数据恢复方法、装置、电子设备及存储介质

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


数据恢复方法、装置、电子设备及存储介质

技术领域

本申请涉及分布式存储系统技术领域,特别地涉及一种数据恢复方法、装置、电子设备及存储介质。

背景技术

HBase是一个高可靠性、高性能、面向列、可伸缩的分布式存储系统,提供海量数据存储功能,以解决关系型数据库在处理海量数据时的局限性,适合于存储大表数据(表的规模可以达到数十亿行以及数百万列),并且对大表数据的读、写访问可以达到实时级别,HBase采用类LSM的架构体系,数据写入并没有直接写入数据文件,而是会先写入缓存(Memstore),在满足一定条件下缓存数据再会异步刷新到硬盘。为了防止数据写入缓存之后不会因为Region Server进程发生异常导致数据丢失,在写入缓存之前会首先将数据顺序写入HLog中。如果不幸一旦发生Region Server宕机或者其他异常,这种设计可以从HLog中进行日志回放进行数据补救,保证数据不丢失。作为Google分布式存储BigTable的实现HBase本身就是一个通过大量廉价的机器解决海量数据的高速存储和读取的分布式数据库解决方案。所以Region Server作为HBase集群运行在每个工作节点上的服务,宕机或出现异常是再正常不过的事情,这时候就需要进行Region Server Failover,引起RegionServer宕机的原因各种各样,有因为Full GC导致、网络异常导致、官方Bug导致(closewait端口未关闭)以及Data Node异常导致等等。这些场景下一旦Region Server发生宕机,HBase Master都会检测到,并且在检测到宕机之后会将宕机Region Server上的所有Region重新分配到集群中其他正常Region Server上去,再根据HLog进行丢失数据恢复,恢复完成之后就可以对外提供服务,整个过程都是自动完成的,并不需要人工介入。

由于数据是先写入HLog再写入内存,内存满足刷新条件再刷新到磁盘,所以当Region Server发生宕机后,其余Region Server必须利用HLog把尚未从内存刷新到磁盘的数据恢复才可以将其Region重新上线提供服务,而由于HLog是RegionServer级别的,归属同一个RegionServer管理的不同Region数据都会写到同一个HLog中。在进行log replay的时候,须保证该log中所有region都被回放完成,这个replay操作才算完成,region才会重新上线提供服务。

一个集群里根据不同的业务所创建的表必然权重不一样,对于故障恢复所需时长的要求必然也不一样,但当优先级较高的实时业务表region与优先级较低的附表region同在一个RegionServer,且该RegionServer发生故障需要进行故障恢复回放log时,有可能业务表region仅在该log的开头记录了一条数据,其余都是别的region数据,但由于replay是log整体行为,业务表region仍需等待整个log回放完才能重新上线提供服务,而本来仅需秒级别的恢复周期变成了分钟级别,大大影响了优先级较高的业务恢复。

发明内容

针对上述相关技术中的问题本申请提供一种数据恢复方法、装置、电子设备及存储介质,能够提高优先级较高的数据的恢复速度。

本申请提供了一种数据恢复方法,包括:

在分布式存储系统的第一数据交互实例发生故障宕机的情况下,获取所述第一数据交互实例的多个数据记录表,其中,多个数据记录表的优先级不同;

基于各个数据记录表的优先级将各个数据记录表发送至分布式存储系统的数据协同组件,以使所述分布式存储系统中第二数据交互实例基于所述数据记录表进行数据恢复,其中,所述第二数据交互实例未发生故障宕机。

在一些实施例中,多个数据记录表包括:第一记录表和第二记录表,所述第一记录表的优先级大于所述第二记录表的优先级,所述基于各个数据记录表的优先级将各个数据记录表发送至分布式存储系统的数据协同组件,包括;

将所述第一记录表发送至分布式存储系统的数据协同组件,在间隔预设时长后将第二记录表发送至分布式存储系统的数据协同组件。

在一些实施例中,所述方法还包括:

在所述第一记录表对应的数据恢复完成后,将所述第一记录表对应的数据存储和管理的基本单位进行重新上线;

在所述第二记录表对应的数据恢复完成后,将所述第二记录表对应的数据存储和管理的基本单位进行重新上线。

在一些实施例中,所述方法还包括:

在所述数据交互实例启动时,创建不同优先级的多个数据记录表。

在一些实施例中,所述方法还包括:

在进行数据表写入时,根据数据存储和管理的基本单位获取数据表中的优先级属性;

基于所述优先级属性将数据表写入在对应优先级的数据记录表中。

本申请实施例提供一种数据恢复装置,包括:

获取模块,用于在分布式存储系统的第一数据交互实例发生故障宕机的情况下,获取所述第一数据交互实例的多个数据记录表,其中,多个数据记录表的优先级不同;

发送模块,用于基于各个数据记录表的优先级将各个数据记录表发送至分布式存储系统的数据协同组件,以使所述分布式存储系统中第二数据交互实例基于所述数据记录表进行数据恢复,其中,所述第二数据交互实例未发生故障宕机。

在一些实施例中,多个数据记录表包括:第一记录表和第二记录表,所述第一记录表的优先级大于所述第二记录表的优先级,所述基于各个数据记录表的优先级将各个数据记录表发送至分布式存储系统的数据协同组件,包括;

将所述第一记录表发送至分布式存储系统的数据协同组件,在间隔预设时长后将第二记录表发送至分布式存储系统的数据协同组件。

在一些实施例中,所述数据恢复装置还用于:

在所述第一记录表对应的数据恢复完成后,将所述第一记录表对应的数据存储和管理的基本单位进行重新上线;

在所述第二记录表对应的数据恢复完成后,将所述第二记录表对应的数据存储和管理的基本单位进行重新上线。

本申请实施例提供一种电子设备,包括:

存储器和处理器,所述存储器上存储有计算机程序,该计算机程序被所述处理器执行时,执行上述任意一项所述数据恢复方法。

本申请实施例提供一种存储介质,该存储介质存储的计算机程序,能够被一个或多个处理器执行,能够用来实现上述任一项所述数据恢复方法。

本申请提供的一种数据恢复方法、装置、电子设备及存储介质,通过在分布式存储系统的第一数据交互实例发生故障宕机的情况下,获取所述第一数据交互实例的多个数据记录表,其中,多个数据记录表的优先级不同;基于各个数据记录表的优先级将各个数据记录表发送至分布式存储系统的数据协同组件,以使所述分布式存储系统中第二数据交互实例基于所述数据记录表进行数据恢复,其中,所述第二数据交互实例未发生故障宕机,能够提高优先级较高的数据的恢复速度。

附图说明

在下文中将基于实施例并参考附图来对本申请进行更详细的描述。

图1为本申请实施例提供的一种数据恢复方法的实现流程示意图;

图2为本申请实施例提供的电子设备的组成结构示意图。

在附图中,相同的部件使用相同的附图标记,附图并未按照实际的比例绘制。

具体实施方式

为了使本申请的目的、技术方案和优点更加清楚,下面将结合附图对本申请作进一步地详细描述,所描述的实施例不应视为对本申请的限制,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其它实施例,都属于本申请保护的范围。

在以下的描述中,涉及到“一些实施例”,其描述了所有可能实施例的子集,但是可以理解,“一些实施例”可以是所有可能实施例的相同子集或不同子集,并且可以在不冲突的情况下相互结合。

如果申请文件中出现“第一第二第三”的类似描述则增加以下的说明,在以下的描述中,所涉及的术语“第一第二第三”仅仅是是区别类似的对象,不代表针对对象的特定排序,可以理解地,“第一第二第三”在允许的情况下可以互换特定的顺序或先后次序,以使这里描述的本申请实施例能够以除了在这里图示或描述的以外的顺序实施。

除非另有定义,本文所使用的所有的技术和科学术语与属于本申请的技术领域的技术人员通常理解的含义相同。本文中所使用的术语只是为了描述本申请实施例的目的,不是旨在限制本申请。

实施例一:

基于相关技术中存在的问题,本申请实施例提供一种数据恢复方法,所述数据恢复方法应用于电子设备,在一些实施例中,所述电子设备可以移动终端、计算机、服务器等。本申请实施例提供的数据恢复方法所实现的功能可以通过电子设备的处理器调用程序代码来实现,其中,程序代码可以保存在计算机存储介质中。

本申请实施例提供一种数据恢复方法,图1为本申请实施例提供的一种数据恢复方法的实现流程示意图,如图1所示,包括:

步骤S1,在分布式存储系统的第一数据交互实例发生故障宕机的情况下,获取所述第一数据交互实例的多个数据记录表,其中,多个数据记录表的优先级不同。

本申请实施例中,所述分布式存储系统可以是HBase,所述数据交互实例可以为HBase的Region Server,每一个从节点有一个Region Server,一个Region Server可以管理多个Region,一个Region只由一个Region Server管理。Region Server用于处理来自客户端的读取、写入、更新和删除请求。

本申请实施例中,第一数据交互实例发生故障宕机,引起RegionServer宕机的原因各种各样,有因为Full GC导致、网络异常导致、官方Bug导致(close wait端口未关闭)以及Data Node异常导致等等。本申请实施例中,在数据写入时,通过多个数据记录表来对数据进行记录,所述数据记录表可以是HLog。

本申请实施例中,多个数据记录表是预先建立的,不同的记录表对应有不同的优先级。多个数据记录表包括:第一记录表和第二记录表,所述第一记录表的优先级大于所述第二记录表的优先级。

示例性地,所述两个不同优先级HLog(High,Low)表示。

步骤S2,基于各个数据记录表的优先级将各个数据记录表发送至分布式存储系统的数据协同组件,以使所述分布式存储系统中第二数据交互实例基于所述数据记录表进行数据恢复,其中,所述第二数据交互实例未发生故障宕机。

本申请实施例中,优先级越高的数据记录表发送时间越早。本申请实施例中,数据协同组件可以是Zookeeper。所述Zookeeper是一种分布式协调服务。

本申请实施例中,不同的优先级的数据记录表的名称中有各个数据记录表的优先级,电子设备可以读取各个数据记录表的名称,从而确定优先级,

本申请实施例中,步骤S2可以通过以下步骤实现:将所述第一记录表发送至分布式存储系统的数据协同组件,在间隔预设时长后将第二记录表发送至分布式存储系统的数据协同组件。

本申请实施例中,在将各个数据记录表分布式存储系统中第二数据交互实例基于所述数据记录表进行数据恢复,其中,所述第二数据交互实例未发生故障宕机。

本申请提供的一种数据恢复方法,通过在分布式存储系统的第一数据交互实例发生故障宕机的情况下,获取所述第一数据交互实例的多个数据记录表,其中,多个数据记录表的优先级不同;基于各个数据记录表的优先级将各个数据记录表发送至分布式存储系统的数据协同组件,以使所述分布式存储系统中第二数据交互实例基于所述数据记录表进行数据恢复,其中,所述第二数据交互实例未发生故障宕机,能够提高优先级较高的数据的恢复速度。

在一些实施例中,在步骤S2之后,所述方法还包括:

步骤S3,在所述第一记录表对应的数据恢复完成后,将所述第一记录表对应的数据存储和管理的基本单位进行重新上线。

本申请实施例中,数据存储和管理的基本单位可以是Region。

步骤S4,在所述第二记录表对应的数据恢复完成后,将所述第二记录表对应的数据存储和管理的基本单位进行重新上线。

本申请实施例提供的数据恢复方法,通过多个数据记录表来进行记录,在数据恢复完成后可以先后进行重新上线,从而提高了系统服务的恢复的效率。

在一些实施例中,在步骤S1之前,所述方法还包括:

步骤S11,在所述数据交互实例启动时,创建不同优先级的多个数据记录表。

承接上面的示例,可以创建第一记录表和第二记录表,所述第一记录表的优先级大于所述第二记录表的优先级。

在一些实施例中,在步骤S11之后,所述方法还包括:

步骤S12,在进行数据表写入时,根据数据存储和管理的基本单位获取数据表中的优先级属性。

本申请实施例中,数据写入时本来就需要指定表名,而优先级在建表时指定,所以Region Server接收到数据的时候就可以通过表名获取到该表对应的所有属性,这里的属性包括优先级,

步骤S13,基于所述优先级属性将数据表写入在对应优先级的数据记录表中。

承接上面的示例,优先级属性越高,写入在优先级高的数据记录表中。

实施例二:

基于前述的各个实施例,本申请实施例再提供一种数据恢复方法,包括:

创建表的时候,增加表属性priority并根据具体业务需求设置为相应优先级(High,Low);

Region Server启动时,创建打开两个不同优先级HLog(High,Low),HLog的命名格式由原来的{Region Server Encoded Name.region groupid.times tamp}更改为{RegionServer Encoded Name.priority Tag.region groupid.times tamp};

数据写入时,Region Server会根据该region获取表中priority属性,然后获取当前对应优先级HLog,并进行数据写入;

发生Region Server故障宕机,当Master感知到该Region Server故障无法提供服务,就会获取该Region Server的HLog列表,优先把Priority为high的HLog任务发布到Zookeeper上,在等待配置间隔时间后再将Priority为low的HLog任务发布到Zookeeper,对于其他活着的Region Server而言,抢占任务和以前的操作是一致的,只是Master在发布splitting log任务时根据优先级来发布;

Region Server抢占到splitting log任务后进行具体的log replay,任务完成后修改对应任务Zookeeper节点为DONE,当所有Priority high的log任务都完成后,该优先级的region即可重新上线提供服务;

当所有Priority low的log任务都完成后,该优先级的region即可重新上线提供服务;

由于不同Priority的region数据并不会在相同的HLog中出现,所以当Priorityhigh的log全部replay完成后并不需要等待Priority low的log replay完成,即可马上上线提供服务,从而更快的完成数据恢复服务恢复。

实施例三:

基于前述的实施例,本申请实施例提供一种数据恢复装置,该装置包括的各模块、以及各模块包括的各单元,可以通过计算机设备中的处理器来实现;当然也可通过具体的逻辑电路实现;在实施的过程中,处理器可以为中央处理器(CPU,Central ProcessingUnit)、微处理器(MPU,Microprocessor Unit)、数字页面的显示器(DSP,Digital SignalProcessing)或现场可编程门阵列(FPGA,Field Programmable Gate Array)等。

本申请实施例提供一种数据恢复装置,包括:

获取模块,用于在分布式存储系统的第一数据交互实例发生故障宕机的情况下,获取所述第一数据交互实例的多个数据记录表,其中,多个数据记录表的优先级不同;

发送模块,用于基于各个数据记录表的优先级将各个数据记录表发送至分布式存储系统的数据协同组件,以使所述分布式存储系统中第二数据交互实例基于所述数据记录表进行数据恢复,其中,所述第二数据交互实例未发生故障宕机。

在一些实施例中,多个数据记录表包括:第一记录表和第二记录表,所述第一记录表的优先级大于所述第二记录表的优先级,所述基于各个数据记录表的优先级将各个数据记录表发送至分布式存储系统的数据协同组件,包括;

将所述第一记录表发送至分布式存储系统的数据协同组件,在间隔预设时长后将第二记录表发送至分布式存储系统的数据协同组件。

在一些实施例中,所述数据恢复装置还用于:

在所述第一记录表对应的数据恢复完成后,将所述第一记录表对应的数据存储和管理的基本单位进行重新上线;

在所述第二记录表对应的数据恢复完成后,将所述第二记录表对应的数据存储和管理的基本单位进行重新上线。

在一些实施例中,所述数据恢复装置还用于:

在所述数据交互实例启动时,创建不同优先级的多个数据记录表。

在一些实施例中,所述数据恢复装置还用于:

在进行数据表写入时,根据数据存储和管理的基本单位获取数据表中的优先级属性;

基于所述优先级属性将数据表写入在对应优先级的数据记录表中。

需要说明的是,本申请实施例中,如果以软件功能模块的形式实现上述的数据恢复方法,并作为独立的产品销售或使用时,也可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请实施例的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机、服务器、或者网络设备等)执行本申请各个实施例所述方法的全部或部分。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,ReadOnly Memory)、磁碟或者光盘等各种可以存储程序代码的介质。这样,本申请实施例不限制于任何特定的硬件和软件结合。

相应地,本申请实施例提供一种存储介质,其上存储有计算机程序,其特征在于,该计算机程序被处理器执行时实现上述实施例中提供的数据恢复方法中的步骤。

实施例四

本申请实施例提供一种电子设备;图2为本申请实施例提供的电子设备的组成结构示意图,如图2所示,所述电子设备500包括:一个处理器501、至少一个通信总线502、用户接口503、至少一个外部通信接口504、存储器505。其中,通信总线502配置为实现这些组件之间的连接通信。其中,用户接口503可以包括显示屏,外部通信接口504可以包括标准的有线接口和无线接口。所述处理器501配置为执行存储器中存储的数据恢复方法的程序,以实现以上述实施例提供的数据恢复方法中的步骤。

这里需要指出的是:以上存储介质和电子设备实施例的描述,与上述方法实施例的描述是类似的,具有同方法实施例相似的有益效果。对于本申请存储介质和设备实施例中未披露的技术细节,请参照本申请方法实施例的描述而理解。

应理解,说明书通篇中提到的“一个实施例”或“一实施例”意味着与实施例有关的特定特征、结构或特性包括在本申请的至少一个实施例中。因此,在整个说明书各处出现的“在一个实施例中”或“在一实施例中”未必一定指相同的实施例。此外,这些特定的特征、结构或特性可以任意适合的方式结合在一个或多个实施例中。应理解,在本申请的各种实施例中,上述各过程的序号的大小并不意味着执行顺序的先后,各过程的执行顺序应以其功能和内在逻辑确定,而不应对本申请实施例的实施过程构成任何限定。上述本申请实施例序号仅仅为了描述,不代表实施例的优劣。

需要说明的是,在本文中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、对象或者装置不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、对象或者装置所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括该要素的过程、方法、对象或者装置中还存在另外的相同要素。

在本申请所提供的几个实施例中,应该理解到,所揭露的设备和方法,可以通过其它的方式实现。以上所描述的设备实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,如:多个单元或组件可以结合,或可以集成到另一个系统,或一些特征可以忽略,或不执行。另外,所显示或讨论的各组成部分相互之间的耦合、或直接耦合、或通信连接可以是通过一些接口,设备或单元的间接耦合或通信连接,可以是电性的、机械的或其它形式的。

上述作为分离部件说明的单元可以是、或也可以不是物理上分开的,作为单元显示的部件可以是、或也可以不是物理单元;既可以位于一个地方,也可以分布到多个网络单元上;可以根据实际的需要选择其中的部分或全部单元来实现本实施例方案的目的。

另外,在本申请各实施例中的各功能单元可以全部集成在一个处理单元中,也可以是各单元分别单独作为一个单元,也可以两个或两个以上单元集成在一个单元中;上述集成的单元既可以采用硬件的形式实现,也可以采用硬件加软件功能单元的形式实现。

本领域普通技术人员可以理解:实现上述方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成,前述的程序可以存储于计算机可读取存储介质中,该程序在执行时,执行包括上述方法实施例的步骤;而前述的存储介质包括:移动存储设备、只读存储器(ROM,Read Only Memory)、磁碟或者光盘等各种可以存储程序代码的介质。

或者,本申请上述集成的单元如果以软件功能模块的形式实现并作为独立的产品销售或使用时,也可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请实施例的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台控制器执行本申请各个实施例所述方法的全部或部分。而前述的存储介质包括:移动存储设备、ROM、磁碟或者光盘等各种可以存储程序代码的介质。

以上所述,仅为本申请的实施方式,但本申请的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本申请揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本申请的保护范围之内。因此,本申请的保护范围应以所述权利要求的保护范围为准。

技术分类

06120115931369