数据库恢复方法及装置、存储介质、数据库系统
技术领域
本发明涉及数据库领域,具体而言,涉及一种数据库恢复方法及装置、存储介质、数据库系统。
背景技术
在相关技术中,对于共享存储数据库系统的架构,一般会包括多个服务器,共用同一个数据库,每台服务器都有独立日志用于异常恢复,即在工作过程中,出现停机等故障时,导致数据库宕机,会通过独立日志来恢复需要执行的操作,这种方式,需要通过独立日志来恢复数据,在发生故障后,才将需要恢复的日志数据恢复,读写操作都会很长。另外,在数据库系统中,一般还会有一个高可用探测程序不断连接数据库各个服务器(或者节点),查看各个数据库是否出现故障,并将探测的结果写入心跳表;如果长时间(例如1分钟)写入心跳表失败,则判定数据库宕机,从而发起剔除问题节点的过程,并且,从剩下的服务器选择一个服务器,启动进程读取宕机服务器的日志(存储是共享的可以跨节点读取),并读取对应数据做回放,在日志回放完后,问题数据就可以开启访问了。但是,这种通过日志恢复日志的方式,每次检测数据库存活的时间本来就很长,加上回放日志的时间,发生故障的机器会由于数据库宕机,其不可用时间会加长,整体数据库不可用时间就会很长。
针对上述的问题,目前尚未提出有效的解决方案。
发明内容
本发明实施例提供了一种数据库恢复方法及装置、存储介质、数据库系统,以至少解决相关技术中数据库存活检测和恢复时间过长的技术问题。
根据本发明实施例的一个方面,提供了一种数据库恢复方法,包括:检测集群服务器中的各个服务器是否处于存活状态;当检测到所述集群服务器中的第一服务器的未响应时长超过第一时长时,则从所述集群服务器的剩余服务器中选择第二服务器,通知所述第二服务器在预设缓存区域回放所述第一服务器的重做日志;根据所述第一服务器在达到第二时长之前是否恢复响应,确定是否在所述第二服务器中恢复所述第一服务器的存储数据,其中,所述第二时长大于所述第一时长。
根据本发明实施例的另一方面,还提供了一种数据库恢复装置,包括:检测单元,用于检测集群服务器中的各个服务器是否处于存活状态;通知单元,用于当检测到所述集群服务器中的第一服务器的未响应时长超过第一时长时,则从所述集群服务器的剩余服务器中选择第二服务器,通知所述第二服务器在预设缓存区域回放所述第一服务器的重做日志;确定单元,用于根据所述第一服务器在达到第二时长之前是否恢复响应,确定是否在所述第二服务器中恢复所述第一服务器的存储数据,其中,所述第二时长大于所述第一时长。
根据本发明实施例的另一方面,还提供了一种存储介质,所述存储介质包括存储的程序,其中,在所述程序运行时控制所述存储介质所在设备执行上述任意一项所述的数据库恢复方法。
根据本发明实施例的另一方面,还提供了一种数据库系统,包括:处理器;以及存储器,与所述处理器连接,用于为所述处理器提供处理以下处理步骤的指令:步骤1,检测集群服务器中的各个服务器是否处于存活状态;步骤2,当检测到所述集群服务器中的第一服务器的未响应时长超过第一时长时,则从所述集群服务器的剩余服务器中选择第二服务器,通知所述第二服务器在预设缓存区域回放所述第一服务器的重做日志;步骤3,根据所述第一服务器在达到第二时长之前是否恢复响应,确定是否在所述第二服务器中恢复所述第一服务器的存储数据,其中,所述第二时长大于所述第一时长。
在本发明实施例中,检测集群服务器中的各个服务器是否处于存活状态,当检测到集群服务器中的第一服务器的未响应时长超过第一时长时,则从集群服务器的剩余服务器中选择第二服务器,通知第二服务器在预设缓存区域回放第一服务器的重做日志,最后可以根据第一服务器在达到第二时长之前是否恢复响应,确定是否在第二服务器中恢复第一服务器的存储数据。在该实施例中,可以在检测到集群服务器中的第一服务器的未响应时长超过第一时长时,判定该第一服务器可能会出现故障,此时可以从集群服务器的剩余服务器中选择第二服务器,通知第二服务器在预设缓存区域回放第一服务器的重做日志,这样就可以提前进行日志数据的回放,若第一服务器在达到第二时长之前没有恢复响应,则可以确定第一服务器出现故障,此时可以通过第二服务器中恢复第一服务器的存储数据,由于提前进行了日志回放,可以大大减少恢复时长,从而解决相关技术中数据库存活检测和恢复时间过长的技术问题。
附图说明
此处所说明的附图用来提供对本发明的进一步理解,构成本申请的一部分,本发明的示意性实施例及其说明用于解释本发明,并不构成对本发明的不当限定。在附图中:
图1示出了一种用于实现数据库恢复方法的计算机终端的硬件结构框图;
图2是根据本发明实施例一的数据库恢复方法的流程图;
图3是根据本发明实施例一的一种恢复服务器的存储数据的流程图;
图4是本发明实施例二的数据库恢复装置的示意图;
图5是根据本申请实施例三的一种可选地数据库系统的示意图。
具体实施方式
为了使本技术领域的人员更好地理解本发明方案,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分的实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本发明保护的范围。
需要说明的是,本发明的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本发明的实施例能够以除了在这里图示或描述的那些以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
首先,在对本申请实施例进行描述的过程中出现的部分名词或术语适用于如下解释:
机器故障,指示设备中途突然挂掉,死机,断电等,在本申请中由于机器故障,会导致数据库无法提供服务,即导致数据库出现宕机。
日志,记录工作过程或者工作数据,其记录的最小单位是事务,在本发明中,日志主要分为两种类型,undo日志和redo日志。事务是原子性的,一个事务中可能会包含多个操作,一个事务中的操作要么全部执行成功,要不全部执行失败。对于每个事务,都会记录日志。undo日志记录的是事务更改前的状态,而redo日志记录的是事务更改后的状态。
操作系统会在内存中执行事务,并且将内存中的数据定期刷到磁盘中,从而实现将随机写转化为顺序写。
Redo日志,记录的是事务修改后的状态,先将日志写到磁盘中,才能去内存中执行修改。其中,redo日志记录的顺序包括:将redo日志以追加的方式写到磁盘的日志文件中;将redo日志记录的操作在内存中进行真正的执行;返回操作成功或者失败。当电脑故障的时候,内存中的东西,比如预设X的值会丢失,但是X的值在日志中是有记录的,日志又是被写到磁盘上的,断电不会丢失,所以可以通过读取redo日志成功找回X的值,将其在内存中进行恢复。下面通过各个实施例对本发明进行说明。
实施例1
根据本发明实施例,还提供了一种数据库恢复方法实施例,需要说明的是,在附图的流程图示出的步骤可以在诸如一组计算机可执行指令的计算机系统中执行,并且,虽然在流程图中示出了逻辑顺序,但是在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤。
本申请实施例一所提供的方法实施例可以在移动终端、计算机终端或者类似的运算装置中执行。图1示出了一种用于实现数据库恢复方法的计算机终端(或移动设备)的硬件结构框图。如图1所示,计算机终端10(或移动设备10)可以包括一个或多个(图中采用102a、102b,…,102n来示出)处理器102(处理器102可以包括但不限于微处理器MCU或可编程逻辑器件FPGA等的处理装置)、用于存储数据的存储器104、以及用于通信功能的传输模块106。除此以外,还可以包括:显示器、输入/输出接口(I/O接口)、通用串行总线(USB)端口(可以作为I/O接口的端口中的一个端口被包括)、网络接口、电源和/或相机。本领域普通技术人员可以理解,图1所示的结构仅为示意,其并不对上述电子装置的结构造成限定。例如,计算机终端10还可包括比图1中所示更多或者更少的组件,或者具有与图1所示不同的配置。
应当注意到的是上述一个或多个处理器102和/或其他数据处理电路在本文中通常可以被称为“数据处理电路”。该数据处理电路可以全部或部分的体现为软件、硬件、固件或其他任意组合。此外,数据处理电路可为单个独立的处理模块,或全部或部分的结合到计算机终端10(或移动设备)中的其他元件中的任意一个内。如本申请实施例中所涉及到的,该数据处理电路作为一种处理器控制(例如与接口连接的可变电阻终端路径的选择)。
存储器104可用于存储应用软件的软件程序以及模块,如本发明实施例中的数据库恢复方法对应的程序指令/数据存储装置,处理器102通过运行存储在存储器104内的软件程序以及模块,从而执行各种功能应用以及数据处理,即实现上述的数据库恢复方法。存储器104可包括高速随机存储器,还可包括非易失性存储器,如一个或者多个磁性存储装置、闪存、或者其他非易失性固态存储器。在一些实例中,存储器104可进一步包括相对于处理器102远程设置的存储器,这些远程存储器可以通过网络连接至计算机终端10。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。
传输装置106用于经由一个网络接收或者发送数据。上述的网络具体实例可包括计算机终端10的通信供应商提供的无线网络。在一个实例中,传输装置106包括一个网络适配器(Network Interface Controller,NIC),其可通过基站与其他网络设备相连从而可与互联网进行通讯。在一个实例中,传输装置106可以为射频(Radio Frequency,RF)模块,其用于通过无线方式与互联网进行通讯。
显示器可以例如触摸屏式的液晶显示器(LCD),该液晶显示器可使得用户能够与计算机终端10(或移动设备)的用户界面进行交互。
图1示出的硬件结构框图,不仅可以作为上述计算机终端10(或移动设备)的示例性框图,还可以作为上述服务器的示例性框图,数据网络连接可以是局域网连接、广域网连接、因特网连接,或其他类型的数据网络连接。计算机终端10(或移动设备)可以执行以连接到由一个服务器(例如安全服务器)或一组服务器执行的网络服务。网络服务器是基于网络的用户服务,诸如社交网络、云资源、电子邮件、在线支付或其他在线应用。
本申请下述实施例中,可以适用于共享存储数据库系统中,在共享存储数据库系统,多个服务器(或者工作节点)并行运行,各个服务器上各自运行一个数据库核心进程,共同管理、操作一个数据库,此时客户端无论连接到哪个服务器都可以在数据库进行操作。当其中一个或多个服务器由于故障失败时,只要其中存在任何一个服务器,连接在数据库系统的客户端还可以继续进行正常工作,服务器不需要重新启动新的数据库服务器进行正常工作。即本发明实施例中数据库系统会包括多个服务器(对应于各个工作节点)和一个存储数据库系统,存储数据库系统会提供数据服务,这样可以保证各个服务器之间的数据是共享的,并在其中一个服务器出现宕机时,可以直接使用其它节点来代替进行后续的工作。相对于当前的共享数据库系统中,在恢复宕机服务器的数据时,由于检测服务器是否故障和回放数据的时间过长的问题,本发明中可以通过提前恢复的方式,减少回放数据的时长,即可以在还未判定服务器出现故障但是将要到达定义的时长时,可以提前选取除了故障服务器之外的另一个服务器,启动进程,读取故障节点中的独立日志(在本发明中可以为redo日志),并在一个预先定义的内存中预先回放独立日志中记载的数据,从而在确定出故障服务器发生故障后,可以直接将回放的数据取出,减少回放时间,减少宕机服务器的不可用时间,恢复的数据加快,同样可以提高服务器的工作效率。
在上述运行环境下,本申请提供了如图2所示的数据库恢复方法。图2是根据本发明实施例一的数据库恢复方法的流程图。如图2所示,该方法包括如下步骤:
步骤S202,检测集群服务器中的各个服务器是否处于存活状态。
可选的,在本发明实施例中,集群服务器中的服务器数量可以根据工作情况自行设置,在本发明中,需要通过一个高可用检测模块检测每个服务器的存活状态。在检测时,可以是发送一个访问信息,并间隔预设时长查看服务器是否有回应,若在间隔预设时长之后,仍然没有响应,则确定服务器出现故障或者说工作节点宕机。
在本发明实施例中,集群服务器中的各个服务器共同运行同一个数据库软件,这样客户端无论连接到哪个服务器都可以在数据库进行操作。
对于集群服务器中的各个服务器的定义方式,根据每个工作人员的设置方式自行定义,其可以包括下述的第一服务器和第二服务器,其中,第一服务器可以是集群服务器中的任意一个服务器,而第二服务器可以是除了第一服务器之外能正常运行的服务器。
步骤S204,当检测到集群服务器中的第一服务器的未响应时长超过第一时长时,则从集群服务器的剩余服务器中选择第二服务器,通知第二服务器在预设缓存区域回放第一服务器的重做日志。
可选的,上述第一时长可以是根据历史过程中的响应时长自行设置,该第一时长会小于下述的第二时长,其中,第二时长可以是定义的最长响应时长,如果超出该第二时长,服务器未响应,则可以确定服务器出现故障,而第一时长低于第二时长,即可以在还没有到判定服务器故障时,即可以提前回放日志中的数据。
对于本发明实施例中的日志,可以为redo日志,该redo日志会记录事务更改后的状态,redo日志可以以追加的方式将数据写到客户端的磁盘的日志文件中,然后客户端可以将日志文件的操作在内存中真正执行,redo日志会记录执行结果。在出现故障时,可以通过读取redo原先记录的数据,将其在内存中进行恢复,然后重新执行。
上述日志记录多个事务,每个事务会包括多个操作步骤。
步骤S206,根据第一服务器在达到第二时长之前是否恢复响应,确定是否在第二服务器中恢复第一服务器的存储数据,其中,第二时长大于第一时长。
通过上述步骤,可以检测集群服务器中的各个服务器是否处于存活状态,当检测到集群服务器中的第一服务器的未响应时长超过第一时长时,则从集群服务器的剩余服务器中选择第二服务器,通知第二服务器在预设缓存区域回放第一服务器的重做日志,最后可以根据第一服务器在达到第二时长之前是否恢复响应,确定是否在第二服务器中恢复第一服务器的存储数据。在该实施例中,可以在检测到集群服务器中的第一服务器的未响应时长超过第一时长时,判定该第一服务器可能会出现故障,此时可以从集群服务器的剩余服务器中选择第二服务器,通知第二服务器在预设缓存区域回放第一服务器的重做日志,即可以提前进行日志数据的回放,若确定出第一服务器在达到第二时长之前没有恢复响应,则可以定义第一服务器出现故障,此时可以通过第二服务器中恢复第一服务器的存储数据,由于提前进行了日志回放,可以大大减少恢复时长,从而解决相关技术中数据库存活检测和恢复时间过长的技术问题。
下面对上述各个步骤进行详细说明。
对于上述的步骤S204,其在通知第二服务器在预设缓存区域回放第一服务器的重做日志时,可以包括:通知第二服务器启动预设进程,从第一服务器读取重做日志并确定日志回放点,并在预设缓存区域内从日志回放点开始回放重做日志。
上述实施方式中,预设缓存区域,可以是预先定义的一个临时缓存区,在该预设缓存区域中可以缓存日志中存储的记录,即回放日志。
通过上述实施方式,可以在确定出第一服务器的未响应时长超过第一时长时,选择出第二服务器来临时代替第一服务器的工作,在第二服务器工作之前,其需要知道第一服务器之前需要工作的具体内容,这时就需要从第一服务器读取重做日志并确定日志回放点,即如何回放日志中的数据,然后可以将日志回放到预设缓存区域,从而为在确定出第一服务器真正发生故障时,可以直接拿到预设缓存区域回放的日志,保证日志快速读取,减少日志回放时长。
对于上述的步骤S206,图3是根据本发明实施例一的一种恢复服务器的存储数据的流程图,其应用于上述步骤S206,该方法包括如下步骤:
步骤S301,若第一服务器在达到第二时长时仍未恢复响应,则确定第一服务器处于宕机状态,并将第一服务器从集群服务器中删除。
即可以在第一服务器在达到第二时长时仍未恢复响应,确定出第一服务器宕机,第一服务器无法正常工作,此时可以将第一服务器从集群服务器中删除,保证无法工作的服务器不会存在于集群服务器中,为后续客户端请求工作时,可以不会再次请求该发生宕机的服务器。
步骤S303,通知第二服务器将预设缓存区域内通过回放重做日志得到的数据写入至第二服务器的固化存储区域直至重做日志回放完成,以便在第二服务器中恢复第一服务器的存储数据。
上述实施步骤S303,是指在确定出第一服务器处于宕机状态时,将预先在预设缓存区域中的回放日志得到的数据写入第二服务器中,以让第二服务器执行与该数据对应的操作。可选的,上述的固化存储区域可以为磁盘,通过该固化存储区域可以重新执行日志对应的操作。
可选的,上述在将回放重做日志得到的数据写入至第二服务器的固化存储区域时,可以是异步回写到第二服务器的固化存储区域。
一种可选的实施方式,对于上述的步骤S206,其可以包括:若第一服务器在达到第二时长之前恢复响应,则通知第二服务器将预设缓存区域内的重做日志以及通过回放重做日志得到的数据清除。
即在确定出第一服务器达到第二时长之前,恢复响应了,则可以确定出第一服务器此时仍然可以正常工作,此时就不需要第二服务器代替第一服务器的工作,这时可以将预先在预设缓存区域中回放的日志数据清除掉。
可选的,对于本发明来说,若同时出现多个服务器同时出现故障或者将要出现故障,则可以对预设缓存区域进行分区处理,以利用每个分区处理多个需要回访的日志数据。
下面通过一种详细的工作方式来对本发明进行说明,在该工作方式,以节点作为服务器进行说明,首先,1.通过高可用检测模块不断检测数据各节点是否存活,如果节点不响应的时间超过一个预设值(T,对应于上述的第二时长),则判断节点宕机。
2.指定另外一个预设值(T1,对应于上述的第一时长),T1必须小于T。一个节点超过T1时间不响应,则进入“提前恢复”过程(对应于上述通知第二服务器在预设缓存区域回放第一服务器的重做日志),此节点称为“问题节点”。
2.1选取剩下节点中的一个,在此节点上启动进程,读取“问题节点”的Redo日志,在一块私有内存(对应于上述的预设缓存区域)中,回放Redo日志。
2.2不响应时间达到T时,判断节点宕机,将宕机节点从集群中删除;将2.1中回放出来的数据块异步回写到存储中,同时进行正式的数据恢复过程(对应于上述通知第二服务器将预设缓存区域内通过回放重做日志得到的数据写入至第二服务器的固化存储区域直至重做日志回放完成),直到Redo回放完成,宕机节点的数据完全恢复,恢复流程结束。
2.3如果在达到T之前,“问题节点”恢复响应,则将2.1中的回放的内存清理,“提前恢复”流程结束。
即本发明中,可以提前选取除了故障节点(服务器)之外的另一个节点,启动进程,读取故障节点中的redo日志,并在一个预先定义的内存中预先回放独立日志中记载的数据,从而在确定出故障节点发生故障后,可以直接将回放的数据取出,减少回放时间,减少宕机节点的不可用时间,恢复的数据加快,同样可以提高节点的工作效率。
需要说明的是,对于前述的各方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本发明并不受所描述的动作顺序的限制,因为依据本发明,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作和模块并不一定是本发明所必须的。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到根据上述实施例的数据库恢复方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质(如ROM/RAM、磁碟、光盘)中,包括若干指令用以使得一台终端设备(可以是手机,计算机,服务器,或者网络设备等)执行本发明各个实施例的方法。
实施例2
根据本发明实施例,还提供了一种用于实施上述数据库恢复方法的数据库恢复装置,图4是本发明实施例二的数据库恢复装置的示意图,如图4所示,该装置包括:检测单元41、通知单元43、确定单元45,其中,
检测单元41,用于检测集群服务器中的各个服务器是否处于存活状态。
通知单元43,用于当检测到集群服务器中的第一服务器的未响应时长超过第一时长时,则从集群服务器的剩余服务器中选择第二服务器,通知第二服务器在预设缓存区域回放第一服务器的重做日志。
确定单元45,用于根据第一服务器在达到第二时长之前是否恢复响应,确定是否在第二服务器中恢复第一服务器的存储数据,其中,第二时长大于第一时长。
上述数据库恢复装置,通过检测单元41检测集群服务器中的各个服务器是否处于存活状态,通过通知单元43在检测到集群服务器中的第一服务器的未响应时长超过第一时长时,则从集群服务器的剩余服务器中选择第二服务器,通知第二服务器在预设缓存区域回放第一服务器的重做日志,最后可以通过确定单元45根据第一服务器在达到第二时长之前是否恢复响应,确定是否在第二服务器中恢复第一服务器的存储数据。在该实施例中,可以在检测到集群服务器中的第一服务器的未响应时长超过第一时长时,判定该第一服务器可能会出现故障,此时可以从集群服务器的剩余服务器中选择第二服务器,通知第二服务器在预设缓存区域回放第一服务器的重做日志,即可以提前进行日志数据的回放,若确定出第一服务器在达到第二时长之前没有恢复响应,则可以定义第一服务器出现故障,此时可以通过第二服务器中恢复第一服务器的存储数据,由于提前进行了日志回放,可以大大减少恢复时长,从而解决相关技术中数据库存活检测和恢复时间过长的技术问题。
一种可选的,上述通知单元包括:第一通知模块,用于通知第二服务器启动预设进程,从第一服务器读取重做日志并确定日志回放点,并在预设缓存区域内从日志回放点开始回放重做日志。
另一种可选的实施方式,上述确定单元包括:第一确定模块,用于在第一服务器在达到第二时长时仍未恢复响应时,则确定第一服务器处于宕机状态,并将第一服务器从集群服务器中删除;第二通知模块,用于通知第二服务器将预设缓存区域内通过回放重做日志得到的数据写入至第二服务器的固化存储区域直至重做日志回放完成,以便在第二服务器中恢复第一服务器的存储数据。
另外,上述确定单元还包括:第三通知模块,用于在第一服务器在达到第二时长之前恢复响应,则通知第二服务器将预设缓存区域内的重做日志以及通过回放重做日志得到的数据清除。
可选地,集群服务器中的各个服务器共同运行同一个数据库软件。
此处需要说明的是,上述检测单元41、通知单元43、确定单元45对应于实施例1中的步骤S202至步骤S206,两个模块与对应的步骤所实现的实例和应用场景相同,但不限于上述实施例一所公开的内容。需要说明的是,上述模块作为装置的一部分可以运行在实施例一提供的计算机终端10中。
实施例3
本发明的实施例可以提供一种数据库系统,该数据库系统可以是对应于计算机终端群服务器、终端集合形成的系统。可选地,在本实施例中,上述计算机终端也可以替换为移动终端等终端设备,本申请实施例中上述数据库恢复方法主要应用于数据库系统中。
图5是根据本申请实施例三的一种可选地数据库系统的示意图,如图5所示,该数据库系统501可以包括:处理器502和存储器503,其中,存储器与处理器连接,用于为处理器提供处理以下处理步骤的指令:步骤1,检测集群服务器中的各个服务器是否处于存活状态;步骤2,当检测到集群服务器中的第一服务器的未响应时长超过第一时长时,则从集群服务器的剩余服务器中选择第二服务器,通知第二服务器在预设缓存区域回放第一服务器的重做日志;步骤3,根据第一服务器在达到第二时长之前是否恢复响应,确定是否在第二服务器中恢复第一服务器的存储数据,其中,第二时长大于第一时长。
可选地,在本实施例中,上述计算机终端可以位于计算机网络的多个网络设备中的至少一个网络设备。
在本实施例中,上述计算机终端可以执行数据库恢复方法中以下步骤的程序代码:检测集群服务器中的各个服务器是否处于存活状态;当检测到集群服务器中的第一服务器的未响应时长超过第一时长时,则从集群服务器的剩余服务器中选择第二服务器,通知第二服务器在预设缓存区域回放第一服务器的重做日志;根据第一服务器在达到第二时长之前是否恢复响应,确定是否在第二服务器中恢复第一服务器的存储数据,其中,第二时长大于第一时长。
根据本发明实施例的另一方面,还提供了一种存储介质,存储介质包括存储的程序,其中,在所述程序运行时控制存储介质所在设备执行上述任意一项所述的数据库恢复方法。
可选的,上述存储介质在程序运行时控制存储介质所在设备执行如下步骤:检测集群服务器中的各个服务器是否处于存活状态;当检测到集群服务器中的第一服务器的未响应时长超过第一时长时,则从集群服务器的剩余服务器中选择第二服务器,通知第二服务器在预设缓存区域回放第一服务器的重做日志;根据第一服务器在达到第二时长之前是否恢复响应,确定是否在第二服务器中恢复第一服务器的存储数据,其中,第二时长大于第一时长。
其中,本发明实施例还可以通过一种处理器来执行存储介质中存储的程序。其中
处理器可以通过传输装置调用存储器存储的信息及应用程序,以执行下述步骤:检测集群服务器中的各个服务器是否处于存活状态;当检测到集群服务器中的第一服务器的未响应时长超过第一时长时,则从集群服务器的剩余服务器中选择第二服务器,通知第二服务器在预设缓存区域回放第一服务器的重做日志;根据第一服务器在达到第二时长之前是否恢复响应,确定是否在第二服务器中恢复第一服务器的存储数据,其中,第二时长大于第一时长。
可选的,上述处理器还可以执行如下步骤的程序代码:通知第二服务器启动预设进程,从第一服务器读取重做日志并确定日志回放点,并在预设缓存区域内从日志回放点开始回放重做日志。
可选的,上述处理器还可以执行如下步骤的程序代码:若第一服务器在达到第二时长时仍未恢复响应,则确定第一服务器处于宕机状态,并将第一服务器从集群服务器中删除;
通知第二服务器将预设缓存区域内通过回放重做日志得到的数据写入至第二服务器的固化存储区域直至重做日志回放完成,以便在第二服务器中恢复第一服务器的存储数据。
可选的,上述处理器还可以执行如下步骤的程序代码:若第一服务器在达到第二时长之前恢复响应,则通知第二服务器将预设缓存区域内的重做日志以及通过回放重做日志得到的数据清除。
可选的,集群服务器中的各个服务器共同运行同一个数据库软件。
采用本发明实施例,提供了一种在检测到集群服务器中的第一服务器的未响应时长超过第一时长时,判定该第一服务器可能会出现故障,此时可以从集群服务器的剩余服务器中选择第二服务器,通知第二服务器在预设缓存区域回放第一服务器的重做日志,即可以提前进行日志数据的回放,若确定出第一服务器在达到第二时长之前没有恢复响应,则可以定义第一服务器出现故障,此时可以通过第二服务器中恢复第一服务器的存储数据,若第一服务器在达到第二时长之前恢复响应,则通知第二服务器将预设缓存区域内的重做日志以及通过回放重做日志得到的数据清除,由于提前进行了日志回放,可以大大减少恢复时长,从而解决相关技术中数据库存活检测和恢复时间过长的技术问题。
可选地,本申请实施例还提供了一种服务集群,该服务集群中包括多个服务器,每一个服务器可以包括:用于存储可执行程序和访问资源的存储模块,以及执行可执行程序和调配访问资源的处理模块。其中,存储模块可以为一个或多个,而处理模块也可以为一个或多个。
其中,存储模块可用于存储软件程序,如本申请实施例中的数据库恢复方法和装置对应的程序指令/模块,处理模块通过运行存储在存储模块内的软件程序,从而执行各种功能应用以及数据处理,即实现上述的数据库恢复方法。存储模块可包括高速随机存储模块,还可以包括非易失性存储模块,如一个或者多个磁性存储装置、闪存、或者其他非易失性固态存储模块。在一些实例中,存储模块可进一步包括相对于处理模块远程设置的存储模块,这些远程存储模块可以通过网络连接至终端10。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。
处理模块可以通过传输装置调用存储模块存储的信息及应用程序,以执行下述步骤:检测集群服务器中的各个服务器是否处于存活状态;当检测到集群服务器中的第一服务器的未响应时长超过第一时长时,则从集群服务器的剩余服务器中选择第二服务器,通知第二服务器在预设缓存区域回放第一服务器的重做日志;根据第一服务器在达到第二时长之前是否恢复响应,确定是否在第二服务器中恢复第一服务器的存储数据,其中,第二时长大于第一时长
采用本申请实施例,提供了一种数据库恢复方案。通过对存储设备进行混合部署,在部署后,对不同业务请求类型进行资源分配,本申请在分配资源时重点考虑请求类型所对应的性能指标和请求类型所对应的优先级等数据,从而合理调整各个访问资源,以保证对混合部署的存储模式能够合理调配资源,减少分散存储所带来的存储资源的浪费,并且还可以减少支出,进而解决相关技术中数据库存活检测和恢复时间过长的技术问题。
本领域普通技术人员可以理解上述实施例的各种方法中的全部或部分步骤是可以通过程序来指令终端设备相关的硬件来完成,该程序可以存储于一计算机可读存储介质中,存储介质可以包括:闪存盘、只读存储器(Read-Only Memory,ROM)、随机存取器(RandomAccess Memory,RAM)、磁盘或光盘等。
上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。
在本发明的上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。
在本申请所提供的几个实施例中,应该理解到,所揭露的技术内容,可通过其它的方式实现。其中,以上所描述的装置实施例仅仅是示意性的,例如所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,单元或模块的间接耦合或通信连接,可以是电性或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可为个人计算机、服务器或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、移动硬盘、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。