一种避免CTDB数据恢复时崩溃的方法、装置及介质制造方法及图纸

技术编号:19388771 阅读:21 留言:0更新日期:2018-11-10 01:59
本发明专利技术公开了一种避免CTDB数据恢复时崩溃的方法、装置及介质,该方法的步骤包括:当CTDB主节点执行数据恢复任务时,获取目标任务ID所对应的目标恢复任务的当前状态;当当前状态异常时,在任务列表中查找目标任务ID对应的映射链表;其中,映射链表中包括用于执行目标恢复任务的数据恢复函数以及用于缓存恢复数据而预先申请的内存空间地址,且数据恢复函数与内存空间地址存在映射关系;将映射链表移除出任务列表,以避免对内存空间地址进行访问而造成CTDB主节点崩溃。本方法保证了CTDB进行数据恢复时的可靠性。此外,本发明专利技术还提供一种CTDB的数据恢复装置及介质,有益效果同上所述。

Method, device and medium for avoiding collapse of CTDB data recovery

The invention discloses a method, device and medium for avoiding the collapse of CTDB data recovery. The steps of the method include: acquiring the current state of the target recovery task corresponding to the target task ID when the CTDB master node performs the data recovery task; and searching the target task ID corresponding to the task list when the current state is abnormal. The mapping list includes data recovery functions for performing target recovery tasks and pre-applied memory space addresses for caching recovery data, and there is a mapping relationship between data recovery functions and memory space addresses. The mapping list is removed from the task list to avoid memory space. Site access causes the CTDB master node to crash. This method ensures the reliability of CTDB in data recovery. In addition, the invention also provides a data recovery device and medium for CTDB, which has the same beneficial effect as mentioned above.

【技术实现步骤摘要】
一种避免CTDB数据恢复时崩溃的方法、装置及介质
本专利技术涉及数据库领域,特别是涉及一种避免CTDB数据恢复时崩溃的方法、装置及介质。
技术介绍
Samba服务是在Linux或Unix系统上实现SMB协议的软件,能够实现客户端对服务器中数据的访问。Samba服务会将运行时所使用或产生的用户数据以及工作记录存储至CTDB(临时数据库集群)中,CTDB往往被搭载于集群环境下的多个设备节点中,其中CTDB数据节点用于控制不同的TDB(临时数据库)的数据存取,CTDB主节点用于监控以及控制CTDB数据节点。当有CTDB主节点出现故障或发生改变时,往往需要恢复其对TDB整体化的记录。进行数据恢复的所需要的相关参数往往被注册在任务列表中。如图1所示的,是当前情况下进行数据恢复所参照的任务列表的结构,其中,srvid_handler_List为任务列表;srvid为任务ID(身份识别号);srvid_handler*h为记录数据恢复函数(pull_database_handler)与预先申请的内存空间地址(tevent_req*req)之间对应关系的映射链表,任务ID与映射链表之间存在唯一对应关系。在进行数据恢复时,CTDB主节点依照上述任务列表的结构根据任务ID查找对应的映射链表,并根据映射链表获悉对应的恢复函数以及内存空间地址,进而执行该恢复函数以将所获得的数据缓存至该内存空间地址。但是由于在恢复过程中,CTDB数据节点仍可能对TDB中数据进行IO操作,因此可能出现数据恢复错误的情况。在此情况下,CTDB主节点会释放内存空间地址(tevent_req*req)下用于缓存恢复数据的内存空间,当系统再次尝试数据恢复或对数据恢复任务进行相关监控时,将由于无法通过内存空间地址找到该内存空间而产生core文件,进而导致CTDB主节点的崩溃,难以保证CTDB进行数据恢复时的可靠性。由此可见,提供一种避免CTDB数据恢复时崩溃的方法,以保证CTDB进行数据恢复时的可靠性,是本领域技术人员需要解决的问题。
技术实现思路
本专利技术的目的是提供一种避免CTDB数据恢复时崩溃的方法、装置及介质,以保证CTDB进行数据恢复时的可靠性。为解决上述技术问题,本专利技术提供一种避免CTDB数据恢复时崩溃的方法,包括:当CTDB主节点执行数据恢复任务时,获取目标任务ID所对应的目标恢复任务的当前状态;当当前状态异常时,在任务列表中查找目标任务ID对应的映射链表;其中,映射链表中包括用于执行目标恢复任务的数据恢复函数以及用于缓存恢复数据而预先申请的内存空间地址,且数据恢复函数与内存空间地址存在映射关系;将映射链表移除出任务列表,以避免对内存空间地址进行访问而造成CTDB主节点崩溃。优选的,当当前状态异常时,该方法进一步包括:将目标恢复任务的相关信息记录至表征未完成任务的任务日志;其中,相关信息中至少包括内存空间地址所对应的内存空间容量以及数据恢复函数。优选的,在将目标恢复任务的相关信息记录至表征未完成任务的任务日志后,该方法进一步包括:依照内存空间容量在CTDB主节点中申请新内存空间地址,并建立新内存空间地址与数据恢复函数之间的映射关系,生成新映射链表;将新映射链表与新目标任务ID对应记录至任务列表,以用于再次执行目标恢复任务。优选的,获取目标任务ID所对应的目标恢复任务的当前状态具体为:以随机的方式获取目标任务ID所对应的当前状态。优选的,目标任务ID具体为十六进制形式的随机数。优选的,CTDB主节点具体为运行有Linux操作系统的服务器。此外,本专利技术还提供一种避免CTDB数据恢复时崩溃的装置,包括:状态获取模块,用于当CTDB主节点执行数据恢复任务时,获取目标任务ID所对应的目标恢复任务的当前状态;链表查找模块,用于当当前状态异常时,在任务列表中查找目标任务ID对应的映射链表;其中,映射链表中包括用于执行目标恢复任务的数据恢复函数以及用于缓存恢复数据而预先申请的内存空间地址,且数据恢复函数与内存空间地址存在映射关系;链表移除模块,用于将映射链表移除出任务列表,以避免对内存空间地址进行访问而造成CTDB主节点崩溃。优选的,该装置进一步包括:日志记录模块,用于将目标恢复任务的相关信息记录至表征未完成任务的任务日志;其中,相关信息中至少包括内存空间地址所对应的内存空间容量以及数据恢复函数。此外,本专利技术还提供一种避免CTDB数据恢复时崩溃的装置,包括:存储器,用于存储计算机程序;处理器,用于执行计算机程序时实现如上述的避免CTDB数据恢复时崩溃的方法的步骤。此外,本专利技术还提供一种计算机可读存储介质,计算机可读存储介质上存储有计算机程序,计算机程序被处理器执行时实现如上述的避免CTDB数据恢复时崩溃的方法的步骤。本专利技术所提供的避免CTDB数据恢复时崩溃的方法,当CTDB主节点所进行的数据恢复出现异常时,根据异常任务的任务ID在任务列表中查找对应映射链表,并且将映射链表从任务列表中移除。由于映射链表中包含有预先申请的内存空间地址,因此即使出现系统因数据恢复出现异常而将内存空间地址释放的情况,也能够确保系统尝试再次执行该异常任务或进行该异常任务的相关监控时,无法在任务列表中获悉内从空间地址的情况,以此避免系统由于无法找到该内存空间而产生core文件,进而避免了CTDB的崩溃,保证了CTDB进行数据恢复时的可靠性。此外,本专利技术还提供一种避免CTDB数据恢复时崩溃的装置及介质,有益效果同上所述。附图说明为了更清楚地说明本专利技术实施例,下面将对实施例中所需要使用的附图做简单的介绍,显而易见地,下面描述中的附图仅仅是本专利技术的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。图1为当前情况下进而数据恢复所参照的任务列表的结构;图2为本专利技术实施例提供的一种避免CTDB数据恢复时崩溃的方法的流程图;图3为本专利技术实施例提供的一种避免CTDB数据恢复时崩溃的装置的结构图。具体实施方式下面将结合本专利技术实施例中的附图,对本专利技术实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本专利技术一部分实施例,而不是全部实施例。基于本专利技术中的实施例,本领域普通技术人员在没有做出创造性劳动前提下,所获得的所有其他实施例,都属于本专利技术保护范围。本专利技术的核心是提供一种避免CTDB数据恢复时崩溃的方法,以保证CTDB进行数据恢复时的可靠性。本专利技术的另一核心是提供一种避免CTDB数据恢复时崩溃的装置及介质。为了使本
的人员更好地理解本专利技术方案,下面结合附图和具体实施方式对本专利技术作进一步的详细说明。实施例一图2为本专利技术实施例提供的一种避免CTDB数据恢复时崩溃的方法的流程图。请参考图2,避免CTDB数据恢复时崩溃的方法的具体步骤包括:步骤S10:当CTDB主节点执行数据恢复任务时,获取目标任务ID所对应的目标恢复任务的当前状态。需要说明的是,CTDB数据节点往往管理有多个TDB数据库,CTDB主节点执行数据恢复任务时,是以TDB数据库为单位进行的,即针对每一个TDB数据库建立对应的数据恢复任务,数据恢复任务用于实现拉取TDB数据库中的数据并重新构建至CTDB节点中,相应的,每一个数据恢复任务都有对应的任务ID。另外,对于CTDB主本文档来自技高网
...

【技术保护点】
1.一种避免CTDB数据恢复时崩溃的方法,其特征在于,包括:当CTDB主节点执行数据恢复任务时,获取目标任务ID所对应的目标恢复任务的当前状态;当所述当前状态异常时,在任务列表中查找所述目标任务ID对应的映射链表;其中,所述映射链表中包括用于执行所述目标恢复任务的数据恢复函数以及用于缓存恢复数据而预先申请的内存空间地址,且所述数据恢复函数与所述内存空间地址存在映射关系;将所述映射链表移除出所述任务列表,以避免对所述内存空间地址进行访问而造成所述CTDB主节点崩溃。

【技术特征摘要】
1.一种避免CTDB数据恢复时崩溃的方法,其特征在于,包括:当CTDB主节点执行数据恢复任务时,获取目标任务ID所对应的目标恢复任务的当前状态;当所述当前状态异常时,在任务列表中查找所述目标任务ID对应的映射链表;其中,所述映射链表中包括用于执行所述目标恢复任务的数据恢复函数以及用于缓存恢复数据而预先申请的内存空间地址,且所述数据恢复函数与所述内存空间地址存在映射关系;将所述映射链表移除出所述任务列表,以避免对所述内存空间地址进行访问而造成所述CTDB主节点崩溃。2.根据权利要求1所述的方法,其特征在于,当所述当前状态异常时,该方法进一步包括:将所述目标恢复任务的相关信息记录至表征未完成任务的任务日志;其中,所述相关信息中至少包括所述内存空间地址所对应的内存空间容量以及所述数据恢复函数。3.根据权利要求2所述的方法,其特征在于,在所述将所述目标恢复任务的相关信息记录至表征未完成任务的任务日志后,该方法进一步包括:依照所述内存空间容量在所述CTDB主节点中申请新内存空间地址,并建立所述新内存空间地址与所述数据恢复函数之间的映射关系,生成新映射链表;将所述新映射链表与新目标任务ID对应记录至所述任务列表,以用于再次执行所述目标恢复任务。4.根据权利要求1所述的方法,其特征在于,所述获取目标任务ID所对应的目标恢复任务的当前状态具体为:以随机的方式获取所述目标任务ID所对应的所述当前状态。5.根据权利要求1所述的方法,其特征在于,所述目标任务ID...

【专利技术属性】
技术研发人员:窦本君
申请(专利权)人:郑州云海信息技术有限公司
类型:发明
国别省市:河南,41

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1