CN111930558B - 数据库***的故障修复方法、数据库***和计算设备 - Google Patents
数据库***的故障修复方法、数据库***和计算设备 Download PDFInfo
- Publication number
- CN111930558B CN111930558B CN201910395371.7A CN201910395371A CN111930558B CN 111930558 B CN111930558 B CN 111930558B CN 201910395371 A CN201910395371 A CN 201910395371A CN 111930558 B CN111930558 B CN 111930558B
- Authority
- CN
- China
- Prior art keywords
- gbp
- node
- page
- pages
- point
- 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.)
- Active
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/14—Error detection or correction of the data by redundancy in operation
- G06F11/1402—Saving, restoring, recovering or retrying
- G06F11/1446—Point-in-time backing up or restoration of persistent data
- G06F11/1458—Management of the backup or restore process
- G06F11/1469—Backup restoration techniques
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/14—Error detection or correction of the data by redundancy in operation
- G06F11/1402—Saving, restoring, recovering or retrying
- G06F11/1471—Saving, restoring, recovering or retrying involving logging of persistent data for recovery
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/14—Error detection or correction of the data by redundancy in operation
- G06F11/1402—Saving, restoring, recovering or retrying
- G06F11/1415—Saving, restoring, recovering or retrying at system level
- G06F11/142—Reconfiguring to eliminate the error
- G06F11/1425—Reconfiguring to eliminate the error by reconfiguration of node membership
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/16—Error detection or correction of the data by redundancy in hardware
- G06F11/20—Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements
- G06F11/202—Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where processing functionality is redundant
- G06F11/2023—Failover techniques
- G06F11/2028—Failover techniques eliminating a faulty processor or activating a spare
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/16—Error detection or correction of the data by redundancy in hardware
- G06F11/20—Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements
- G06F11/202—Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where processing functionality is redundant
- G06F11/2038—Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where processing functionality is redundant with a single idle spare processing component
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/16—Error detection or correction of the data by redundancy in hardware
- G06F11/20—Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements
- G06F11/202—Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where processing functionality is redundant
- G06F11/2043—Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where processing functionality is redundant where the redundant components share a common memory address space
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/16—Error detection or correction of the data by redundancy in hardware
- G06F11/20—Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements
- G06F11/2053—Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where persistent mass storage functionality or persistent mass storage control functionality is redundant
- G06F11/2094—Redundant storage or storage space
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/16—Error detection or correction of the data by redundancy in hardware
- G06F11/20—Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements
- G06F11/2097—Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements maintaining the standby controller/processing unit updated
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/21—Design, administration or maintenance of databases
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/27—Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
- G06F16/273—Asynchronous replication or reconciliation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2201/00—Indexing scheme relating to error detection, to error correction, and to monitoring
- G06F2201/80—Database-specific techniques
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Quality & Reliability (AREA)
- Databases & Information Systems (AREA)
- Data Mining & Analysis (AREA)
- Computing Systems (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
本申请涉及数据库***的故障修复方法,该方法采用了全局页面缓冲池GBP节点。具体的,主机在正常工作期间,通过低时延、高吞吐的数据传输协议(比如远程直接内存访问RDMA协议),将因为事务修改产生的被修改页面备份到GBP节点上,这样在主机发生故障时,备机不需要回放剩余没有回放的所有重做日志,而只需要将GBP节点上不存在的页面以及没有顺序排列的页面对应的重做日志进行回放并获得这部分页面,备机就能够被提升为主机,或者说该数据库***的故障就能够被修复了。
Description
技术领域
本申请涉及数据库技术领域,尤其涉及数据库***的故障修复方法,以及对应的数据库***和计算设备。
背景技术
图1示出了一种数据库***,包括主机110和备机130,主机110和备机130的设置是为了保证该数据库***的可靠性。主机110和备机130各自有自己的数据存储和日志存储,主机110修改页面(page)会产生重做日志(redo log),主机110将重做日志传输给备机,备机130接收重做日志并回放,从而达到备机130与主机110数据同步的目的。
备机130接收重做日志和回放重做日志是两个并行的过程,备机130可以批量接收重做日志并写入本地内存,同时逐条回放重做日志。通常情况下,日志回放速度慢于日志接收速度,比如接收了10G的日志,可能仅回放了8G的日志,有2G的日志待回放。在主机110发生故障时,备机130需要将接收到的所有重做日志全部回放完,才能与故障发生前的主机110同步以及替代该主机110成为新的主机(也被称为“故障转移”或“数据库***恢复”)。恢复时间目标(Recovery Time Objective,RTO)就是备机130被提升为新的主机所需的时间。通过上述主备切换的过程可以看出,RTO取决于待回放的日志量,待回放的日志量越大,就会导致RTO越大,进而影响业务的连续性。
发明内容
本申请涉及数据库***的故障修复方法,用于在该数据库***发生故障时,降低该数据库***进行故障修复所需要的时间,提高故障修复效率。另外,本申请还提供了对应的数据库***以及计算设备。
第一方面,本申请提供一种数据库***的故障修复方法。该方法包括如下内容。在所述主机正常工作时,主机使用第一数据传输协议将多个页面发送给全局页面缓冲池GBP节点。所述GBP节点将所述多个页面写入到所述GBP节点的缓存队列。其中,所述多个页面对应的日志序列号LSN按照从所述缓存队列的头部到尾部的顺序递增。
在所述主机发生故障时,所述备机确定GBP起始点、GBP恢复点和GBP结束点。
所述GBP起始点指示所述GBP节点上存储的所有页面中所包括的最小的LSN。所述GBP恢复点指示所述GBP节点最近一次接收到的一批页面中所包括的最小的LSN。所述GBP结束点指示所述GBP节点最近一次接收到的所述一批页面中所包括的最大的LSN。
在磁盘恢复点大于或等于所述GBP起始点,且磁盘结束点大于或等于所述GBP结束点时,所述备机回放位于所述GBP恢复点所对应的重做日志和所述磁盘结束点所对应的重做日志之间的所有重做日志,以使所述备机被提升为为新的主机。
所述磁盘恢复点指示所述备机的磁盘中最近一批被写入的多个页面所包含的最小的LSN。所述磁盘结束点指示所述备机所接收的最后一条重做日志的LSN。
需要说明的是,该GBP节点的页面缓冲区包括一个或多个缓存队列,每一缓存队列内均存有多个页面,且位于同一缓存队列的多个页面,按照从该缓存队列的头部到尾部的顺序,该多个页面各自包括的LSN越来越大。
值得注意的是,在本实施例中,所述备机回放位于所述GBP恢复点所对应的重做日志和所述磁盘结束点所对应的重做日志,具体是指:所述备机回放所述GBP恢复点所对应的重做日志、所述磁盘结束点所对应的重做日志、以及位于所述GBP恢复点所对应的重做日志和所述磁盘结束点所对应的重做日志之间的其他所有重做日志。换句话说,该备机回放的重做日志位于一个闭区间内,所以该备机还需要回放位于该闭区间两端的重做日志。
结合前述实施例,容易知道,在该主机发生故障时,该备机不再继续回放尚未回放的所有重做日志,而是确定该GBP起始点、该GBP恢复点、该GBP结束点、该磁盘恢复点以及该磁盘结束点,然后在该磁盘恢复点大于或等于该GBP起始点,以及该磁盘结束点大于或等于该GBP结束点时(或者简称为“在条件满足时”),回放位于该GBP恢复点对应的重做日志与该磁盘结束点对应的重做日志之间的所有重做日志,以对该数据库***进行故障恢复。
已经知道的是,该主机修改页面后,会产生与该被修改页面对应的重做日志,然后该主机会将该重做日志发送给该备机,该备机通过回放该重做日志能够得到对应的被修改页面。也即,该备机通过回放重做日志实现与该主机的同步。
当前如果该主机发生故障,则该备机会继续回放该主机在故障发生之前传送过来的所有剩余且尚未回放的重做日志,直至该备机接收到的所有重做日志均被回放完,然后该备机就能够与故障发生前的该主机实现同步了,之后该备机会替代该发生故障的主机成为新的主机。
但是在本实施例中,在该主机发生故障后,该备机不再继续回放尚未回放完的所有重做日志,而是仅回放位于该GBP恢复点对应的重做日志与该磁盘结束点对应的重做日志之间的所有重做日志,对于位于该磁盘恢复点对应的重做日志和该GBP恢复点对应的重做日志之间的所有重做日志不再回放。简单来说,在本实施例中,在该主机发生故障后,对于尚未回放完的所有重做日志,该备机只回放很小的一部分。因此,本实施例提供给的技术方案能够提高该数据库***故障恢复的效率。
在本实施例中之所以只需要回放一小部分而非全部,原因是主机将被修改的页面通过第一数据传输协议(比如RDMA协议)传送给了GBP节点,基于第一数据传输协议,主机向GBP节点发送页面的速度非常快,在主机发生故障时,该主机中大部分的被修改页面已经被发送到该GBP节点,且被该GBP节点按照顺序写入到该GBP节点的缓存队列,所以备机不需要通过回放位于该磁盘恢复点对应的重做日志和该GBP恢复点对应的重做日志之间的重做日志,而只需要回放所述GBP节点中不存在的被修改页面对应的重做日志,以及在所述GBP节点的缓存队列中没有按照顺序依次被写入的被修改页面对应的重做日志。对于在所述GBP节点的缓存队列中依次顺序排列的页面对应的重做日志,则不需要再回放,且这部分页面可以直接从所述GBP节点拉取到所述备机。
结合第一方面,在第一种可能的实现方式下,位于所述磁盘恢复点所对应的重做日志和所述GBP恢复点所对应的重做日志之间的所有重做日志没有被回放。
容易知道,在本实施例中,该备机跳过位于该磁盘恢复点所对应的重做日志和该GBP恢复点所对应的重做日志之间的所有重做日志,回放位于该GBP恢复点所对应的重做日志和该磁盘结束点所对应的重做日志之间的所有重做日志。换句话说,在本实施例中,该备机仅回放部分尚未回放完的日志而非全部,因此该数据库***的故障修复效率会被提升。
结合第一方面或第一方面的第一种可能的实现方式,在第二种可能的实现方式下,所述GBP节点维护了所述GBP恢复点和所述GBP结束点,则在所述GBP节点在将所述多个页面写入到所述GBP节点的缓存队列之后,该故障修复方法还包括:所述GBP节点根据所述多个页面,更新所述GBP恢复点和所述GBP结束点。
相应的,所述备机确定GBP恢复点和GBP结束点,包括:所述备机从所述GBP节点中获取更新后的所述GBP恢复点和所述GBP结束点。
在本实施例中,所述GBP节点在将接收到的所述多个页面写入所述GBP节点的缓存队列之后,还会根据所述多个页面,更新所述GBP恢复点和所述GBP结束点。然后,该备机会从该GBP节点处获取更新后的所述GBP恢复点和所述GBP结束点。由于是GBP节点将所述多个页面写入所述GBP节点的缓存队列的,因此所述GBP节点维护所述GBP恢复点和所述GBP结束点可能保证所述GBP恢复点和所述GBP结束点能够被及时更新。
结合第一方面,在第一种可能的实现方式下,位于所述磁盘恢复点所对应的重做日志和所述GBP恢复点所对应的重做日志之间的所有重做日志没有被回放。
容易知道,在本实施例中,该备机跳过位于该磁盘恢复点所对应的重做日志和该GBP恢复点所对应的重做日志之间的所有重做日志,回放位于该GBP恢复点所对应的重做日志和该磁盘结束点所对应的重做日志之间的所有重做日志。换句话说,在本实施例中,该备机仅回放部分尚未回放完的日志而非全部,因此该数据库***的故障修复效率会被提升。
结合第一方面或第一方面的第一种可能的实现方式,在第二种可能的实现方式下,所述GBP节点维护了所述GBP恢复点和所述GBP结束点,则在所述GBP节点在将所述多个页面写入到所述GBP节点的缓存队列之后,所述GBP节点根据所述多个页面,更新所述GBP恢复点和所述GBP结束点。
相应的,所述备机从所述GBP节点中获取更新后的所述GBP恢复点和所述GBP结束点。
在本实施例中,所述GBP节点在将接收到的所述多个页面写入所述GBP节点的缓存队列之后,还会根据所述多个页面,更新所述GBP恢复点和所述GBP结束点。然后,该备机会从该GBP节点处获取更新后的所述GBP恢复点和所述GBP结束点。由于是GBP节点将所述多个页面写入所述GBP节点的缓存队列的,因此所述GBP节点维护所述GBP恢复点和所述GBP结束点可以保证所述GBP恢复点和所述GBP结束点能够被及时更新。
结合第一方面或第一方面的第一种可能的实现方式,在第三种可能的实现方式下,所述GBP节点维护了所述GBP起始点,在所述GBP节点接收到所述GBP节点的页面缓冲区中不存在的新页面且所述GBP节点的页面缓冲区已满时,所述GBP节点将位于所述缓存队列头部的页面淘汰掉,将所述新页面写到所述缓存队列的尾部,并将所述GBP起始点更新为所述缓存队列的新的头部页面对应的LSN。
相应的,所述备机从所述GBP节点中获取更新后的所述GBP起始点。
需要解释的是,所谓“新页面”是指所述GBP节点当前接收到的页面。“所述GBP节点的页面缓冲区中不存在的新页面”是指当前接收的页面在所述GBP节点的页面缓冲区中不存在。例如,当前接收的是页面M,而所述GBP节点的页面缓冲区中不存在页面M。
在本实施例中,由于是所述GBP节点将所述多个页面写入所述GBP节点的缓存队列的,因此所述GBP节点维护所述GBP起始点可以保证所述GBP起始点能够被及时更新。
结合第一方面或第一方面的第一种可能的实现方式,在第四种可能的实现方式下,在所述GBP节点接收到所述GBP节点的页面缓冲区中不存在的新页面时,则所述GBP节点将所述新页面放入所述缓存队列的尾部。
在所述GBP节点接收到所述GBP节点的页面缓冲区中已经存在的新页面时,则所述GBP节点根据接收到的所述新页面对已经存在的对应页面进行更新,并将更新后的所述新页面放在所述缓存队列的尾部。
如上所述,所谓“新页面”是指所述GBP节点当前接收到的页面。例如,所述GBP节点当前接收到的页面是页面M,且该页面M包含的LSN为T,则页面M就是“新页面”。相应的,在所述GBP节点的页面缓冲区中不存在页面M时,则将该页面M放入缓存队列的尾部。反之,在所述GBP节点的页面缓冲区中已经存在页面M(该页面M位于缓存队列R中且包含的LSN为K)时,则使用当前接收的页面M对已经存在的页面M进行更新,并将更新后的页面M放入该缓存队列R的尾部。值得注意的是,K和T均为大于或等于0的整数,且T大于K。
需要说明的是,在该GBP节点的页面缓冲区中在接收页面M之前不存在页面M时,该页面M将被放入哪一个缓存队列,可以通过哈希算法确定,也可以通过其他方法确定。
根据本实施例可知,页面在GBP节点的缓存队列中是按照顺序放入的,因此,位于所述GBP恢复点对应的重做日志和所述GBP结束点对应的重做日志之间的所有重做日志是位于主机发送给备机的所有重做日志中最后的一段重做日志。可知,采用本实施例,可以保证该备机在执行完回放步骤之后可以与该主机同步。
结合第一方面或第一方面的第一种至第四种可能的实现方式中任一种可能的实现方式,在第五种可能的实现方式下,在所述磁盘恢复点大于或等于所述GBP起始点,且所述磁盘结束点大于或等于所述GBP结束点时,所述备机还启动后台线程,所述后台线程用于将所述GBP节点上存储的所有页面拉取到所述备机的页面缓冲区。
可选的,所述后台线程用于通过第二数据传输协议将所述GBP节点上存储的所有页面拉取的所述备机的页面缓冲区。其中,该第二数据传输协议也是低时延且高吞吐的数据传输协议,因此该后台线程可以快速地将所述GBP节点上存储的所有页面拉取的所述备机。
可选的,所述备机是在执行回放的过程中启动后台线程的。也即该后台线程从所述GBP节点拉取页面到所述备机的页面缓冲区和回放可以并行做,从而可以节省时间,提高故障修复的效率。
需要说明的是,在备机在将所述GBP节点上存储的所有页面拉取到所述备机的页面缓冲区后,所述备机还会将拉取到所述备机的页面缓冲区的页面与自己维护的页面进行比较,保留新的页面并丢弃旧的页面。
结合第一方面或第一方面的第一种至第五种可能的实现方式中任一种可能的实现方式,在第六种可能的实现方式下,在所述备机执行完回放步骤之后,以及在所述备机上的应用需要访问的页面还位于所述GBP节点的页面缓冲区时,则所述应用从所述GBP节点的页面缓冲区中读取所述需要访问的页面。
可选的,所述应用通过第二数据传输协议从所述GBP节点的页面缓冲区中读取所述需要访问的页面。
结合第一方面或第一方面的第一种至第六种可能的实现方式中任一种可能的实现方式,在第七种可能的实现方式下,在所述主机发生故障之后,以及在所述备机执行所述回放步骤之前,所述备机还从本地获取所述磁盘恢复点和所述磁盘结束点。所述备机获取所述磁盘恢复点和所述磁盘结束点的目的是为了判断是否可以使用前述实施例所述的故障修复方法。
结合第一方面或第一方面的第一种至第七种可能的实现方式中任一种可能的实现方式,在第八种可能的实现方式下,在所述主机正常工作期间,所述主机还将重做日志发送给所述备机。所述备机回放接收到的所述重做日志,得到对应的页面。
进一步地,所述备机还将得到的所述页面成批地刷到本地磁盘。
结合第一方面或第一方面的第一种至第八种可能的实现方式中任一种可能的实现方式,在第九种可能的实现方式下,所述主机启动页面发送线程,所述页面发送线程使用第一数据传输协议按照从发送队列的头部到尾部的顺序,将位于所述发送队列的多个页面成批发送到所述GBP节点。所述发送队列位于所述主机内,且从所述发送队列的头部到尾部,位于所述发送队列的多个页面所对应的LSN是递增的。
由于位于发送队列的多个页面各自对应的LSN递增,所以页面发送线程按照从发送队列的头部到尾部的顺序将所述多个页面发送给所述GBP节点,是为了保证所述GBP节点在接收页面时也是按照顺序接收的,具体的,先接收的页面的LSN小于后接收到的页面的LSN。在所述GBP节点将接收到的多个页面写入到所述GBP节点的缓存队列时,所述GBP节点可以按照接收页面的顺序将多个页面写入到所述GBP节点的缓存队列中,这样所述缓存队列内的多个页面各自的LSN按照从所述缓存队列的头部到尾部的顺序是的递增的。也即,采用本方案,可以比较简单地实现位于缓存队列内的多个页面按照从所述缓存队列的头部到尾部的顺序递增。
结合第一方面的第九种可能的实现方式,在第十种可能的实现方式下,所述主机启动多个页面发送线程,所述多个页面发送线程与所述主机包括的多个发送队列是一对一的。本实施例的好处在于由于页面发送线程和发送队列是一对一的,因此操作起来比较简单且不容易出错。
结合第一方面的第九种或第十种可能的实现方式,在第十一种可能的实现方式下,所述GBP节点启动页面接收线程,所述页面接收线程成批地接收所述多个页面,并将所述多个页面写入所述GBP节点的缓存队列。
结合第一方面的第十一种可能的实现方式,在第十二种可能的实现方式下,所述GBP节点启动多个页面接收线程,所述多个页面接收线程与所述GBP节点包括的多个缓存队列是一对一的,且所述主机启动多个页面发送线程与所述GBP节点启动多个页面接收线程是一对一的。本实施例的好处在于由于页面接收线程和缓存队列是一对一的,并且页面发送线程和页面接收线程也是一对一的,因此操作起来比较简单且不容易出错。
第二方面,本申请提供了一种数据库***。该数据库***包括主机、备机和GBP节点。其中,主机与GBP节点之间通过第一数据传输协议通信连接。
所述主机用于将多个页面发送给所述GBP节点。所述GBP节点用于将所述多个页面写入到所述GBP节点的缓存队列。所述多个页面对应的LSN按照从所述缓存队列的头部到尾部的顺序递增。
在所述主机发生故障时,所述备机用于确定GBP起始点、GBP恢复点和GBP结束点。
值得注意的是,所述GBP起始点指示所述GBP节点上存储的所有页面中所包括的最小的日志序列号LSN。所述GBP恢复点指示所述GBP节点最近一次接收到的一批页面中所包括的最小的LSN。所述GBP结束点指示所述GBP节点最近一次接收到的所述一批页面中所包括的最大的LSN。
在磁盘恢复点大于或等于所述GBP起始点,且磁盘结束点大于或等于所述GBP结束点的情况下,所述备机还用于回放位于所述GBP恢复点所对应的重做日志和所述磁盘结束点所对应的重做日志之间的所有重做日志,以被提升为新的主机。
其中,所述磁盘恢复点指示所述备机的磁盘中最近一批被写入的多个页面所包含的最小的LSN。所处磁盘结束点指示所述备机所接收的最后一条重做日志的LSN。
结合前述实施例可知,在数据库***的主机发生故障,以及在条件(所谓的条件是指所述磁盘恢复点大于或等于所述GBP起始点,且所述磁盘结束点大于或等于所述GBP结束点)满足时,备机通过回放位于所述GBP恢复点所对应的重做日志和所述磁盘结束点所对应的重做日志之间的一小部分重做日志,就可以被提升为新的主机。由上可知,在本实施例提供的数据库***中,从主机发生故障,到新的主机产生,只需要很少的时间,所以利用该数据库***可以提高业务的连续性。
结合第二方面,在第一种可能的实现方式下,位于所述磁盘恢复点所对应的重做日志和所述GBP恢复点所对应的重做日志之间的所有重做日志没有被回放。
本实施例是为了进一步明确,对于剩余的没有被回放的所有重做日志,所述备机只回放了一部分,而不再回放另一部分,因此所述备机和所述主机之间进行故障切换(failover)需要的时间比较少,进而该数据库***进行故障修复需要的时间也比较少,或者说,故障修复的效率比较高。
结合第二方面或第二方面的第一种可能的实现方式,在第二种可能的实现方式下,在将所述多个页面写入到所述GBP节点的缓存队列之后,所述GBP节点还用于根据所述多个页面,更新所述GBP恢复点和所述GBP结束点。相应的,所述备机还用于从所述GBP节点中获取更新后的所述GBP恢复点和所述GBP结束点。由于是GBP节点将所述多个页面写入所述GBP节点的缓存队列的,因此所述GBP节点维护所述GBP恢复点和所述GBP结束点可以保证所述GBP恢复点和所述GBP结束点能够被及时更新。
结合第二方面或第二方面的第一种可能的实现方式,在第三种可能的实现方式下,在所述GBP节点接收到所述GBP节点的页面缓冲区中不存在的新页面且所述GBP节点的页面缓冲区已满时,所述GBP节点还用于将位于所述缓存队列头部的页面淘汰掉,并将所述GBP起始点更新为所述缓存队列的新的头部页面对应的LSN。相应的,所述备机还用于从所述GBP节点中获取更新后的所述GBP起始点。由于是所述GBP节点将所述多个页面写入所述GBP节点的缓存队列的,因此所述GBP节点维护所述GBP起始点可以保证所述GBP起始点能够被及时更新。
结合第二方面或第二方面的第一种可能的实现方式,在第四种可能的实现方式下,在所述GBP节点接收到所述GBP节点的页面缓冲区中不存在的新页面时,所述GBP节点还用于将所述新页面放入所述缓存队列的尾部。或者,在所述GBP节点接收到所述GBP节点的页面缓冲区中已经存在的新页面时,所述GBP节点还用于根据接收到的所述新页面对已经存在的对应页面进行更新,并将更新后的所述新页面放在所述缓存队列的尾部。
由上可知,页面在GBP节点的缓存队列中是按照顺序放入的,因此,位于所述GBP恢复点对应的重做日志和所述GBP结束点对应的重做日志之间的所有重做日志是位于主机发送给备机的所有重做日志中最后的一段重做日志。所以采用本实施例,可以保证该备机在执行完回放步骤之后可以与该主机同步。
结合第二方面或第二方面的第一至第四种可能的实现方式中任一种实现方式,在第五种可能的实现方式下,在所述磁盘恢复点大于或等于所述GBP起始点,且所述磁盘结束点大于或等于所述GBP结束点时,所述备机还用于启动后台线程,所述后台线程用于将所述GBP节点上存储的所有页面拉取到的所述备机的页面缓冲区。
可选的,所述后台线程用于通过第二数据传输协议将所述GBP节点上存储的所有页面拉取到的所述备机的页面缓冲区。
由于备机只回放了部分重做日志,对于没有被回放的重做日志来说,之所以不需要回放,是因为它们对应的页面被存在GBP节点中。在本实施例中,通过从所述GBP节点上拉取所述GBP节点中的全部页面,可以保证将没被回放的重做日志对应的页面也拉取到所述备机,进而保证该备机可以实现与发生故障的主机完全同步。
结合第二方面或第二方面的第一至第五种可能的实现方式中任一种实现方式,在第六种可能的实现方式下,在所述主机发生故障之后,以及在所述备机回放所述重做日志之前,所述备机还用于获取(或从本地获取)所述磁盘恢复点和所述磁盘结束点。获取所述磁盘恢复点和所述磁盘结束点是为了判断执行回放的条件是否满足,只有在条件满足时,所述备机才能执行回放,或者说,本申请提供的数据库***的故障修复效率才能被提高。
结合第二方面或第二方面的第一至第六种可能的实现方式中任一种实现方式,在第七种可能的实现方式下,在所述主机正常工作期间,所述主机还用于将重做日志发送给所述备机。相应的,所述备机还用于回放所述重做日志,得到对应的页面,并将所述页面成批地刷到本地磁盘。
结合第二方面或第二方面的第一至第七种可能的实现方式中任一种实现方式,在第八种可能的实现方式下,所述主机用于启动页面发送线程,所述页面发送线程使用第一数据传输协议按照从发送队列的头部到尾部的顺序,将位于所述发送队列的多个页面成批地发送给所述GBP节点,所述发送队列位于所述主机内,且从所述发送队列的头部到尾部,位于所述发送队列的多个页面所对应的LSN是递增的。
由于位于发送队列的多个页面各自对应的LSN递增,所以页面发送线程按照从发送队列的头部到尾部的顺序将所述多个页面发送给所述GBP节点,是为了保证所述GBP节点在接收页面时也是按照顺序接收的,具体的,先接收的页面的LSN小于后接收到的页面的LSN。在所述GBP节点将接收到的多个页面写入到所述GBP节点的缓存队列时,所述GBP节点可以按照接收页面的顺序将多个页面写入到所述GBP节点的缓存队列中,这样所述缓存队列内的多个页面各自的LSN按照从所述缓存队列的头部到尾部的顺序是的递增的。也即,采用本方案,可以比较简单地实现位于缓存队列内的多个页面按照从所述缓存队列的头部到尾部的顺序递增。
结合第二方面的第八种可能的实现方式,在第九种可能的实现方式下,所述主机用于启动多个页面发送线程,所述多个页面发送线程与所述主机包括的多个发送队列是一对一的。本实施例的好处在于由于页面发送线程和发送队列是一对一的,因此操作起来比较简单且不容易出错。
结合第二方面或第二方面的第一至第九种可能的实现方式中任一种实现方式,在第十种可能的实现方式下,所述GBP节点用于启动页面接收线程,所述页面接收线程成批地接收所述多个页面,并将所述多个页面写入所述GBP节点的缓存队列。
结合第二方面的第十种可能的实现方式,在第十一种可能的实现方式下,所述GBP节点用于启动多个页面接收线程,所述多个页面接收线程与所述GBP节点包括的多个缓存队列是一对一的,且所述主机启动多个页面发送线程与所述GBP节点启动多个页面接收线程是一对一的。本实施例的好处在于由于页面接收线程和缓存队列是一对一的,并且页面发送线程和页面接收线程也是一对一的,因此操作起来比较简单且不容易出错。
第三方面,本申请提供另一种数据库***的故障修复方法。具体的,该方法包括如下步骤。在主机发生故障时,确定全局页面缓冲池GBP起始点、GBP恢复点和GBP结束点。在磁盘恢复点大于或等于所述GBP起始点,且磁盘结束点大于或等于所述GBP结束点时,回放位于所述GBP恢复点所对应的重做日志和所述磁盘结束点所对应的重做日志之间的所有重做日志,以提升为新的主机。
值得注意的是,所述GBP起始点指示GBP节点上存储的所有页面中所包括的最小的日志序列号LSN。所述GBP恢复点指示所述GBP节点最近一次接收到的一批页面中所包括的最小的LSN。所述GBP结束点指示所述GBP节点最近一次接收到的所述一批页面中所包括的最大的LSN。
需要说明的是,所述GBP节点上存储的所有页面均是所述主机在正常工作期间,通过第一数据传输协议发送给所述GBP节点,并由所述GBP节点写入到所述GBP节点的缓存队列的,所述多个页面对应的LSN按照从所述缓存队列的头部到尾部的顺序递增。
其中,所述磁盘恢复点指示所述备机的磁盘中最近一批被写入的多个页面所包含的最小的LSN。所述磁盘结束点指示所述备机所接收的最后一条重做日志的LSN。
结合第三方面,在第一种可能的实现方式下,位于所述磁盘恢复点所对应的重做日志以及所述GBP恢复点所对应的重做日志之间的所有重做日志没有被回放。
结合第三方面或第三方面的第一种可能的实现方式,在第二种可能的实现方式下,在所述磁盘恢复点大于或等于所述GBP起始点,且所述磁盘结束点大于或等于所述GBP结束点时,所述方法还包括:启动后台线程,所述后台线程用于将所述GBP节点上存储的所有页面拉取到页面缓冲区。
可选的,所述后台线程用于通过第二数据传输协议将所述GBP节点上存储的所有页面拉取到页面缓冲区。
结合第三方面、第三方面的第一种可能的实现方式或第三方面的第二种可能的实现方式,在第三种可能的实现方式下,在执行完所述回放步骤之后,以及在需要被访问的页面还位于所述GBP节点的页面缓冲区时,所述方法还包括:从所述GBP节点的页面缓冲区中读取所述需要被访问的页面。
结合第三方面或第三方面的第一种至第三种可能的实现方式中任一种实现方式,在第四种可能的实现方式下,在所述主机发生故障之后以及在执行所述回放步骤之前,获取所述磁盘恢复点和所述磁盘结束点。
结合第三方面或第三方面的第一种至第四种可能的实现方式中任一种实现方式,在第五种可能的实现方式下,在所述主机正常工作期间,接收所述主机发送的重做日志,回放所述重做日志得到对应的页面,并将得到的页面成批地刷到本地磁盘。
值得注意的是,第三方面所述的故障修复方法的执行主体是第一方面所述的故障修复方法中的备机。第三方面的每一实施例均是从备机的角度描述的。由于第三方面所述的故障修复方法与第一方面所述的故障修复方法有很多相同或相似之处,因此关于第三方面的每一实施例的有益效果,均请参见第一方面的对应实施例所具有的有益效果,为了更本申请更简洁,针对第三方面的每一实施例均不再重复描述其有益效果。
第四方面,本申请还提供了一种计算设备,该计算设备包括确定单元和回放单元。在主机发生故障时,所述确定单元用于确定全局页面缓冲池GBP起始点、GBP恢复点和GBP结束点。在磁盘恢复点大于或等于所述GBP起始点,且磁盘结束点大于或等于所述GBP结束点时,所述回放单元用于回放位于所述GBP恢复点所对应的重做日志和所述磁盘结束点所对应的重做日志之间的所有重做日志。
需要解释的是,所述GBP起始点指示GBP节点上存储的所有页面中所包括的最小的日志序列号LSN。所述GBP恢复点指示所述GBP节点最近一次接收到的一批页面中所包括的最小的LSN。所述GBP结束点指示所述GBP节点最近一次接收到的所述一批页面中所包括的最大的LSN。所述磁盘恢复点指示所述备机的磁盘中最近一批被写入的多个页面所包含的最小的LSN。所述磁盘结束点指示所述备机所接收的最后一条重做日志的LSN。
值得注意的是,所述GBP节点上存储的所有页面均是所述主机在正常工作期间,通过第一数据传输协议发送给所述GBP节点,并由所述GBP节点写入到所述GBP节点的缓存队列的,所述多个页面对应的LSN按照从所述缓存队列的头部到尾部的顺序递增。
结合第四方面,在第一种可能的实现方式下,位于所述磁盘恢复点所对应的重做日志以及所述GBP恢复点所对应的重做日志之间的所有重做日志没有被回放。
结合第四方面或第四方面的第一种可能的实现方式,在第二种可能的实现方式下,该计算设备还包括启动单元。在所述磁盘恢复点大于或等于所述GBP起始点,且所述磁盘结束点大于或等于所述GBP结束点时,所述启动单元用于启动后台线程,所述后台线程用于将所述GBP节点上存储的所有页面拉取到页面缓冲区。
可选的,所述后台线程用于通过第二数据传输协议将所述GBP节点上存储的所有页面拉取到页面缓冲区。
结合第四方面、第四方面的第一种可能的实现方式或第四方面的第二种可能的实现方式,在第三种可能的实现方式下,该计算设备还包括读取单元。在所述回放单元回放完重做日志之后,以及在需要被访问的页面还位于所述GBP节点的页面缓冲区时,所述读取单元用于从所述GBP节点的页面缓冲区中读取所述需要被访问的页面。
结合第四方面或第四方面的第一种至第三种可能的实现方式中任一种实现方式,在第四种可能的实现方式下,在所述主机发生故障之后以及在所述回放单元执行回放步骤之前,所述确定单元还用于获取所述磁盘恢复点和所述磁盘结束点。
结合第四方面或第四方面的第一种至第四种可能的实现方式中任一种实现方式,在第五种可能的实现方式下,该计算设备还包括接收单元。在所述主机正常工作期间,所述接收单元用于接收所述主机发送的重做日志。对应的,所述回放单元用于回放所述重做日志得到对应的页面,并将得到的所述页面成批地刷到本地磁盘。
值得注意的是,第四方面所述的计算设备可以执行第三方面的每一实施例,且第四方面所述的计算设备可以实现第二方面所述的数据库***中备机的功能。因此,第四方面的每一实施例的有益效果,请参见第二方面的对应实施例所具有的有益效果,针对第四方面的每一实施例的有益效果,本申请均不再重复描述。
第五方面,本申请提供了另一种计算设备,该计算设备至少包括处理器和存储器。所述存储器用于存储磁盘恢复点和磁盘结束点。在主机发生故障时,所述处理器用于确定GBP起始点、GBP恢复点和GBP结束点。在磁盘恢复点大于或等于所述GBP起始点,且磁盘结束点大于或等于所述GBP结束点时,所述处理器还用于回放位于所述GBP恢复点所对应的重做日志和所述磁盘结束点所对应的重做日志之间的所有重做日志。
值得注意的是,所述GBP起始点指示GBP节点上存储的所有页面中所包括的最小的LSN。所述GBP恢复点指示所述GBP节点最近一次接收到的一批页面中所包括的最小的LSN。所述GBP结束点指示所述GBP节点最近一次接收到的所述一批页面中所包括的最大的LSN。所述磁盘恢复点指示所述备机的磁盘中最近一批被写入的多个页面所包含的最小的LSN。所述磁盘结束点指示所述备机的内存上的最后一条重做日志的LSN。
需要说明的是,所述GBP节点上存储的所有页面均是所述主机在正常工作期间,通过第一数据传输协议发送给所述GBP节点,并由所述GBP节点写入到所述GBP节点的缓存队列的,所述多个页面对应的LSN按照从所述缓存队列的头部到尾部的顺序递增。
结合第五方面,在第一种可能的实现方式下,位于所述磁盘恢复点所对应的重做日志以及所述GBP恢复点所对应的重做日志之间的所有重做日志没有被回放。
结合第五方面或第五方面的第一种可能的实现方式,在第二种可能的实现方式下,在所述磁盘恢复点大于或等于所述GBP起始点,且所述磁盘结束点大于或等于所述GBP结束点时,所述处理器还用于启动后台线程,所述后台线程用于将所述GBP节点上存储的所有页面拉取到页面缓冲区。
可选的,所述后台线程用于通过第二数据传输协议将所述GBP节点上存储的所有页面拉取到页面缓冲区。
结合第五方面、第五方面的第一种可能的实现方式或第五方面的第二种可能的实现方式,在第三种可能的实现方式下,在所述回放单元回放完重做日志之后,以及在需要被访问的页面还位于所述GBP节点的页面缓冲区时,所述处理器用于从所述GBP节点的页面缓冲区中读取所述需要被访问的页面。
结合第五方面或第五方面的第一种至第三种可能的实现方式中任一种实现方式,在第四种可能的实现方式下,在所述主机发生故障之后以及在所述回放单元执行回放步骤之前,所述处理器还用于获取所述磁盘恢复点和所述磁盘结束点。
结合第五方面或第五方面的第一种至第四种可能的实现方式中任一种实现方式,在第五种可能的实现方式下,所述计算设备还包括I/O接口。在所述主机正常工作期间,所述I/O接口用于接收所述主机发送的重做日志。对应的,所述处理器用于回放所述重做日志得到对应的页面,并将得到的所述页面成批地刷到本地磁盘。
应当知道的是,第五方面中每一实施例提供的计算设备可以执行第三方面的对应实施例所述的方法,且第五方面所述的计算设备与第四方面所述的计算设备可以实现相同的功能,也就是说,第五方面所述的计算设备也可以实现第二方面所述的数据库***中备机的功能。因此,第五方面的每一实施例的有益效果,请参见第二方面的对应实施例所具有的有益效果,此处不再重复描述。
第六方面,本申请还提供了一种数据备份方法。该方法包括:在将重做日志传送给备机期间,使用远程直接内存访问RDMA协议将页面发送给GBP节点,以便在发生故障时,利用所述GBP节点中的页面进行故障修复。
在本实施例中,在将重做日志传送给备机期间,还使用RDMA协议将被修改页面发给GBP节点,用于在所述GBP节点上做备份。由于使用RDMA协议可以使得大部分被发送给备机的重做日志对应的被修改页面被发送给了GBP节点,因此在本机发生故障时,所述备机尚未回放的剩余重做日志包括两部分,第一部分重做日志是指位于所述磁盘恢复点所对应的重做日志和所述GBP恢复点所对应的重做日志之间的全部重做日志,第二部分重做日志是指位于所述GBP恢复点所对应的重做日志和所述磁盘结束点所对应的重做日志之间的全部重做日志。所述备机只需要回放该第二部分重做日志以得到对应的页面就可以实现故障修复了,因为第一部分重做日志对应的页面可以直接从所述GBP节点上拉取。可知,采用本实施例提供的数据备份方法能够提高故障修复效率。
第七方面,本申请提供了一种计算设备,用于执行第六方面所述的数据备份方法。其中,该计算设备包括第一传输接口和第二传输接口。第一传输接口,用于将重做日志传送给备机。在所述第一传输接口将所述重做日志传送给所述备机期间,第二传输接口,用于基于远程直接内存访问RDMA协议将页面发送给GBP节点,以便在发生故障时,利用所述GBP节点中的页面进行故障修复。应当知道的是,将本实施例提供的计算设备用于数据库***中,可以提高该数据库***进行故障修复的效率。
第八方面,本申请提供了另一种故障修复方法。该方法包括如下步骤。
在主机正常工作时,所述主机使用第一数据传输协议将多个页面发送给全GBP节点。
所述GBP节点将所述多个页面写入所述GBP节点的缓存队列中。所述多个页面对应的日志序列号LSN按照从所述缓存队列的头部到尾部的顺序递增。
在所述主机发生故障时,所述主机确定GBP起始点、GBP恢复点和GBP结束点。
在磁盘恢复点大于或等于所述GBP起始点,且磁盘结束点大于或等于所述GBP结束点时,所述主机回放位于所述GBP恢复点对应的重做日志和所述磁盘结束点对应的重做日志之间的所有重做日志,以被重新拉起。
值得注意的是,所述GBP起始点指示所述GBP节点上存储的所有页面中所包括的最小的LSN。所述GBP恢复点指示所述GBP节点最近一次接收的一批页面中所包括的最小的LSN。所述GBP结束点指示所述GBP节点最近一次接收到的所述一批页面中所包括的最大的LSN。所述磁盘恢复点指示本地磁盘最近一批被写入的多个页面中所包括的最小的LSN。所述磁盘结束点指示所接收到的最后一条重做日志的LSN。
需要解释的是,第八方面对应的实施例不同于第一方面对应的实施例。在第一方面对应的实施例中,主机发生故障后,备机回放部分重做日志后被提升为新的主机,进而实现故障修复,这种故障修复实际是一种故障转移,因为经过故障修复后,原来的备机替代原来的主机执行原来的主机的功能。但是,在第八方面对应的实施例中,主机发生故障后,该主机通过回放部分重做日志后被重新拉起,也即在该主机被故障修复后,该主机会继续执行以前的功能。简单来说,在第一方面对应的实施例中,在主机发生故障后,该主机和备机之间会进行切换,切换后的备机称为新的主机;但是在第八方面对应的实施例中,在主机发生故障后,该主机将会被重新拉起。
由上可知,在主机发生故障后,该主机仅回放位于该GBP恢复点对应的重做日志与该磁盘结束点对应的重做日志之间的全部重做日志,就能重新被拉取。对于位于该磁盘恢复点对应的重做日志和该GBP恢复点对应的重做日志之间的所有重做日志不再回放。简单来说,在本实施例中,在该主机发生故障后,该主机只回放很小的一部分。因此,本实施例提供给的技术方案能够提高该数据库***故障恢复的效率。
应当知道的是,所述主机存储重做日志。已知的是,每一个(增加、删除或修改)事务均将对应一个重做日志,在本实施例中,主机会将这些重做日志发送给备机,并将与重做日志对应的被修改页面发送给GBP节点。尤其需要注意的是,所述主机还会在本地备份这些重做日志,譬如一方面将这些重做日志发送给备机,一方面将它们缓存在所述主机的页面缓冲区,或者将它们刷到本地磁盘,以便在该主机发送故障时,回放这些重做日志中的部分重做日志,以实现该主机被重新拉取。
值得解释的是,在实施例中,所述主机的故障为软件故障。
结合第八方面,在第一种可能的实现方式下,位于所述磁盘恢复点对应的重做日志和所述GBP恢复点对应的重做日志之间的所有重做日志没有被回放。
容易知道,在本实施例中,该主机跳过位于该磁盘恢复点所对应的重做日志和该GBP恢复点所对应的重做日志之间的所有重做日志,回放位于该GBP恢复点所对应的重做日志和该磁盘结束点所对应的重做日志之间的所有重做日志。换句话说,在本实施例中,该主机仅回放部分尚未回放完的日志而非全部,因此该数据库***的故障修复效率会被提升。
结合第八方面或第八方面的第一种可能的实现方式,在第二种可能的实现方式下,在所述磁盘恢复点大于或等于所述GBP起始点,且所述磁盘结束点大于或等于所述GBP结束点时,所述故障修复方法还包括:所述主机启动后台线程,所述后台线程用于将位于所述GBP节点上的所有页面拉取到页面缓冲区。
应当知道的是,所述后台线程用于通过所述第一数据传输协议将位于所述GBP节点上的所有页面拉取到页面缓冲区。
可选的,该后台线程从所述GBP节点拉取页面到所述主机的页面缓冲区和所述回放步骤的执行可以并行做,从而可以节省时间,提高故障修复的效率。
需要说明的是,在主机在将所述GBP节点上存储的所有页面拉取到所述主机的页面缓冲区后,所述主机还会将拉取到所述主机的页面缓冲区的页面与自己维护的页面进行比较,保留新的页面并丢弃旧的页面。
结合第八方面、第八方面的第一种可能的实现方式或第八方面的第二种可能的实现方式,在第三种可能的实现方式下,在所述主机执行完回放步骤之后,以及在需要被访问的页面还位于所述GBP节点的页面缓冲区时,所述故障修复方法还包括:所述主机从所述GBP节点的页面缓冲区中读取所述需要被访问的页面。
结合第八方面或第八方面的第一种至第三种可能的实现方式中任一种实现方式,在第四种可能的实现方式下,在所述主机发生故障之后,以及在执行所述回放步骤之前,所述故障修复方法还包括:所述主机从本地获取所述磁盘恢复点和所述磁盘结束点。
结合第八方面或第八方面的第一种至第四种可能的实现方式中任一种实现方式,在第五种可能的实现方式下,所述主机将多个页面发送给所述GBP节点,具体包括:所述主机启动页面发送线程,所述页面发送线程使用第一数据传输协议按照从发送队列的头部到尾部的顺序,将位于所述发送队列的多个页面成批地发送给所述GBP节点,从所述发送队列的头部到尾部,位于所述发送队列的多个页面所对应的LSN是递增的。
第九方面,一种数据库***,该数据库***包括主机和GBP节点。其中,所述主机用于通过第一数据传输协议向所述GBP节点发送多个页面。所述GBP节点用于将所述多个页面写入所述GBP节点的缓存队列。所述多个页面各自包含的日志序列号LSN按照从所述缓存队列的头部到尾部的顺序递增
在所述主机发生故障时,所述主机还用于确定GBP起始点、GBP恢复点和GBP结束点。在磁盘恢复点大于或等于所述GBP起始点,且磁盘结束点大于或等于所述GBP结束点时,所述主机还用于回放位于所述GBP恢复点对应的重做日志和所述磁盘结束点对应的重做日志之间的所有重做日志。
所述GBP起始点指示所述GBP节点上存储的所有页面中所包括的最小的LSN。所述GBP恢复点指示所述GBP节点最近一次接收的一批页面中所包括的最小的LSN。所述GBP结束点指示所述GBP节点最近一次接收到的所述一批页面中所包括的最大的LSN。所述磁盘恢复点指示本地磁盘最近一批被写入的多个页面中所包括的最小的LSN,所述磁盘结束点指示所接收到的最后一条重做日志的LSN。
结合第九方面,在第一种可能的实现方式下,位于所述磁盘恢复点对应的重做日志和所述GBP恢复点对应的重做日志之间的所有重做日志没有被回放。
结合第九方面或第九方面的第一种可能的实现方式,在第二种可能的实现方式下,在所述磁盘恢复点大于或等于所述GBP起始点,且所述磁盘结束点大于或等于所述GBP结束点时,所述主机还用于启动后台线程,所述后台线程用于将位于所述GBP节点上的所有页面拉取到页面缓冲区。
结合第九方面、第九方面的第一种可能的实现方式或第九方面的第二种可能的实现方式,在第三种可能的实现方式下,在所述主机执行完回放步骤之后,以及在需要被访问的页面还位于所述GBP节点的页面缓冲区时,所述主机还用于从所述GBP节点的页面缓冲区中读取所述需要被访问的页面。
应当知道的是,第九方面中每一实施例提供的数据库***可以执行第八方面的对应实施例所述的故障修复方法。因此,第九方面的每一实施例的有益效果,请参见第八方面的对应实施例所具有的有益效果,此处不再重复描述。
第十方面,本申请还提供了另一种数据库***的故障修复方法。其中,该故障修复方法包括如下步骤。
在正常工作时,通过第一数据传输协议将多个页面发送给GBP节点。
在发生故障时,确定GBP起始点、GBP恢复点和GBP结束点。
在磁盘恢复点大于或等于所述GBP起始点,且磁盘结束点大于或等于所述GBP结束点时,回放位于所述GBP恢复点对应的重做日志和所述磁盘结束点对应的重做日志之间的所有重做日志。
值得注意的是,所述多个页面被写入所述GBP节点的缓存队列,所述多个页面对应的日志序列号LSN按照从所述缓存队列的头部到尾部的顺序递增。
需要解释的是,所述GBP起始点指示所述GBP节点上存储的所有页面中所包括的最小的LSN。所述GBP恢复点指示所述GBP节点最近一次接收的一批页面中所包括的最小的LSN。所述GBP结束点指示所述GBP节点最近一次接收到的所述一批页面中所包括的最大的LSN。所述磁盘恢复点指示本地磁盘最近一批被写入的多个页面中所包括的最小的LSN。所述磁盘结束点指示所接收到的最后一条重做日志的LSN。
结合第十方面,在第一种可能的实现方式下,位于所述磁盘恢复点对应的重做日志和所述GBP恢复点对应的重做日志之间的所有重做日志没有被回放。
容易知道,在本实施例中,该主机跳过位于该磁盘恢复点所对应的重做日志和该GBP恢复点所对应的重做日志之间的所有重做日志,回放位于该GBP恢复点所对应的重做日志和该磁盘结束点所对应的重做日志之间的所有重做日志。换句话说,在本实施例中,该主机仅回放部分尚未回放完的日志而非全部,因此该数据库***的故障修复效率会被提升。
结合第十方面或第十方面的第一种可能的实现方式,在第十种可能的实现方式下,在所述磁盘恢复点大于或等于所述GBP起始点,且所述磁盘结束点大于或等于所述GBP结束点时,所述故障修复方法还包括:启动后台线程,所述后台线程用于将位于所述GBP节点上的所有页面拉取到页面缓冲区。
可选的,所述后台线程用于通过所述第一数据传输协议将位于所述GBP节点上的所有页面拉取到页面缓冲区。
可选的,该后台线程从所述GBP节点拉取页面到所述主机的页面缓冲区和所述回放步骤的执行可以并行做,从而可以节省时间,提高故障修复的效率。
需要说明的是,在主机在将所述GBP节点上存储的所有页面拉取到所述主机的页面缓冲区后,所述主机还会将拉取到所述主机的页面缓冲区的页面与自己维护的页面进行比较,保留新的页面并丢弃旧的页面。
结合第十方面、第十方面的第一种可能的实现方式或第十方面的第二种可能的实现方式,在第三种可能的实现方式下,在执行完回放步骤之后,以及在需要被访问的页面还位于所述GBP节点的页面缓冲区时,所述故障修复方法还包括:从所述GBP节点的页面缓冲区中读取所述需要被访问的页面。
结合第十方面或第十方面的第一种至第三种可能的实现方式中任一种实现方式,在第四种可能的实现方式下,在所述主机发生故障之后,以及在执行所述回放步骤之前,所述故障修复方法还包括:从本地获取所述磁盘恢复点和所述磁盘结束点。
结合第十方面或第十方面的第一种至第四种可能的实现方式中任一种实现方式,在第五种可能的实现方式下,所述主机将多个页面发送给所述GBP节点,具体包括:所述主机启动页面发送线程,所述页面发送线程使用第一数据传输协议按照从发送队列的头部到尾部的顺序,将位于所述发送队列的多个页面成批地发送给所述GBP节点,从所述发送队列的头部到尾部,位于所述发送队列的多个页面所对应的LSN是递增的。
值得注意的是,第十方面所述的故障修复方法的执行主体是第八方面所述的故障修复方法中的主机。第十方面的每一实施例均是从主机的角度描述的。由于第十方面所述的故障修复方法与第八方面所述的故障修复方法有很多相同或相似之处,因此关于第十方面的每一实施例的有益效果,均请参见第八方面的对应实施例所具有的有益效果,此处不再赘述。
第十一方面,本申请提供另一种计算设备。该计算设备至少包括传输单元、确定单元和回放单元。
所述传输单元,用于通过第一数据传输协议将多个页面发送给GBP节点。
在发生故障时,所述确定单元用于确定GBP起始点、GBP恢复点和GBP结束点。
在磁盘恢复点大于或等于所述GBP起始点,且磁盘结束点大于或等于所述GBP结束点时,所述回放单元用于回放位于所述GBP恢复点对应的重做日志和所述磁盘结束点对应的重做日志之间的所有重做日志。
值得注意的是,所述多个页面被写入所述GBP节点的缓存队列,所述多个页面对应的LSN按照从所述缓存队列的头部到尾部的顺序递增。
需要解释的是,所述GBP起始点指示所述GBP节点上存储的所有页面中所包括的最小的LSN。所述GBP恢复点指示所述GBP节点最近一次接收的一批页面中所包括的最小的LSN。所述GBP结束点指示所述GBP节点最近一次接收到的所述一批页面中所包括的最大的LSN。所述磁盘恢复点指示本地磁盘最近一批被写入的多个页面中所包括的最小的LSN。所述磁盘结束点指示所接收到的最后一条重做日志的LSN。
结合第十一方面,在第一种可能的实现方式下,位于所述磁盘恢复点对应的重做日志和所述GBP恢复点对应的重做日志之间的所有重做日志没有被回放。
结合第十一方面或第十一方面的第一种可能的实现方式,在第二种可能的实现方式下,该计算设备还包括启动单元。在所述磁盘恢复点大于或等于所述GBP起始点,且所述磁盘结束点大于或等于所述GBP结束点时,所述启动单元用于启动后台线程,所述后台线程用于将位于所述GBP节点上的所有页面拉取到页面缓冲区。
可选的,所述所述后台线程通过所述第一数据传输协议将位于所述GBP节点上的所有页面拉取到页面缓冲区。
结合第十一方面、第十一方面的第一种可能的实现方式或第十一方面的第二种可能的实现方式,在第三种可能的实现方式下,该计算设备还包括读取单元。在所述回放步骤执行完之后,以及在需要被访问的页面还位于所述GBP节点中时,所述读取单元用于从所述GBP节点中读取所述需要被访问的页面。
应当知道的是,第十一方面中每一实施例提供的计算设备可以执行第十方面的对应实施例所述的故障修复方法,且可以实现如第八方面所述的数据库***中主机的功能。如前所述,第十方面的每一实施例的有益效果,均可以参见第八方面的对应实施例所具有的有益效果。因此,第十一方面的每一实施例的有益效果,也请参见第八方面的对应实施例所具有的有益效果。
第十二方面,本申请提供了另一种计算设备,该计算设备至少包括存储器和处理器。其中,所述存储器用于存储GBP起始点、GBP恢复点、GBP结束点、磁盘恢复点和磁盘结束点。
在正常工作时,所述处理器用于通过第一数据传输协议将多个页面发送给GBP节点。在发生故障时,所述处理器用于确定GBP起始点、GBP恢复点和GBP结束点。
在磁盘恢复点大于或等于所述GBP起始点,且磁盘结束点大于或等于所述GBP结束点时,所述处理器用于回放位于所述GBP恢复点对应的重做日志和所述磁盘结束点对应的重做日志之间的所有重做日志。
值得注意的是,所述多个页面被写入所述GBP节点的缓存队列,所述多个页面对应的LSN按照从所述缓存队列的头部到尾部的顺序递增。
需要解释的是,所述GBP起始点指示所述GBP节点上存储的所有页面中所包括的最小的LSN。所述GBP恢复点指示所述GBP节点最近一次接收的一批页面中所包括的最小的LSN。所述GBP结束点指示所述GBP节点最近一次接收到的所述一批页面中所包括的最大的LSN。所述磁盘恢复点指示本地磁盘最近一批被写入的多个页面中所包括的最小的LSN。所述磁盘结束点指示所接收到的最后一条重做日志的LSN。
结合第十二方面,在第一种可能的实现方式下,位于所述磁盘恢复点对应的重做日志和所述GBP恢复点对应的重做日志之间的所有重做日志没有被回放。
结合第十二方面或第十二方面的第一种可能的实现方式,在第二种可能的实现方式下,在所述磁盘恢复点大于或等于所述GBP起始点,且所述磁盘结束点大于或等于所述GBP结束点时,所述处理器还用于启动后台线程,所述后台线程用于将位于所述GBP节点上的所有页面拉取到页面缓冲区。
可选的,所述后台线程通过所述第一数据传输协议将位于所述GBP节点上的所有页面拉取到页面缓冲区。
结合第十二方面、第十二方面的第一种可能的实现方式或第十二方面的第二种可能的实现方式,在第三种可能的实现方式下,在所述回放步骤执行完之后,以及在需要被访问的页面还位于所述GBP节点中时,所述处理器还用于从所述GBP节点中读取所述需要被访问的页面。
应当知道的是,第十二方面中每一实施例提供的计算设备可以执行第十方面的对应实施例所述的故障修复方法,且可以实现如第八方面所述的数据库***中主机的功能。如前所述,第十方面的每一实施例的有益效果,均可以参见第八方面的对应实施例所具有的有益效果。因此,第十二方面的每一实施例的有益效果,也请参见第八方面的对应实施例所具有的有益效果。
第十三方面,本申请提供了另一种数据备份方法。该数据备份方法包括如下步骤。
通过RDMA协议接收主机发送的多个页面。
将所述多个页面写入缓存队列中,所述多个页面对应的LSN按照从所述缓存队列的头部到尾部的顺序递增。
根据所述多个页面中每个页面包含的LSN,维护GBP起始点、GBP恢复点和GBP结束点,以便在所述主机发生故障的时候,能够根据所述GBP起始点、所述GBP恢复点和所述GBP结束点进行故障修复。
其中,所述GBP起始点指示内存中存储的所有页面中所包括的最小的LSN。所述GBP恢复点指示最近一次接收到的一批页面中所包括的最小的LSN。所述GBP结束点指示最近一次接收到的一批页面中所包括的最大的LSN。
需要说明的是,本实施例所述的数据备份方法的执行主体是第九方面所述的数据库***中的GBP节点。在本实施例中,由于是通过RDMA协议接收主机发送的被修改页面的,因此可以认为主机几乎将全部的被修改页面发送给了GBP节点,这样在主机发生故障时,就不需要通过回放所有的剩余重做日志得到对应的页面了,因为大部分重做日志对应的页面在所述GBP节点中已经存在。因此,采用本实施例提供的数据备份方法能够提高故障修复效率。
结合第十三方面,在第一种可能的实现方式下,所述维护GBP起始点,则所述数据备份方法还包括:在接收到页面缓冲区内不存在的新页面且该页面缓冲区已满时,将位于所述缓存队列头部的页面淘汰掉,将所述新页面放入所述缓存队列的尾部,并将GBP起始点更新为新的位于所述缓存队列头部的页面对应的LSN。
在本实施例中,在将新页面写入所述GBP节点的缓存队列之后,更新所述GBP起始点,可以保证所述GBP起始点被及时更新。
结合第十三方面,在第二种可能的实现方式下,所述维护GBP恢复点和GBP结束点,则所述数据备份方法还包括:在接收到新页面后,根据所述新页面所对应的LSN,更新所述GBP恢复点和所述GBP结束点。
在本实施例中,在接收到新页面并将所述新页面写入所述GBP节点的缓存队列之后,更新所述GBP恢复点和所述GBP结束点,可以保证所述GBP恢复点和所述GBP结束点被及时更新。
结合第十三方面,在第三种可能的实现方式下,所述数据备份方法还包括:在接收到页面缓冲区内不存在的新的页面时,则将所述新的页面放入所述缓存队列的尾部。或,所述数据备份方法还包括:在接收到的页面缓冲区已经存在的新的页面时,则使用所述新的页面对已经存在的对应页面进行更新,并将更新后的页面放入所述缓存队列的尾部。
根据本实施例可知,页面在GBP节点的缓存队列中是按照顺序放入的,因此,位于所述GBP恢复点对应的重做日志和所述GBP结束点对应的重做日志之间的所有重做日志是位于主机发送给备机的所有重做日志中最后的一段重做日志。
结合第十三方面或第十三方面的第一种至第三种可能的实现方式中任一种实现方式,在第四种可能的实现方式下,所述数据备份方法还包括:接收多个重做日志,并通过回放所述多个重做日志,得到与所述多个重做日志中每一重做日志对应的页面。
可选的,在得到与所述多个重做日志中每一重做日志对应的页面之后,还将得到的页面成批地刷到本地磁盘。
可知,在本实施例中,该GBP节点还可以实现备机的功能。
第十四方面,本申请提供了另一种计算设备,该计算设备至少包括接收单元、写入单元和维护单元。
所述接收单元用于通过RDMA协议接收多个页面。
所述写入单元用于将所述多个页面写入缓存队列。所述多个页面对应的LSN按照从所述缓存队列的头部到尾部的顺序递增。
所述维护单元用于根据所述多个页面中每个页面包含的LSN,维护GBP起始点、GBP恢复点和GBP结束点,以便在所述主机发生故障的时候,能够根据所述GBP起始点、所述GBP恢复点和所述GBP结束点进行故障修复。
其中,所述GBP起始点指示内存中存储的所有页面中所包括的最小的LSN。所述GBP恢复点指示最近一次接收到的一批页面中所包括的最小的LSN。所述GBP结束点指示最近一次接收到的一批页面中所包括的最大的LSN。
结合第十四方面,在第一种可能的实现方式下,在接收到页面缓冲区内不存在的新的页面且该页面缓冲区已满时,所述维护单元还用于将位于所述缓存队列头部的页面淘汰掉,并将GBP起始点更新为新的位于所述缓存队列头部的页面对应的LSN。
结合第十四方面,在第二种可能的实现方式下,在接收到新的页面时,所述维护单元还用于根据所述新的页面对应的LSN更新所述GBP恢复点和所述GBP结束点。
结合第十四方面,在第三种可能的实现方式下,在接收到页面缓冲区内不存在的新的页面时,所述写入单元还用于将所述新的页面放入所述缓存队列的尾部。在接收到的页面缓冲区已经存在的新的页面时,所述写入单元还用于使用所述新的页面对已经存在的对应页面进行更新,并将更新后的页面放入所述缓存队列的尾部。
结合第十四方面或第十四方面的第一种至第三种可能的实现方式中任一种实现方式,在第四种可能的实现方式下,该计算设备还包括回放单元。值得注意的是,所述接收单元还用于接收多个重做日志。则相应的,所述回放单元还用回放所述多个重做日志,得到与所述多个重做日志中每一重做日志对应的页面。
应当知道的是,第十四方面中每一实施例提供的计算设备可以执行第十三方面的对应实施例所述的数据备份方法。因此,第十四方面的每一实施例的有益效果,可以参见第十三方面的对应实施例所具有的有益效果。
第十五方面,本申请提供了另一种计算设备,该计算设备至少包括I/O接口和处理器。所述I/O接口用于通过RDMA协议接收多个页面。
所述处理器用于将所述多个页面依次写入缓存队列中,根据所述多个页面中每个页面包含的LSN,维护GBP起始点、GBP恢复点和GBP结束点,以便在所述主机发生故障的时候,能够根据所述GBP起始点、所述GBP恢复点和所述GBP结束点进行故障修复。
值得注意的是,所述多个页面对应的LSN按照从所述缓存队列的头部到尾部的顺序递增,
需要说明的是,所述GBP起始点指示内存中存储的所有页面中所包括的最小的LSN。所述GBP恢复点指示最近一次接收到的一批页面中所包括的最小的LSN。所述GBP结束点指示最近一次接收到的一批页面中所包括的最大的LSN。
结合第十五方面,在第一种可能的实现方式下,在接收到页面缓冲区内不存在的新的页面且该页面缓冲区已满时,所述处理器还用于将位于所述缓存队列头部的页面淘汰掉,并将GBP起始点更新为新的位于所述缓存队列头部的页面对应的LSN。
结合第十五方面,在第二种可能的实现方式下,在接收到新的页面时,所述处理器还用于根据所述新的页面对应的LSN更新所述GBP恢复点和所述GBP结束点。
结合第十五方面,在第三种可能的实现方式下,在接收到页面缓冲区内不存在的新的页面时,所述处理器还用于将所述新的页面放入所述缓存队列的尾部。在接收到的页面缓冲区已经存在的新的页面时,所述处理器还用于使用所述新的页面对已经存在的对应页面进行更新,并将更新后的页面放入所述缓存队列的尾部。
结合第十五方面或第十五方面的第一种至第三种可能的实现方式中任一种实现方式,在第四种可能的实现方式下,值得注意的是,所述I/O接口还用于接收多个重做日志。相应的,所述处理器还用回放所述多个重做日志,得到与所述多个重做日志中每一重做日志对应的页面,并将得到的页面成批地刷到本地磁盘。
应当知道的是,第十四方面中每一实施例提供的计算设备可以执行第十三方面的对应实施例所述的数据备份方法。因此,第十四方面的每一实施例的有益效果,可以参见第十三方面的对应实施例所具有的有益效果。
附图说明
图1是一种数据库***的架构图。
图2是本申请提供的一个数据库***的架构图。
图3示出了checkpoint机制的示意图。
图4是本申请提供的一种数据库***的故障修复方法的流程图。
图5是主机向GBP节点发送页面时的结构示意图。
图6是GBP节点内的一个缓存队列的示意图。
图7A-7C是主机向GBP节点发送页面时GBP起始点、GBP恢复点和GBP结束点的变化过程图。
图8是从GBP节点拉取页面到备机的结构图。
图9是本申请提供的数据库***的故障修复方法中重做日志的分布结构图。
图10是本申请提供的另一种数据库***的故障修复方法的流程图。
图11A是本申请提供的一种计算设备的结构图。
图11B是本申请提供的另一种计算设备的结构图。
图12是本申请提供的另一种计算设备的结构图。
图13是本申请提供的另一种计算设备的结构图。
图14是本申请提供的另一种数据库***的架构图。
图15是本申请提供的另一种数据库***的故障修复方法的流程图。
图16是本申请提供的另一种数据库***的故障修复方法的流程图。
图17是本申请提供的另一种计算设备的结构图。
图18是本申请提供的另一种计算设备的结构图。
图19是本申请提供的一种数据备份方法的流程图。
图20是本申请提供的另一种计算设备的结构图。
图21是本申请提供的另一种计算设备的结构图。
具体实施方式
在对本申请所述的实施例进行描述之前,首先对本申请文件中将要出现的部分名词进行解释。
WAL协议:又称为预写重做日志,为了保证事务修改的持久性和一致性,先将重做日志顺序落盘以保证修改页面的持久性,重做日志落盘后即使主机宕机,备机也能通过回放重做日志将备机恢复到与宕机前的主机一致的状态。
脏页面:位于数据缓冲区(data buffer)的页面,如果从磁盘读上来以后被修改,则这样的页面被称为脏页面。脏页面是数据缓冲区内的概念,在本申请中,被修改的页面位于主机的数据缓冲区时被称为脏页面,而从所述主机被写入到全局资源缓冲池(globalbuffer pool,GBP)节点的页面被称为是被修改页面。
复原时间目标(recover time objective,RTO):是指客户容许服务中断的时间长度,比如说灾难发生后半天内便需要恢复服务,则RTO就是十二小时。
日志序列号LSN:每一条日志具有唯一的一个LSN,或者说,日志和LSN是一对一的,因此根据LSN能够唯一地确定出一条日志。需要说明的是,由于每一条日志会对应一个被修改页面(也即主机发送给GBP节点的页面,后面简称为页面),所以每一页面也只包括一个LSN,且页面和LSN也是一对一的关系,所以本申请中提及的“页面对应的LSN”或“页面包含的LSN”或“页面具有的LSN”均是相同的含义。
磁盘恢复点:本地磁盘内最近一批被写入的数据页所包含的最小的日志序列号LSN。
磁盘结束点:本地磁盘上最后一条重做日志的LSN。
本申请的一个实施例提供了第一种数据库***的故障修复方法(简称为“第一种故障修复方法”)。具体的,该第一种故障修复方法可以应用于如图2所示的数据库***中。如图2所示,该数据库***包括主机(master)210、GBP节点220和备机(standby)230。其中,主机210和GBP节点220之间通过第一数据传输协议进行数据传输。
需要说明的是,该第一数据传输协议是低时延且高吞吐的数据传输协议。可选的,该第一数据传输协议为远程直接内存访问(remote direct memory access,RDMA)协议。在这种情况下,该主机210具有支持RDMA协议的万兆以太网卡或者无限带宽(infiniBand)网卡。
RDMA协议具有低时延(例如时延小于或等于10μs)和不需要CPU直接参与的特点。在本实施例中,主机210中被修改的页面,可以基于RDMA协议被远程写入GBP节点220的页面缓冲区(或内存)中。
需要说明的是,该被修改的页面是以远程原子写入的方式被写入到该GBP节点220的页面缓冲区中的。也就是说,该被修改的页面是以原子为单位被写入该GBP节点220的。一个原子通常包括多个被修改的页面,因此,在多个被修改的页面凑够一个原子后,才会被写入该GBP节点220的页面缓冲区。
另外,由于源于主机210且被写入GBP节点220的页面一定是该主机210中被修改的页面,所以为了简化表述,在本申请的很多地方,将这种页面直接简称为页面。
可选的,该第一数据传输协议还可以均为40G以太网(40GE)。
在对本实施例进行描述之前,首先需要明确什么是检查点(checkpoint)。检查点是一个数据库事件,它存在的根本意义在于减少崩溃恢复(crash recovery)时间。数据库本身都具有检查点(checkpoint)机制,基于checkpoint机制,通过一个或多个后台线程,持续不断地将脏页面从内存刷到本地磁盘,受本地磁盘本身速度的限制,脏页面从内存刷到本地磁盘的速度会比较慢。落盘的最后一个页面对应于硬盘恢复点,由于脏页面落盘的速度比较慢,所以导致磁盘恢复点对应的重做日志和磁盘结束点对应的重做日志之间存在大量的重做日志,且这批重做日志对应的脏页面都没有落盘。在主机发生故障需要恢复的时候,由于大量的重做日志对应的脏页面没有落盘,因此该大量的重做日志均需要回放。容易知道,检查点的主要用处是通过不断的把脏页面刷到本地磁盘,推进磁盘恢复点,来达到在数据库崩溃且需要恢复时,减少需要恢复的重做日志量,降低RTO的目的。
请参见附图3,它示出了checkpoint机制在数据库发生故障需要修复时所起的作用。具体的,如图3所示,页面P1由V0版本依次被修改为V1、V2和V3版本,从V0修改到V1,对应生成的重做日志是log 1;从V1修改到V2,对应生成的重做日志是log 2;从V2修改到V3,对应生成的重做日志是log 3。根据WAL协议,在每一修改事务被提交(commit)时,主机只会将对应的重做日志刷到本地磁盘,而页面刷盘则是在后台完成的。假设P1的V0版本刷盘之后,节点发生故障需要恢复,如图3所示,那么磁盘恢复点对应的重做日志就是log 0,于是需要从log 0开始依次回放发生在log 0之后的全部重做日志,假设需要依次回放的重做日志为log1、log2和log3,则在需要回放的全部重做日志回放完成之后,P1的版本将会被恢复到V3,也就是将页面恢复到故障之前的状态。
可选的,在本实施例中,主机210和备机230之间是一种无共享(shared nothing)架构。无共享架构是一种分布式计算架构,这种架构中的每一个节点(node)都是独立,也即每个节点都有自己的CPU/内存/硬盘等,不存在共享资源。
值得注意的是,在本实施例涉及的数据库***中,能够实现该数据库***快速恢复的关键装置是GBP节点220。该GBP节点可以是安装有能够实现全局页面缓存功能的应用程序的设备。为了表述方便,下文将“能够实现全局页面缓存功能的应用程序”简称为“目标应用”。在本实施例中,该目标应用可以被部署在除该主机210和该备机230之外的其他任一设备上,则该部署有目标应用的其他任一设备就是该GBP节点220。值得注意的是,在本实施例中,还需要根据部署有该目标应用的设备的位置,配置所述主机210将被修改页面写入何处,以及所述备机230将从何处获取页面。
在本实施例中,主机210和备机230建立关系后,都会分别根据各自的配置信息连接到GBP节点上。其中,主机210和GBP节点220之间通过第一数据传输协议连通。在主机210正常工作的过程中,备机230与主机210之间以及GBP节点220与主机210之间均需要保持心跳。在主机210发生故障(或崩溃)导致该数据库***故障时,主机210和备机230之间将会进行故障切换,在该故障切换之后,备机230将被提升为新的主机,从而实现该数据库***的故障修复。
下面将详细描述本实施例所述的第一种故障修复方法。请参见附图4,它示出了该第一种故障修复方法的流程示意图。具体的,该第一种故障修复方法包括下述步骤。
S101、在所述主机正常工作时,所述主机使用第一数据传输协议将多个页面发送给所述GBP节点。
在本实施例中,在所述主机正常工作期间,所述主机还将所有修改事务对应的重做日志发送给所述备机。对应的,所述备机通过回放这些重做日志得到对应的页面,并将这些页面成批地刷到所述备机的本地磁盘。
需要说明的是,所述重做日志也是成批地从所述主机传送到所述备机的,例如一批重做日志可以为8MB。
在本实施例所述的数据库***包括多个备机时,通常所述主机需要将重做日志发送给大于N/2(向上取整)个备机,N为大于1的整数。
作为本实施例的一种具体实现方式,所述主机启动页面发送线程,且所述页面发送线程使用所述第一数据传输协议将位于发送队列内的多个页面,按照从头部到尾部的顺序,成批地发送给所述GBP节点。其中,所述发送队列位于所述主机内,且从所述发送队列的头部到尾部,位于所述发送队列的多个页面所对应的LSN是递增的。
进一步地,所述主机可以启动多个页面发送线程,且所述多个页面发送线程与所述主机包括多个发送队列是一对一的。
值得注意的是,在所述主机包括多个发送队列时,被修改页面将会被放入哪一个发送队列可以根据哈希算法确定。而被放入同一发送队列(例如发送队列Q)的多个页面,可以根据该多个页面被修改的先后顺序,将该多个页面放入发送队列Q中。具体的,在同一发送队列中,从头部到尾部,多个页面的LSN递增。或者说,在同一发送队列中,先被修改的页面位于后被修改的页面的前面。应当知道的是,该多个页面各自的LSN也是根据该多个页面被修改的先后顺序确定的,其中,先被修改的页面的LSN小于后被修改的页面的LSN。
S102、所述GBP节点将所述多个页面写入到所述GBP节点的缓存队列。
其中,所述多个页面各自对应的LSN按照从所述缓存队列的头部到尾部的顺序递增。
其中,所述GBP节点的页面缓冲区中包括一个或多个缓存队列。每一缓存队列内均具有多个页面,并且位于同一缓存队列内的多个页面,按照写入该缓存队列的顺序(或者,按照从该缓存队列的头部到尾部的顺序),该多个页面各自包括的LSN越来越大。
可选的,所述GBP节点启动页面接收线程,所述页面接收线程成批地接收所述多个页面,并将所述多个页面写入所述GBP节点的缓存队列。
进一步地,所述GBP节点可以启动多个页面接收线程,且所述多个页面接收线程与所述GBP节点包括的多个缓存队列是一对一的。
再进一步地,所述主机启动的多个页面发送线程与所述GBP节点启动的多个页面接收线程是一对一的。在这种情况下,容易知道,位于所述主机上的发送队列和位于所述GBP节点上的缓存队列也是一对一的,位于每个发送队列内的页面,在被对应的页面发送线程发送以及被对应的页面接收线程接收后,将被存入对应的缓存队列中。如图5所示,主机200中具有发送队列1-3,还启动了页面发送线程1-3,其中,页面发送线程1用于发送位于发送队列1中的页面,页面发送线程2用于发送位于发送队列2中的页面,页面发送线程3用于发送位于发送队列3中的页面。进一步地,如图5所示,GBP节点300中启动了页面接收线程1-3,另外还具有缓存队列1-3,其中,页面接收线程1接收的页面将放入缓存队列1中,页面接收线程2接收的页面将放入缓存队列2中,页面接收线程3接收的页面将放入缓存队列3中。则在图5对应的实施例中,位于发送队列1内的页面,被页面发送线程1发送给页面接收线程1之后,将被放入缓存队列1中。位于发送队列2内的页面,被页面发送线程2发送给页面接收线程2之后,将被放入缓存队列2中。或位于发送队列3内的页面,被页面发送线程3发送给页面接收线程3之后,将被放入缓存队列3中。
在本实施例中,由于所述主机通过第一数据传输协议将被修改页面写入所述GBP节点的速率,要远大于,所述备机通过回放重做日志生成对应的被修改页面并将被修改页面刷入本地磁盘的速率。因此所述GBP节点内存储的被修改页面的数量要远大于所述备机的本地磁盘中被刷入的被修改页面,从而在所述主机发生故障且需要修复所述数据库***时,对于第一部分页面,可以直接从所述GBP节点拉取到所述备机的页面缓冲区,而所述备机仅需要回放对应于第二部分页面的重做日志并得到该第二部分页面即可。因此,采用本实施例,可以提高该数据库***的修复效率。
需要注意的是,为了表述的更加清楚简洁,在本申请中将位于包含所述磁盘恢复点的页面和包含所述磁盘结束点的页面之间的全部页面分为第一部分页面和第二部分页面。具体的,第一部分页面是指位于包含所述磁盘恢复点的页面和包含所述GBP恢复点的页面之间的全部页面,或者,是指位于所述磁盘恢复点对应的重做日志和所述GBP恢复点对应的重做日志之间的所有重做日志对应的被修改页面。第二部分页面是指位于包含所述GBP恢复点的页面和包含所述磁盘结束点的页面之间的全部页面,或者,是指位于所述GBP恢复点对应的重做日志和所述磁盘结束点对应的重做日志之间的所有重做日志对应的被修改页面。
其中,所述第一部分页面可以包括包含所述磁盘恢复点的页面,也可以不包括包含所述磁盘恢复点的页面。所述第一部分页面可以包括包含所述GBP恢复点的页面,也可以不包括包含所述GBP恢复点的页面。
在所述第一部分页面包括包含所述GBP恢复点的页面时,所述第二部分页面可以不包括包含所述GBP恢复点的页面,自然,也可以包括包含所述GBP恢复点的页面。在所述第一部分页面不包括包含所述GBP恢复点的页面时,所述第二部分页面包括包含所述GBP恢复点的页面。应当知道的是,所述第二部分页面是包括包含所述磁盘结束点的页面的。
S103、在所述主机发生故障时,所述备机确定GBP起始点、GBP恢复点和GBP结束点。
其中,所述GBP起始点指示所述GBP节点上存储的所有页面中所包括的最小的LSN。所述GBP恢复点指示所述GBP节点最近一次接收到的一批页面中所包括的最小的LSN。所述GBP结束点指示所述GBP节点最近一次接收到的所述一批页面中所包括的最大的LSN。
可选的,所述GBP节点本身维护了所述GBP起始点、所述GBP恢复点和所述GBP结束点,且所述备机是从所述GBP节点中获取这三个点的。
具体的,所述GBP节点在接收到新的页面后,会更新所述GBP恢复点和所述GBP结束点。
作为本实施例的一种具体实现方式,所述GBP节点在接收到新页面,且所述新页面在所述GBP节点的页面缓冲区中不存在,则将所述新页面放入所述缓存队列的尾部。
作为本实施例的另一种具体实现方式,所述GBP节点在接收到新页面,但所述新页面在所述GBP节点的页面缓冲区已经存在,则所述GBP节点会根据接收到的所述新页面对已经存在的对应页面进行更新,并将更新后的所述新页面放在所述缓存队列的尾部,或者说,所述GBP节点删除已经存在的对应页面,并将所述新页面放在所述缓存队列的尾部。
需要解释的是,所谓“新页面”是指所述GBP节点当前接收到的页面。例如,所述GBP节点当前接收到的页面是页面M,则页面M就是“新页面”。相应的,如果GBP节点的页面缓冲区中在接收页面M之前不存在该页面M,则将该页面M放入其中一个缓存队列的尾部。反之,如果GBP节点的页面缓冲区中在接收页面M之前已经存在页面M(该页面M位于缓存队列R中),不过该已经存在的页面M包含的LSN为K,当前接收的页面M包含的LSN为T。其中,K和T均为大于或等于0的整数,且T大于K。则使用当前接收的页面M对已经存在的页面M进行更新,并将更新后的页面M放入该缓存队列R的尾部。或者,则丢弃到已经存在的页面M,并将当前接收的页面M放入该缓存队列R的尾部。
应当知道的是,在该GBP节点的页面缓冲区中在接收页面M之前不存在页面M时,该页面M将被放入哪一个缓存队列,可以通过哈希算法确定,也可以通过其他方法确定。
在本实施例中,判断(或确定)所述新页面在所述GBP节点的页面缓冲区中是否已经存在可以是由所述GBP节点本身执行的,也可以是由所述主机执行的。
值得注意的是,在本实施例中,在所述GBP节点接收到所述GBP节点的页面缓冲区中不存在的新页面,所述新页面在所述GBP节点的页面缓冲区中不存在,且所述GBP节点的页面缓冲区已满时,所述GBP节点将位于所述缓存队列头部的页面淘汰掉,并将所述GBP起始点更新为所述缓存队列的新的头部页面对应的LSN。例如,所述GBP节点当前接收的页面为页面Y,且该页面Y在所述GBP节点的页面缓冲区中不存在,则所述GBP节点会淘汰掉位于所述缓存队列头部的页面,并将所述页面Y放入所述缓存队列的尾部,同时所述GBP起始点将会被更新(或推进)为所述缓存队列的新的头部页面对应的LSN。
需要说明的是,在所述备机从所述GBP节点中获取所述GBP起始点、所述GBP恢复点和所述GBP结束点时,所述备机获取的是最近更新后的所述GBP起始点、所述GBP恢复点和所述GBP结束点。
通常所述GBP节点是成批(bitch)接收来自所述主机的页面的,例如,一批页面可以最多包括100个页面,最少包括1个页面。例如,所述主机的后台线程是每5ms发送一批页面到所述GBP节点的,则如果所述主机内有M(M为大于100的整数)个页面待发送,则所述主机的后台线程会连续发送M/100(向上取整)次,如果所述主机内只有1个页面,则所述主机的后台线程就只发1个页面给所述GBP节点。
值得注意的是,所述GBP节点最近一次接收到的一批页面可以包括一个或多个页面。自然,在所述GBP节点最近一次接收到的一批页面包括多个页面时,该多个页面的数量不大于一次最多允许发送的页面的数量(例如100个页面)。
结合上述描述,容易知道,所述GBP节点在每接收到一批来自所述主机的页面后,是基于滑动窗口的缓存淘汰算法管理该批页面的,或者更准确地说,是基于滑动窗口的缓存淘汰算法管理位于所述GBP节点的缓存队列中的所有页面的。具体的,假设所述GBP节点的缓存队列是一个的窗口(如图6所示,它示出的是所述GBP节点内的一个缓存队列的示意图,例如为缓存队列1),则在所述GBP节点接收到新页面需要被写入到缓存队列1且缓存队列1没满时,需要维护的是缓存队列1的右边界;而在所述GBP节点接收到新页面需要被写入到缓存队列1且缓存队列1已满时,由于需要将位于缓存队列1头部的页面淘汰掉,因此需要维护的是缓存队列1的左边界。
请参见图7A至图7C,它们示出了所述GBP节点每接收一批页面后,所述GBP节点如何基于滑动窗口的缓存淘汰算法管理所述GBP节点的缓存队列中存入的页面,以及如何维护所述GBP起始点、所述GBP恢复点以及所述GBP。
值得注意的是,在图7A至图7C所示的实施例中,所述主机每批发送给所述GBP节点的页面最多不超多3个(也即batch=3)。
如图7A所示,发送队列按照从头到尾的顺序依次包括页面1(P1)、页面2(P2)、页面3(P3)、和页面4(P4)四个被修改页面,由于batch=3,因此本次(假设本次为第一次)发送队列中的P1、P2和P3将会从主机传送到GBP节点中,假设P1的LSN为1,P2的LSN为2,P3的LSN为3。
在第一次发送完之后,GBP起始点和GBP恢复点均为1,GBP结束点为3。
如图7B所示,发送队列按照从头到尾的顺序依次包括页面4(P4)、页面5(P5)、P2、P1和页面6(P6)五个被修改页面,由于batch=3,因此本次(假设本次为第二次)发送队列中的P4、P5和P2将会从主机传送到GBP节点中,假设P4的LSN为4,P5的LSN为5,P2的LSN为6。容易知道的是,在第一次发送时,P2的LSN为2,但是在第二次发送时,P2的LSN被刷新为6。之所以为出现这种情况,是因为P2又被修改了,因此导致P2对应的LSN变大了。
在第二次发送完之后,GBP起始点为1,GBP结束点为6,GBP恢复点为4.
如图7C所示,发送队列按照从头到尾的顺序依次包括页面1和页面6,由于batch=3,因此本次(假设本次为第三次)发送队列中的页面1和页面6将会从主机传送到GBP节点中,假设页面1的LSN为7,页面6的LSN为8。容易知道的是,在第一次发送时,页面1的LSN为1,但是在第三次发送时,页面1的LSN被刷新为7,之所以为出现这种情况,是因为页面1又被修改了,因此导致页面1对应的LSN变大了。
在第三次发送完之后,GBP起始点为3,GBP结束点为8,GBP恢复点为7。
S105、在磁盘恢复点大于或等于所述GBP起始点,且磁盘结束点大于或等于所述GBP结束点时,所述备机回放位于所述GBP恢复点所对应的重做日志和所述磁盘结束点所对应的重做日志之间的所有重做日志,以使所述备机切换为新的主机,进而实现所述数据库***的故障修复。
其中,所述磁盘恢复点指示所述备机的磁盘中最近一批被写入的多个页面所包含的最小的LSN。所述磁盘结束点指示所述备机所接收的最后一条重做日志的LSN。
在所述磁盘恢复点大于或等于所述GBP起始点,且所述磁盘结束点大于或等于所述GBP结束点时,所述备机还启动后台线程,所述后台线程用于将所述GBP节点上存储的所有页面拉取到所述备机的页面缓冲区。随后,所述备机还将启动后台线程将这些页面从所述备机的页面缓冲区被刷到所述备机的本地磁盘。
值得注意的是,在备机提升为主机之前,并不需要等待位于该GBP节点上的所有页面均被拉取到所述备机的页面缓冲区,页面拉取可以在后台异步完成。
可选的,所述备机启动后台线程几乎与所述备机开始执行回放步骤(S105)同时进行。
另外,步骤S105中提到“新的主机”,这是为了与本实施例中的原主机相区分。应当知道,在执行完所述第一种故障修复方法之后,所述备机(或原备机)被提升(或被切换)成为所述新的主机。
可选的,所述后台线程用于通过第二数据传输协议将所述GBP上存储的所有页面拉取到所述备机的页面缓冲区。
值得注意的是,该第二数据传输协议可以是低时延且高吞吐的数据传输协议。
可选的,第一数据传输协议和第二数据传输协议可以是相同的协议。
可选的,该第二数据传输协议为RDMA协议。在这种情况下,该备机具有支持RDMA协议的万兆以太网卡或者无限带宽(infiniBand)网卡。
可选的,该第二数据传输协议还可以均为40G以太网(40GE)。
由上可知,该第一数据传输协议和该第二数据传输协议可以均为RDMA协议,或均为40GE。该第一数据传输协议和该第二数据传输协议也可以其中一个为RDMA协议,另一个为40GE,例如该第一数据传输协议为RDMA协议,该第二数据传输协议为40GE。
所述备机在将所述GBP节点上存储的所有页面通过第二数据传输协议拉取到所述备机的页面缓冲区后,还会将拉取到页面缓冲区的页面与所述备机自己维护的页面进行比较,丢弃到旧的页面并留下新的页面。如图8所示,如果从GBP节点上拉取的P1的版本是V3,备机自己维护的P1的版本是V2,则抛弃掉V2并保留V3。另外,如图8所示,如果从GBP节点上拉取的P2的版本是V0,备机自己维护的该P2的版本是V1,则抛弃掉V0并保留V1。应当知道的是,在所述备机执行回放步骤(S105)的过程中,通常从所述GBP节点拉取的页面的版本比所述备机自己维护的页面的版本新,而在所述备机执行完回放步骤(S105)之后,则所述备机自己维护的页面的版本要比从所述GBP节点拉取的页面的版本新,或者与从所述GBP节点拉取的页面的版本一样新。
其中,所述备机自己维护的页面的版本,可以是所述备机通过回放重做日志生成的,也可以从所述备机的本地磁盘上直接读取上来的。
应当知道的是,在所述主机发生故障之后,以及在所述备机执行所述回放步骤之前,所述备机还从本地获取所述磁盘恢复点和所述磁盘结束点。自然,获取所述磁盘恢复点和所述磁盘结束点的目的是为了判断步骤S105中限定的条件是否满足。
需要关注的是,在本实施例中,所述备机回放完位于所述GBP恢复点对应的重做日志和所述磁盘恢复点所对应的重做日志之间的所有重做日志之后,所述备机就可以被切换(提升)为所述新的主机,也即,本实施例所述的数据库***的故障修复就完成了。因此,所述备机被切换(提升)为所述新的主机的效率仅与所述备机回放位于所述GBP恢复点对应的重做日志和所述磁盘恢复点所对应的重做日志之间的所有重做日志的速率有关,而与将所述GBP节点上存储的所有页面拉取到所述备机的页面缓冲区的速率无关。因此,将所述GBP节点上存储的所有页面拉取到所述备机的页面缓冲区可以在所述备机的后台异步完成。
值得注意的是,在本实施例中,所述备机仅回放了位于所述GBP恢复点所对应的重做日志和所述磁盘结束点所对应的重做日志之间的所有重做日志,而没有回放位于所述磁盘恢复点所对应的重做日志和所述GBP恢复点所对应的重做日志之间的所有重做日志(如图9所示)。或者说,在本实施例中,所述备机跳过位于所述磁盘恢复点所对应的重做日志和所述GBP恢复点所对应的重做日志之间的所有重做日志,仅回放位于所述GBP恢复点所对应的重做日志和所述磁盘结束点所对应的重做日志之间的所有重做日志。相对于需要回放位于所述磁盘恢复点所对应的重做日志和所述磁盘结束点所对应的重做日志之间的所有重做日志的技术方案来说,本实施例中,由于备机需要回放的重做日志数量比较少,所以采用本实施例,能够提高该备机被切换为新的主机的效率,也即能够提高该数据库***的故障修复效率。
需要关注的是,在本实施例中,在所述主机发生故障后,所述备机不再继续回放剩余的没有回放的重做日志,而是确定所述GBP起始点、所述GBP恢复点、所述GBP结束点、所述磁盘恢复点以及所述磁盘结束点,然后比较所述磁盘恢复点与所述GBP起始点的大小,以及比较所述磁盘结束点和所述GBP结束点的大小,并在所述磁盘恢复点大于或等于所述GBP起始点,以及所述磁盘结束点大于或等于所述GBP结束点时,回放位于所述GBP恢复点对应的重做日志与所述磁盘结束点对应的重做日志之间的所有重做日志,以便实现故障转移,或者实现该数据库***的故障恢复。简单来说,在本实施例中,在该主机发生故障后,对于剩余的没有回放完的所有重做日志,所述备机只回放很小的一部分。因此采用本实施例提供的技术方案能够提高该数据库***恢复的效率。
可选的,在所述备机执行完回放步骤之后,或者在该故障修复方法执行完且所述备机被提升为新的主机之后,如果所述备机上的应用需要访问的页面还位于所述GBP节点的页面缓冲区中,则所述应用从所述GBP节点的页面缓冲区中读取所述需要访问的页面。
应当知道的是,在所述备机被切换成新的主机后,所述新的主机可以提供读写服务。另外,在所述备机被切换成新的主机后,如果还需要做回滚(undo),则所述新的主机会启动后台线程做回滚。由于回滚是在后台做的,因此不会阻塞所述新的主机的其他业务。本申请还提供了一种数据库***。请参见附图2,它为一种数据库***的架构图。该数据库***可以用于执行前述第一种故障修复方法。由于该数据库***在前述实施例中已经有了比较多的描述,因此本实施例仅就前述实施例没有提及的部分进行描述,至于前述实施例中已经描述的部分,由于本实施例以及其他关于数据库***的实施例均可以直接参见前述实施例的相关描述,因此不再赘述。
容易知道,所述数据库***包括主机210、备机230和GBP节点220,且所述主机210与所述GBP节点220之间通过第一数据传输协议通信连接。
在所述主机210正常工作期间,所述主机210用于使用所述第一数据传输协议将多个页面发送给所述GBP节点220。
所述GBP节点220用于将所述多个页面写入到所述GBP节点的缓存队列。需要注意的是,所述多个页面对应的LSN按照从所述缓存队列的头部到尾部的顺序递增。
在所述主机210发生故障时,所述备机230用于确定所述GBP起始点、所述GBP恢复点和所述GBP结束点。
关于所述GBP起始点、所述GBP恢复点和所述GBP结束点的定义,请参考前文的描述。
在所述磁盘恢复点大于或等于所述GBP起始点,且所述磁盘结束点大于或等于所述GBP结束点的情况下,所述备机230还用于回放位于所述GBP恢复点所对应的重做日志和所述磁盘结束点所对应的重做日志之间的所有重做日志。
关于所述磁盘恢复点和所述磁盘结束点的定义,也请参考前文的描述。
作为本申请的一个实施例,在所述数据库***中,所述GBP节点220用于接收新的页面,并根据所述新的页面,更新所述GBP起始点、所述GBP恢复点和所述GBP结束点。
值得注意的是,在所述GBP节点220维护所述GBP起始点、所述GBP恢复点以及所述GBP结束点时,可选的,所述备机230还用于从所述GBP节点获取所述GBP起始点、所述GBP恢复点以及所述GBP结束点。
可选的,在所述GBP节点220接收到新页面,且所述新页面在所述GBP节点的页面缓冲区中不存在时,所述GBP节点220还用于将所述新页面放入所述缓存队列的尾部。
可选的,在所述GBP节点220接收到新页面,且所述新页面在所述GBP节点的页面缓冲区中已经存在时,所述GBP节点220还用于根据接收到的所述新页面对已经存在的对应页面进行更新,并将更新后的所述新页面放在所述缓存队列的尾部。
可选的,在所述GBP节点220接收到新页面,且所述新页面在所述GBP节点的页面缓冲区中已经存在时,所述GBP节点220还用于丢弃已经存在的且与所述新页面对应的页面,并将所述新页面放在所述缓存队列的尾部。
可选的,在所述GBP节点220接收到所述GBP节点的页面缓冲区中不存在的新页面,且所述GBP节点的页面缓冲区已满时,所述GBP节点220还用于将位于所述缓存队列头部的页面淘汰掉,并将所述GBP起始点更新为所述缓存队列的新的头部页面对应的LSN。自然,在位于所述缓存队列头部的页面淘汰掉之后,所述GBP节点220还用于将所述GBP节点的页面缓冲区中不存在的新页面放入所述缓存队列的尾部。
作为本申请的另一个实施例,在所述磁盘恢复点大于或等于所述GBP起始点,且所述磁盘结束点大于或等于所述GBP结束点时,所述备机230还用于启动后台线程,所述后台线程用于将所述GBP节点220上存储的所有页面拉取到所述备机的页面缓冲区。
可选的,所述后台线程用于通过第二数据传输协议将所述GBP节点220上存储的所有页面拉取到所述备机的页面缓冲区。
需要说明的是,所述备机230回放位于所述GBP恢复点所对应的重做日志和所述磁盘结束点所对应的重做日志之间的所有重做日志与所述备机230将所述GBP节点220上存储的所有页面拉取到所述备机的页面缓冲区可以异步完成。
值得关注的是,在所述主机210发生故障之后,以及在所述备机230回放所述重做日志之前,所述备机230还用于确定,或从本地获取,所述磁盘恢复点和所述磁盘结束点。
应当知道的是,在所述主机210正常工作期间,所述主机210还用于将重做日志发送给所述备机230。对应地,所述备机230还用于回放所述重做日志得到对应的页面。
可选的,所述主机210用于启动页面发送线程,所述页面发送线程可以使用所述第一数据传输协议将位于发送队列的多个页面,按照从所述发送队列的头部到尾部的顺序,成批地发送给所述GBP节点220。其中,所述发送队列位于所述主机210内,且从所述发送队列的头部到尾部,所述多个页面各自包含的LSN是递增的。
进一步地,所述主机210还用于启动多个页面发送线程,且所述主机210可以包括多个发送队列,其中,所述多个页面发送线程与所述页面发送队列是一对一的。
可选的,所述GBP节点220用于启动页面接收线程,所述页面接收线程可以使用所述第一数据传输协议成批地接收所述多个页面,并将所述多个页面写入所述GBP节点的缓存队列。
进一步地,所述GBP节点220还用于启动多个页面接收线程,且所述GBP节点的页面缓冲区中具有多个缓存队列,其中,所述多个页面接收线程与所述多个缓存队列是一对一的。
另外,所述主机210启动的多个页面发送线程与所述GBP节点220启动的多个页面接收线程也可以是一对一的。应当知道的是,在这种情况下,所述多个发送队列与所述多个缓存队列也是一对一的,也即,每一发送队列内的多个页面可以被发送给对应的一个缓存队列内。
请参见附图10,它为本申请提供的第二种数据库***的故障修复方法的流程图。需要说明的是,该第二种数据库***的故障修复方法(简称为“第二种故障修复方法”)是从备机的角度描述的,而前述第一种故障修复方法(简称为“第一种故障修复方法”)是从***的角度描述的,由于备机是***的一部分,因此该第二种故障修复方法与第一种故障修复方法有很多相同的地方,基于此,在下述关于第二种故障修复方法的实施例中,仅就与第一种故障修复方法不同的部分进行描述,而与第一种故障修复方法相同的部分,参考前述相关实施例即可。
如图10所示,该第二种故障修复方法,包括下述步骤。
S201、在主机发送故障时,确定所述GBP起始点、所述GBP恢复点和所述GBP结束点。
需要说明的是,所述GBP节点上存储的所有页面均是在所述主机正常工作期间,由所述主机通过第一数据传输协议发送给所述GBP节点,且被所述GBP节点写入到所述GBP节点的缓存队列中的。所述多个页面对应的日志序列号LSN按照从所述缓存队列的头部到尾部的顺序递增。
S203、在所述磁盘恢复点大于或等于所述GBP起始点,且所述磁盘结束点大于或等于所述GBP结束点时,回放位于所述GBP恢复点所对应的重做日志和所述磁盘结束点所对应的重做日志之间的所有重做日志。
关于所述GBP起始点、所述GBP恢复点、所述GBP结束点、所述磁盘恢复点以及所述磁盘结束点的定义,均请参考前文的描述。
值得注意的是,位于所述磁盘恢复点所对应的重做日志以及所述GBP恢复点所对应的重做日志之间的所有重做日志没有被回放。
需要说明的是,在所述磁盘恢复点大于或等于所述GBP起始点,且所述磁盘结束点大于或等于所述GBP结束点时,本实施例提供的故障修复方法还包括:启动后台线程,所述后台线程用于将所述GBP节点上存储的所有页面拉取到页面缓冲区。
可选的,所述后台线程通过第二数据传输协议将所述GBP节点上存储的所有页面拉取到页面缓冲区。
应当知道的是,在所述主机发生故障之后以及在执行所述回放步骤之前,本实施例提供的故障修复方法还包括:获取所述磁盘恢复点和所述磁盘结束点。以及,在所述主机正常工作期间,接收所述主机发送的重做日志,回放所述重做日志得到对应的页面,并将得到的页面成批地刷到本地磁盘。
可选的,在执行完所述回放步骤之后,以及在需要被访问的页面还位于所述GBP节点的页面缓冲区时,本实施例提供的故障修复方法还包括:从所述GBP节点的页面缓冲区中读取所述需要被访问的页面。
如图11A和11B所示,它为本申请提供的第一种计算设备500的结构示意图。该计算设备500可以为前述第二种故障修复方法中提及的备机,且该计算设备500可以执行前述从备机角度描述的故障修复方法。该备机和前述第二种故障修复方法中提及的主机可以是两个独立的节点。
具体的,如图11A所示,该计算设备500至少包括确定单元510和回放单元530。其中,在主机发生故障时,确定单元510用于确定GBP起始点、GBP恢复点和GBP结束点。
关于所述GBP起始点、所述GBP恢复点和所述GBP结束点的定义,请参考前文的描述。
值得注意的是,所述GBP节点上存储的所有页面均是在所述主机正常工作期间,由所述主机通过第一数据传输协议发送给所述GBP节点,并由所述GBP节点写入到所述GBP节点的缓存队列的。所述多个页面对应的日志序列号LSN按照从所述缓存队列的头部到尾部的顺序递增。
在磁盘恢复点大于或等于所述GBP起始点,且磁盘结束点大于或等于所述GBP结束点时,回放单元530用于回放位于所述GBP恢复点所对应的重做日志和所述磁盘结束点所对应的重做日志之间的所有重做日志。关于所述磁盘恢复点和所述磁盘结束点的定义,也请参考前文的描述。
作为本申请的一个实施例,如图11B所示,该计算设备500还包括启动单元540。在所述磁盘恢复点大于或等于所述GBP起始点,且所述磁盘结束点大于或等于所述GBP结束点时,启动单元540用于启动后台线程,所述后台线程用于将所述GBP节点上存储的所有页面拉取到页面缓冲区。
应当知道的是,在所述主机发生故障之后以及在回放单元530执行回放步骤之前,确定单元510还用于获取所述磁盘恢复点和所述磁盘结束点。
值得注意的是,如图11B所示,该计算设备还包括接收单元520。在所述主机正常工作期间,接收单元520用于接收所述主机发送的重做日志。对应的,回放单元530用于回放所述重做日志得到对应的页面。
作为本申请的另一个实施例,如图11B所示,该计算设备还包括读取单元550。在执行完所述回放步骤之后,以及在需要被访问的页面还位于所述GBP节点的页面缓冲区时,读取单元550用于从所述GBP节点的页面缓冲区中读取所述需要被访问的页面。
如图12所示,它为本申请提供的第二种计算设备600的结构示意图。该计算设备600可以为前述第二种故障修复方法中提及的备机,且该计算设备600可以执行前述从备机角度描述的第二种故障修复方法。具体的,如图12所示,该计算设备600的硬件层610上运行有操作***620,操作***620上运行有应用程序630。硬件层610包含处理器611、存储器612和输入/输出(I/O)接口等。存储器612中存储有可执行代码,该可执行代码在被处理器611执行时被配置为实现计算设备600的组件和功能。在本实施例中,存储器612用于存储磁盘恢复点和磁盘结束点。
具体的,在主机发生故障时,处理器611用于确定GBP起始点、GBP恢复点和GBP结束点。
值得注意的是,所述GBP节点上存储的所有页面均是在所述主机正常工作期间,由所述主机通过第一数据传输协议发送给所述GBP节点,并由所述GBP节点写入到所述GBP节点的缓存队列中。所述多个页面对应的日志序列号LSN按照从所述缓存队列的头部到尾部的顺序递增。
在所述磁盘恢复点大于或等于所述GBP起始点,且所述磁盘结束点大于或等于所述GBP结束点时,处理器611还用于回放位于所述GBP恢复点所对应的重做日志和所述磁盘结束点所对应的重做日志之间的所有重做日志。
需要强调的是,在本实施例中,位于所述磁盘恢复点所对应的重做日志以及所述GBP恢复点所对应的重做日志之间的所有重做日志没有被回放。
作为本申请的另一个实施例,在所述磁盘恢复点大于或等于所述GBP起始点,且所述磁盘结束点大于或等于所述GBP结束点时,处理器611还用于启动后台线程,所述后台线程用于将所述GBP节点上存储的所有页面拉取到页面缓冲区。
作为本申请的再一个实施例,在执行完所述回放步骤之后,以及在需要被访问的页面还位于所述GBP节点的页面缓冲区时,处理器611还用于从所述GBP节点的页面缓冲区中读取所述需要被访问的页面。
应当知道的是,在主机发生故障之后以及在所述处理器执行回放步骤之前,处理器611还用于从所述存储器中获取所述磁盘恢复点和所述磁盘结束点。
作为本申请的又一个实施例,在所述主机正常工作期间,I/O接口613用于接收所述主机发送的重做日志。对应的,处理器611用于回放所述重做日志得到对应的页面。
需要说明的是,本申请提供的第一种数据备份方法。该第一种数据备份方法至少包括:在将重做日志传送给备机期间,使用RDMA协议将页面发送给GBP节点,以便在发生故障时,利用所述GBP节点中的页面进行故障修复。
在本实施例中,在将重做日志传送给备机期间,还使用RDMA协议将被修改页面发给GBP节点,用于在所述GBP节点上做备份。由于使用RDMA协议可以使得大部分被发送给备机的重做日志对应的被修改页面被发送给了GBP节点,因此在本机发生故障时,所述备机尚未回放的剩余重做日志包括两部分,第一部分重做日志是指位于所述磁盘恢复点所对应的重做日志和所述GBP恢复点所对应的重做日志之间的全部重做日志,第二部分重做日志是指位于所述GBP恢复点所对应的重做日志和所述磁盘结束点所对应的重做日志之间的全部重做日志。所述备机只需要回放该第二部分重做日志以得到对应的页面就可以实现故障修复了,因为第一部分重做日志对应的页面可以直接从所述GBP节点上拉取。可知,采用本实施例提供的数据备份方法能够提高故障修复效率。
对应于上述第一种数据备份方法,本申请还提供了第三种计算设备700,该计算设备700可以执行上述第一种数据备份方法。如图13所示,该计算设备700的硬件层710上运行有操作***720,操作***720上运行有应用程序730。硬件层710包含处理器711、存储器712、第一传输接口713和第二传输接口714等。存储器712中存储有可执行代码,该可执行代码在被处理器711执行时被配置为实现计算设备700的组件和功能。
在本实施例中,第一传输接口713用于将重做日志传送给备机。在第一传输接口713将所述重做日志传送给所述备机期间,第二传输接口714用于基于RDMA协议将页面发送给GBP节点,以便在发生故障时,利用所述GBP节点中的页面进行故障修复。
类似地,采用计算设备700的数据库***在进行故障修复时,会具有比较高的故障修复效率。
本申请还提供了第三种数据库***的故障修复方法(简称为“第三种故障修复方法”)。首先,该第三种故障修复方法可以应用于如图14所示的数据库***的,该数据库***包括主机800和GBP节点900。该第三种故障修复方法也是从***的角度描述的,但是该第三种故障修复方法不同于前述第一种故障修复方法。它们的区别在于在第一种故障修复方法中,涉及到主机210、备机230和GBP节点220三方,在所述主机发送故障时,该备机通过回放日志被提升为新的主机。也即在第一种的故障修复方法中,所述主机发生故障后,所述备机会被提升为新的主机。但是在第三种数据库***的故障修复方法中,仅涉及到主机800和GBP节点900两方,在主机800发生故障时,主机800将会通过回放重做日志被重新拉起。
值得注意的是,如果所述主机的软件故障了,则通常所述主机可以被重新拉起。如果所述主机的硬件故障了,则通常所述主机无法被拉起。因此,前述第一种故障修复方法既可以在所述主机的软件故障时被采用,也可以在所述主机的硬件故障时被采用。而该第三种故障修复方法,通常只可以在所述主机的软件故障时被采用。
需要说明的是,该第三种故障修复方法与前述第一种故障修复方法有很多相同的地方,因此下面在对该第三种故障修复方法进行描述时,仅就不同于前述第一种故障修复方法的部分进行描述,对应相同的部分,请直接参考前文的描述即可。
请参阅附图15,它是该第三种故障修复方法的流程图。需要关注的是,在该第三种故障修复方法中,S301、S303和S305的执行主体均所述主机800,S302的执行主体是GBP节点900。而在前述第一种故障修复方法,S101是主机210执行的,S102是GBP节点220执行的,S103和S105均是备机230执行的。容易看出,S301与S101几乎相同;S302与S102几乎相同;
S303与S103除了执行主体不同,其他的几乎相同;S305与S105也是除了执行主体不同,其他的几乎相同。
具体的,该第三种故障修复方法包括下述步骤。
S301、在正常工作时,使用第一数据传输协议将多个页面发送给GBP节点。
S302、所述GBP节点将所述多个页面写入所述GBP节点的缓存队列中。
值得注意的是,所述多个页面对应的LSN按照从所述缓存队列的头部到尾部的顺序递增。
S303、在发生故障时,确定GBP起始点、GBP恢复点和GBP结束点。
S305、在磁盘恢复点大于或等于所述GBP起始点,且磁盘结束点大于或等于所述GBP结束点时,回放位于所述GBP恢复点对应的重做日志和所述磁盘结束点对应的重做日志之间的所有重做日志,以使所述主机被重新拉起。
值得注意的是,在本实施例中,位于所述磁盘恢复点对应的重做日志和所述GBP恢复点对应的重做日志之间的所有重做日志没有被回放。
作为本申请的另一个实施例,在所述磁盘恢复点大于或等于所述GBP起始点,且所述磁盘结束点大于或等于所述GBP结束点时,该第三种故障修复方法还包括:S306、启动后台线程,所述后台线程用于将位于所述GBP节点上的所有页面拉取到页面缓冲区。应当知道的是,被拉取到页面缓冲区的页面还会被刷到本地磁盘。
容易看出,在发生故障之后以及在执行回放之前,该第三种故障修复方法还包括:S304、获取所述磁盘恢复点和所述磁盘结束点。
作为本申请的再一个实施例,在所述主机执行完回放步骤之后,以及在需要被访问的页面还位于所述GBP节点时,该第三种故障修复方法还包括:S307、从所述GBP节点中读取所述需要被访问的页面。
本申请还提供了一种数据库***,请参阅附图14,该数据库***包括主机800和GBP节点900,且主机800和GBP节点900之间通过第一数据传输协议通信连接。该数据库***可以用于执行前述第三种故障修复方法。
主机800用于通过第一数据传输协议向GBP节点900发送多个页面。
GBP节点900用于将所述多个页面写入所述GBP节点的缓存队列。
其中,所述多个页面各自包含的日志序列号LSN按照从所述缓存队列的头部到尾部的顺序递增
在所述主机发生故障时,主机800还用于确定GBP起始点、GBP恢复点和GBP结束点。在磁盘恢复点大于或等于所述GBP起始点,且磁盘结束点大于或等于所述GBP结束点时,主机800还用于回放位于所述GBP恢复点对应的重做日志和所述磁盘结束点对应的重做日志之间的所有重做日志。
关于所述GBP起始点、所述GBP恢复点、所述GBP结束点、磁盘恢复点和磁盘结束点的定义,请参考前文的描述。
应当知道的是,位于所述磁盘恢复点对应的重做日志和所述GBP恢复点对应的重做日志之间的所有重做日志没有被回放。
作为本申请的另一个实施例,在所述磁盘恢复点大于或等于所述GBP起始点,且所述磁盘结束点大于或等于所述GBP结束点时,主机800还用于启动后台线程,所述后台线程用于将位于所述GBP节点上的所有页面拉取到页面缓冲区。
可选的,所述后台线程通过所述第一数据传输协议将位于所述GBP节点上的所有页面拉取到页面缓冲区。
需要说明的是,在所述主机执行完回放步骤之后,以及在需要被访问的页面还位于所述GBP节点的页面缓冲区时,主机800还用于从所述GBP节点的页面缓冲区中读取所述需要被访问的页面。
如图16所示,本申请还提供了第四种数据库***的故障修复方法。其中,该第四种故障修复方法的执行主体是图14中的主机800。其中,该故障修复方法包括如下步骤。
S311、在正常工作时,通过第一数据传输协议将多个页面发送给GBP节点。
S313、在发生故障时,确定GBP起始点、GBP恢复点和GBP结束点。
S315、在磁盘恢复点大于或等于所述GBP起始点,且磁盘结束点大于或等于所述GBP结束点时,回放位于所述GBP恢复点对应的重做日志和所述磁盘结束点对应的重做日志之间的所有重做日志。
值得注意的是,所述多个页面被写入所述GBP节点的缓存队列,所述多个页面对应的日志序列号LSN按照从所述缓存队列的头部到尾部的顺序递增。
需要解释的是,所述GBP起始点、所述GBP恢复点、所述GBP结束点、所述磁盘恢复点以及所述磁盘结束点的定义请参考前文的相关描述,此处不再赘述。
由于发明内容部分已经该第四种故障修复方法做了比较多的解释,因此此处不再赘述。值得注意的是,本申请中针对主机、备机和GBP节点组成的数据库***执行的故障修复方法,做了最详细的说明,其他实施例由于与该前述实施例均有很强的关联关系,因此均可以参考该被做了最详细说明的实施例。为了不重复赘述相同的内容,对于后面的其他所有实施例,均描述的比较简单。但应当知道的是,对于每一描述简单的实施例,均可以通过参考发明内容部分以及前述该被做了最详细说明的实施例,进行理解。
本申请还提供了第四种计算设备1000,该第四种计算设备1000可以用于执行前述第四种故障修复方法,也即该第四种计算设备1000可以实现前述第四种故障修复方法中主机的功能。如图17所示,所述计算设备1000至少包括发送单元1010、确定单元1020和回放单元1030。
具体的,在正常工作时,所述发送单元1010用于使用第一数据传输协议将多个页面发送给GBP节点。其中,所述多个页面对应的日志序列号LSN按照从所述缓存队列的头部到尾部的顺序递增。
在发生故障时,所述确定单元1020用于确定GBP起始点、GBP恢复点和GBP结束点。
在磁盘恢复点大于或等于所述GBP起始点,且磁盘结束点大于或等于所述GBP结束点时,所述回放单元1030用于回放位于所述GBP恢复点对应的重做日志和所述磁盘结束点对应的重做日志之间的所有重做日志。
可选的,所述计算设备还包括启动单元1040。在所述磁盘恢复点大于或等于所述GBP起始点,且所述磁盘结束点大于或等于所述GBP结束点时,所述启动单元1040用于启动后台线程,其中,所述后台线程用于将位于所述GBP节点上的所有页面拉取到所述计算设备的页面缓冲区。
进一步地,所述计算设备还包括读取单元1050,在执行完回放步骤之后,以及在需要被访问的页面还位于所述GBP节点时,所述读取单元1050用于从所述GBP节点中读取所述需要被访问的页面。
本申请还提供了第五种计算设备2000,该第五种计算设备2000可以用于执行前述第三种故障修复方法。如图18所示,该计算设备2000的硬件层2010上运行有操作***2020,操作***2020上运行有应用程序2030。硬件层2010包含处理器2011、存储器2012和I/O接口2013等。存储器2012中存储有可执行代码,该可执行代码在被处理器2011执行时被配置为实现计算设备2000的组件和功能。
在本实施例中,所述存储器2012用于存储GBP起始点、GBP恢复点、GBP结束点、磁盘恢复点和磁盘结束点。
在正常工作时,所述处理器2011用于使用第一数据传输协议将多个页面发送给GBP节点。其中,所述多个页面对应的日志序列号LSN按照从所述缓存队列的头部到尾部的顺序递增。在发生故障时,所述处理器2011还用于确定所述GBP起始点、所述GBP恢复点和所述GBP结束点。
在所述磁盘恢复点大于或等于所述GBP起始点,且所述磁盘结束点大于或等于所述GBP结束点时,所述处理器2011还用于回放位于所述GBP恢复点对应的重做日志和所述磁盘结束点对应的重做日志之间的所有重做日志。
需要说明的是,在所述磁盘恢复点大于或等于所述GBP起始点,且所述磁盘结束点大于或等于所述GBP结束点时,所述处理器2011还用于启动后台线程,所述后台线程用于将位于所述GBP节点上的所有页面拉取到页面缓冲区。
可选的,在执行完回放步骤之后(在备机被拉起之后),以及在需要被访问的页面还位于所述GBP节点中时,所述处理器2011还用于从所述GBP节点中读取所述需要被访问的页面。
本申请还提供第二种数据备份方法,相对于前述第一种数据备份方法,该第二种数据备份方法的执行主体是GBP节点。该GBP节点既可以是第一种故障修复方法中所述的GBP节点,也可以是第三种故障修复方法中所述的GBP节点。如图19所示,该第二种数据备份方法包括如下步骤。
S401、通过RDMA协议接收来自主机的多个页面。
S403、将所述多个页面写入缓存队列中。其中,所述多个页面各自包含的LSN按照从所述缓存队列的头部到尾部的顺序递增。
S405、根据所述多个页面各自的LSN,维护GBP起始点、GBP恢复点和GBP结束点,以便在主机发生故障时,根据所述GBP起始点、所述GBP恢复点和所述GBP结束点进行故障修复。
作为该第二种数据备份方法的一个实施例,在接收到内存中不存在的新页面时,S403具体包括:将所述新页面放入所述缓存队列的尾部。
关于“新页面”的解释可以参见前述第一种故障修复方法对应的实施例中关于“新页面”的解释,此处不再赘述。
作为另一个实施例,在接收到内存中不存在的新页面,且所述缓存队列已满的情况下,S403具体包括:将位于所述缓存队列头部的页面淘汰掉,将所述新页面存入所述缓存队列的尾部,并将所述GBP起始点更新为新的位于所述缓存队列头部的页面对应的LSN。
作为又一种实施例,在接收到内存中已经存在的新页面时,S403具体包括:使用所述新页面对已经存在的对应页面进行更新,并将更新后的页面放入所述缓存队列的尾部。
应当知道的是,每接收到一批页面,所述GBP恢复点和所述GBP结束点一定会被更新,而所述GBP起始点可能会被更新。由于所述GBP起始点、所述GBP恢复点和所述GBP结束点的定义前文已有描述,因此此处不再赘述,应当知道的是,只需要根据它们各自的定义以及接收到的页面,对它们进行更新即可。
由于在第三种故障修复方法对应的实施例中,所述GBP节点与所述主机的备机可以是重合的,也即所述备机既可以实现第一种故障修复方法中的备机的功能,又可以实现第一种故障修复方法中的GBP节点的功能,或者说,所述备机安装有能够实现全局页面缓存功能的应用程序。在所述GBP节点与所述备机重合的情况下,所述第二种数据备份方法还包括:接收多个重做日志,并通过回放所述多个重做日志,得到与所述多个重做日志中每一重做日志对应的页面。
本申请还提供了第六种计算设备3000,该第六种计算设备3000可以执行前述第二种数据备份方法,也即该第六种计算设备3000可以实现前述实施例中所述GBP节点的功能。
具体的,如图20所示,该第六种计算设备3000至少包括接收单元3010、写入单元3020和维护单位3030。所述接收单元3010用于通过RDMA协议接收来自主机的多个页面。所述写入单元3020用于将所述多个页面写入缓队列中。值得注意的是,所述多个页面对应的日志序列号LSN按照从所述缓存队列的头部到尾部的顺序递增。所述维护单元3030用于根据所述多个页面中每个页面的LSN,维护GBP起始点、GBP恢复点和GBP结束点,以便在所述主机发生故障时,根据所述GBP起始点、所述GBP恢复点和所述GBP结束点进行故障修复。
应当知道的是,在接收到内存中不存在的新页面时,所述写入单元3020还用于将所述新页面放入所述缓存队列的尾部。
值得注意的是,在接收到内存中不存在的新页面,且所述缓存队列已满的情况下,所述写入单元3020还用于将位于所述缓存队列头部的页面淘汰掉,并将所述新页面存入所述缓存队列的尾部。相应的,所述维护单元3030还用于将所述GBP起始点更新为新的位于所述缓存队列头部的页面对应的LSN。
进一步地,在接收到内存中已经存在的新页面时,所述写入单元3020还用于使用所述新页面对已经存在的对应页面进行更新,并将更新后的页面放入所述缓存队列的尾部。
应当知道的是,每接收到一批页面,所述维护单元3030还用于根据接收到的页面更新所述GBP恢复点和所述GBP结束点。
在所述第六种计算设备既能够实现前述实施例中所述GBP节点的功能,又能实现所述备机的功能时,所述接收单元还用于接收多个重做日志,另外所述第六种计算设备还包括回放单元。所述回放单元用于回放所述多个重做日志,得到与所述多个重做日志中每一重做日志对应的页面。
本申请还提供了第七种计算设备4000,该第七种计算设备4000也可以执行前述第二种数据备份方法,换句话说,该第七种计算设备4000可以实现前述实施例中所述GBP节点的功能。具体的,如图21所示,该计算设备4000的硬件层4010上运行有操作***4020,操作***4020上运行有应用程序4030。硬件层4010包含处理器4011、存储器4012和I/O接口4013等。存储器4012中存储有可执行代码,该可执行代码在被处理器4011执行时被配置为实现计算设备4000的组件和功能。
在本实施例中,所述I/O接口4013用于通过RDMA协议接收来自主机的多个页面。所述处理器4012用于将所述多个页面依次写入缓队列中,并根据所述多个页面中每个页面包含的LSN,维护GBP起始点、GBP恢复点和GBP结束点。
值得注意的是,所述多个页面对应的LSN按照从所述缓存队列的头部到尾部的顺序递增。另外,维护所述GBP起始点、所述GBP恢复点和所述GBP结束点的目的是为了在所述主机发生故障时,可以根据所述GBP起始点、所述GBP恢复点和所述GBP结束点进行故障修复。
应当知道的是,在接收到内存中不存在的新页面时,所述处理器4012还用于将所述新页面放入所述缓存队列的尾部。
值得注意的是,在接收到内存中不存在的新页面,且所述缓存队列已满的情况下,所述处理器4012还用于将位于所述缓存队列头部的页面淘汰掉,将所述新页面存入所述缓存队列的尾部,以及将所述GBP起始点更新为新的位于所述缓存队列头部的页面对应的LSN。
进一步地,在接收到内存中已经存在的新页面时,所述处理器4012还用于使用所述新页面对已经存在的对应页面进行更新,并将更新后的页面放入所述缓存队列的尾部。
应当知道的是,每接收到一批页面,所述处理器4012还用于根据接收到的页面更新所述GBP恢复点和所述GBP结束点。
在所述第七种计算设备4000既能够实现前述实施例中所述GBP节点的功能,又能实现所述备机的功能时,所述处理器4012还用于接收多个重做日志,并回放所述多个重做日志,得到与所述多个重做日志中每一重做日志对应的页面。
需要说明的是,本申请涉及到多个保护主体,每个保护主体对应多个实施例,但是这些保护主体之间,以及这些实施例之间均是关联的。本申请中,在对包括主机、备机和GBP节点的数据库***的故障修复方法进行描述之前,描述了很多通用的内容,这些内容,对后面所有相关的实施例均是使用。另外,本申请中,除了对包括主机、备机和GBP节点的数据库***的故障修复方法描述的较为详细之外,对于其他实施例描述的均比较简单。应当知道的是,其他所有实施例均可以参见本申请中任一相关部分的内容进行理解,在本申请中,各个实施例之间可以相互参见。
Claims (46)
1.一种数据库***的故障修复方法,其特征在于,包括:
在主机正常工作时,所述主机使用第一数据传输协议将多个页面发送给全局页面缓冲池GBP节点,
所述GBP节点将所述多个页面写入到所述GBP节点的缓存队列,且所述多个页面对应的日志序列号LSN按照从所述缓存队列的头部到尾部的顺序递增;
在所述主机发生故障时,备机确定GBP起始点、GBP恢复点和GBP结束点,所述GBP起始点指示所述GBP节点上存储的所有页面中所包括的最小的LSN;所述GBP恢复点指示所述GBP节点最近一次接收到的一批页面中所包括的最小的LSN;所述GBP结束点指示所述GBP节点最近一次接收到的所述一批页面中所包括的最大的LSN;
在磁盘恢复点大于或等于所述GBP起始点,且磁盘结束点大于或等于所述GBP结束点时,所述备机回放位于所述GBP恢复点所对应的重做日志和所述磁盘结束点所对应的重做日志之间的所有重做日志,所述磁盘恢复点指示所述备机的磁盘中最近一批被写入的多个页面所包含的最小的LSN,所述磁盘结束点指示所述备机所接收的最后一条重做日志的LSN。
2.根据权利要求1所述的故障修复方法,其特征在于,位于所述磁盘恢复点所对应的重做日志和所述GBP恢复点所对应的重做日志之间的所有重做日志没有被回放。
3.根据权利要求1所述的故障修复方法,其特征在于,所述GBP节点维护了所述GBP恢复点和所述GBP结束点,则在所述GBP节点在将所述多个页面写入到所述GBP节点的缓存队列之后,所述方法还包括:
所述GBP节点根据所述多个页面,更新所述GBP恢复点和所述GBP结束点;
所述备机确定GBP恢复点和GBP结束点,包括:
所述备机从所述GBP节点中获取更新后的所述GBP恢复点和所述GBP结束点。
4.根据权利要求2所述的故障修复方法,其特征在于,所述GBP节点维护了所述GBP恢复点和所述GBP结束点,则在所述GBP节点在将所述多个页面写入到所述GBP节点的缓存队列之后,所述方法还包括:
所述GBP节点根据所述多个页面,更新所述GBP恢复点和所述GBP结束点;
所述备机确定GBP恢复点和GBP结束点,包括:
所述备机从所述GBP节点中获取更新后的所述GBP恢复点和所述GBP结束点。
5.根据权利要求1所述的故障修复方法,其特征在于,所述GBP节点维护所述GBP起始点,
在所述GBP节点接收到所述GBP节点的页面缓冲区中不存在的新页面且所述GBP节点的页面缓冲区已满时,所述方法还包括:
所述GBP节点将位于缓存队列头部的页面淘汰掉,并将所述GBP起始点更新为所述缓存队列的新的头部页面对应的LSN;
所述备机确定GBP起始点,包括:所述备机从所述GBP节点中获取更新后的所述GBP起始点。
6.根据权利要求2所述的故障修复方法,其特征在于,所述GBP节点维护所述GBP起始点,
在所述GBP节点接收到所述GBP节点的页面缓冲区中不存在的新页面且所述GBP节点的页面缓冲区已满时,所述方法还包括:
所述GBP节点将位于缓存队列头部的页面淘汰掉,并将所述GBP起始点更新为所述缓存队列的新的头部页面对应的LSN;
所述备机确定GBP起始点,包括:所述备机从所述GBP节点中获取更新后的所述GBP起始点。
7.根据权利要求1所述的故障修复方法,其特征在于,
在所述GBP节点接收到所述GBP节点的页面缓冲区中不存在的新页面时,
所述GBP节点将所述多个页面写入到所述GBP节点的缓存队列,包括:
所述GBP节点将所述新页面放入所述缓存队列的尾部;
在所述GBP节点接收到所述GBP节点的页面缓冲区中已经存在的新页面时,
所述GBP节点将所述多个页面写入到所述GBP节点的缓存队列,包括:
所述GBP节点根据接收到的所述新页面对已经存在的对应页面进行更新,并将更新后的所述新页面放在所述缓存队列的尾部。
8.根据权利要求2所述的故障修复方法,其特征在于,
在所述GBP节点接收到所述GBP节点的页面缓冲区中不存在的新页面时,
所述GBP节点将所述多个页面写入到所述GBP节点的缓存队列,包括:
所述GBP节点将所述新页面放入所述缓存队列的尾部;
在所述GBP节点接收到所述GBP节点的页面缓冲区中已经存在的新页面时,
所述GBP节点将所述多个页面写入到所述GBP节点的缓存队列,包括:
所述GBP节点根据接收到的所述新页面对已经存在的对应页面进行更新,并将更新后的所述新页面放在所述缓存队列的尾部。
9.根据权利要求1至8任一项所述的故障修复方法,其特征在于,还包括:在所述磁盘恢复点大于或等于所述GBP起始点,且所述磁盘结束点大于或等于所述GBP结束点时,所述备机启动后台线程,所述后台线程用于将所述GBP节点上存储的所有页面拉取到所述备机的页面缓冲区。
10.根据权利要求9所述的故障修复方法,其特征在于,所述后台线程用于通过第二数据传输协议将所述GBP节点上存储的所有页面拉取到所述备机的页面缓冲区。
11.根据权利要求1至8、10任一项所述的故障修复方法,其特征在于,在所述备机执行完回放步骤之后,以及在所述备机上的应用需要访问的页面还位于所述GBP节点的页面缓冲区时,则所述应用从所述GBP节点的页面缓冲区中读取所述需要访问的页面。
12.根据权利要求9所述的故障修复方法,其特征在于,在所述备机执行完回放步骤之后,以及在所述备机上的应用需要访问的页面还位于所述GBP节点的页面缓冲区时,则所述应用从所述GBP节点的页面缓冲区中读取所述需要访问的页面。
13.一种数据库***,其特征在于,包括主机、备机和全局页面缓冲池GBP节点;
所述主机用于通过第一数据传输协议将多个页面发送给所述GBP节点;
所述GBP节点用于将所述多个页面写入到所述GBP节点的缓存队列,且所述多个页面对应的日志序列号LSN按照从所述缓存队列的头部到尾部的顺序递增;
在所述主机发生故障时,所述备机用于确定GBP起始点、GBP恢复点和GBP结束点,所述GBP起始点指示所述GBP节点上存储的所有页面中所包括的最小的日志序列号LSN,所述GBP恢复点指示所述GBP节点最近一次接收到的一批页面中所包括的最小的LSN,所述GBP结束点指示所述GBP节点最近一次接收到的所述一批页面中所包括的最大的LSN;
在磁盘恢复点大于或等于所述GBP起始点,且磁盘结束点大于或等于所述GBP结束点的情况下,所述备机还用于回放位于所述GBP恢复点所对应的重做日志和所述磁盘结束点所对应的重做日志之间的所有重做日志,其中,所述磁盘恢复点指示所述备机的磁盘中最近一批被写入的多个页面所包含的最小的LSN,所处磁盘结束点指示所述备机所接收的最后一条重做日志的LSN。
14.根据权利要求13所述的***,其特征在于,位于所述磁盘恢复点所对应的重做日志和所述GBP恢复点所对应的重做日志之间的所有重做日志没有被回放。
15.根据权利要求13所述的***,其特征在于,在将所述多个页面写入到所述GBP节点的缓存队列之后,所述GBP节点还用于根据所述多个页面,更新所述GBP恢复点和所述GBP结束点;
相应的,所述备机还用于从所述GBP节点中获取更新后的所述GBP恢复点和所述GBP结束点。
16.根据权利要求14所述的***,其特征在于,在将所述多个页面写入到所述GBP节点的缓存队列之后,所述GBP节点还用于根据所述多个页面,更新所述GBP恢复点和所述GBP结束点;
相应的,所述备机还用于从所述GBP节点中获取更新后的所述GBP恢复点和所述GBP结束点。
17.根据权利要求13所述的***,其特征在于,在所述GBP节点接收到所述GBP节点的页面缓冲区中不存在的新页面且所述GBP节点的页面缓冲区已满时,所述GBP节点还用于将位于缓存队列头部的页面淘汰掉,并将所述GBP起始点更新为所述缓存队列的新的头部页面对应的LSN;
相应的,所述备机还用于从所述GBP节点中获取更新后的所述GBP起始点。
18.根据权利要求14所述的***,其特征在于,在所述GBP节点接收到所述GBP节点的页面缓冲区中不存在的新页面且所述GBP节点的页面缓冲区已满时,所述GBP节点还用于将位于缓存队列头部的页面淘汰掉,并将所述GBP起始点更新为所述缓存队列的新的头部页面对应的LSN;
相应的,所述备机还用于从所述GBP节点中获取更新后的所述GBP起始点。
19.根据权利要求13所述的***,其特征在于,
在所述GBP节点接收到所述GBP节点的页面缓冲区中不存在的新页面时,所述GBP节点还用于将所述新页面放入所述缓存队列的尾部;或,
在所述GBP节点接收到所述GBP节点的页面缓冲区中已经存在的新页面时,所述GBP节点还用于根据接收到的所述新页面对已经存在的对应页面进行更新,并将更新后的所述新页面放在所述缓存队列的尾部。
20.根据权利要求14所述的***,其特征在于,
在所述GBP节点接收到所述GBP节点的页面缓冲区中不存在的新页面时,所述GBP节点还用于将所述新页面放入所述缓存队列的尾部;或,
在所述GBP节点接收到所述GBP节点的页面缓冲区中已经存在的新页面时,所述GBP节点还用于根据接收到的所述新页面对已经存在的对应页面进行更新,并将更新后的所述新页面放在所述缓存队列的尾部。
21.根据权利要求13至20任一项所述的***,其特征在于,在所述磁盘恢复点大于或等于所述GBP起始点,且所述磁盘结束点大于或等于所述GBP结束点时,所述备机还用于启动后台线程,所述后台线程用于将所述GBP节点上存储的所有页面拉取到的所述备机的页面缓冲区。
22.根据权利要求21所述的***,其特征在于,所述后台线程用于通过第二数据传输协议将所述GBP节点上存储的所有页面拉取到的所述备机的页面缓冲区。
23.一种数据库***的故障修复方法,其特征在于,包括:
在主机发生故障时,确定全局页面缓冲池GBP起始点、GBP恢复点和GBP结束点,所述GBP起始点指示GBP节点上存储的所有页面中所包括的最小的日志序列号LSN,所述GBP恢复点指示所述GBP节点最近一次接收到的一批页面中所包括的最小的LSN,所述GBP结束点指示所述GBP节点最近一次接收到的所述一批页面中所包括的最大的LSN,其中,所述GBP节点上存储的所有页面均是所述主机在正常工作期间,通过第一数据传输协议发送给所述GBP节点,并由所述GBP节点写入到所述GBP节点的缓存队列的,多个页面对应的LSN按照从所述缓存队列的头部到尾部的顺序递增;
在磁盘恢复点大于或等于所述GBP起始点,且磁盘结束点大于或等于所述GBP结束点时,回放位于所述GBP恢复点所对应的重做日志和所述磁盘结束点所对应的重做日志之间的所有重做日志;所述磁盘恢复点指示备机的磁盘中最近一批被写入的多个页面所包含的最小的LSN,所述磁盘结束点指示所述备机所接收的最后一条重做日志的LSN。
24.根据权利要求23所述的故障修复方法,其特征在于,位于所述磁盘恢复点所对应的重做日志以及所述GBP恢复点所对应的重做日志之间的所有重做日志没有被回放。
25.根据权利要求23或24所述的故障修复方法,其特征在于,在所述磁盘恢复点大于或等于所述GBP起始点,且所述磁盘结束点大于或等于所述GBP结束点时,所述方法还包括:启动后台线程,所述后台线程用于将所述GBP节点上存储的所有页面拉取到页面缓冲区。
26.根据权利要求25所述的故障修复方法,其特征在于,所述后台线程用于通过第二数据传输协议将所述GBP节点上存储的所有页面拉取到页面缓冲区。
27.根据权利要求23、或24、或26所述的故障修复方法,其特征在于,在执行完所述回放步骤之后,以及在需要被访问的页面还位于所述GBP节点的页面缓冲区时,所述方法还包括:从所述GBP节点的页面缓冲区中读取所述需要被访问的页面。
28.根据权利要求25所述的故障修复方法,其特征在于,在执行完所述回放步骤之后,以及在需要被访问的页面还位于所述GBP节点的页面缓冲区时,所述方法还包括:从所述GBP节点的页面缓冲区中读取所述需要被访问的页面。
29.一种计算设备,其特征在于,包括确定单元和回放单元,
在主机发生故障时,所述确定单元用于确定全局页面缓冲池GBP起始点、GBP恢复点和GBP结束点,所述GBP起始点指示GBP节点上存储的所有页面中所包括的最小的日志序列号LSN,所述GBP恢复点指示所述GBP节点最近一次接收到的一批页面中所包括的最小的LSN,所述GBP结束点指示所述GBP节点最近一次接收到的所述一批页面中所包括的最大的LSN,其中,所述GBP节点上存储的所有页面均是所述主机在正常工作期间,通过第一数据传输协议发送给所述GBP节点,并由所述GBP节点写入到所述GBP节点的缓存队列的,多个页面对应的LSN按照从所述缓存队列的头部到尾部的顺序递增;
在磁盘恢复点大于或等于所述GBP起始点,且磁盘结束点大于或等于所述GBP结束点时,所述回放单元用于回放位于所述GBP恢复点所对应的重做日志和所述磁盘结束点所对应的重做日志之间的所有重做日志;所述磁盘恢复点指示备机的磁盘中最近一批被写入的多个页面所包含的最小的LSN,所述磁盘结束点指示所述备机所接收的最后一条重做日志的LSN。
30.根据权利要求29所述的设备,其特征在于,位于所述磁盘恢复点所对应的重做日志以及所述GBP恢复点所对应的重做日志之间的所有重做日志没有被回放。
31.根据权利要求29或30所述的设备,其特征在于,还包括启动单元,在所述磁盘恢复点大于或等于所述GBP起始点,且所述磁盘结束点大于或等于所述GBP结束点时,所述启动单元用于启动后台线程,所述后台线程用于将所述GBP节点上存储的所有页面拉取到页面缓冲区。
32.根据权利要求31所述的设备,其特征在于,所述后台线程用于通过第二数据传输协议将所述GBP节点上存储的所有页面拉取到页面缓冲区。
33.根据权利要求29、或30、或32所述的设备,其特征在于,还包括读取单元,在所述回放单元回放完重做日志之后,以及在需要被访问的页面还位于所述GBP节点的页面缓冲区时,所述读取单元用于从所述GBP节点的页面缓冲区中读取所述需要被访问的页面。
34.根据权利要求31所述的设备,其特征在于,还包括读取单元,在所述回放单元回放完重做日志之后,以及在需要被访问的页面还位于所述GBP节点的页面缓冲区时,所述读取单元用于从所述GBP节点的页面缓冲区中读取所述需要被访问的页面。
35.一种数据库***的故障修复方法,其特征在于,包括:
在主机正常工作时,所述主机使用第一数据传输协议将多个页面发送给全局页面缓冲池GBP节点;
所述GBP节点将所述多个页面写入所述GBP节点的缓存队列中,所述多个页面对应的日志序列号LSN按照从所述缓存队列的头部到尾部的顺序递增;
在所述主机发生故障时,所述主机确定GBP起始点、GBP恢复点和GBP结束点,所述GBP起始点指示所述GBP节点上存储的所有页面中所包括的最小的LSN,所述GBP恢复点指示所述GBP节点最近一次接收的一批页面中所包括的最小的LSN,所述GBP结束点指示所述GBP节点最近一次接收到的所述一批页面中所包括的最大的LSN;
在磁盘恢复点大于或等于所述GBP起始点,且磁盘结束点大于或等于所述GBP结束点时,所述主机回放位于所述GBP恢复点对应的重做日志和所述磁盘结束点对应的重做日志之间的所有重做日志,其中,所述磁盘恢复点指示本地磁盘最近一批被写入的多个页面中所包括的最小的LSN,所述磁盘结束点指示所接收到的最后一条重做日志的LSN。
36.根据权利要求35所述的故障修复方法,其特征在于,位于所述磁盘恢复点对应的重做日志和所述GBP恢复点对应的重做日志之间的所有重做日志没有被回放。
37.根据权利要求35或36所述的故障修复方法,其特征在于,在所述磁盘恢复点大于或等于所述GBP起始点,且所述磁盘结束点大于或等于所述GBP结束点时,所述方法还包括:
所述主机启动后台线程,所述后台线程用于将位于所述GBP节点上的所有页面拉取到页面缓冲区。
38.根据权利要求35或36所述的故障修复方法,其特征在于,在所述主机执行完回放步骤之后,以及在需要被访问的页面还位于所述GBP节点的页面缓冲区时,所述方法还包括:
所述主机从所述GBP节点的页面缓冲区中读取所述需要被访问的页面。
39.根据权利要求37所述的故障修复方法,其特征在于,在所述主机执行完回放步骤之后,以及在需要被访问的页面还位于所述GBP节点的页面缓冲区时,所述方法还包括:
所述主机从所述GBP节点的页面缓冲区中读取所述需要被访问的页面。
40.一种数据库***,其特征在于,包括主机和全局资源缓冲池GBP节点,
所述主机用于通过第一数据传输协议向所述GBP节点发送多个页面;
所述GBP节点用于将所述多个页面写入所述GBP节点的缓存队列,所述多个页面各自包含的日志序列号LSN按照从所述缓存队列的头部到尾部的顺序递增;
在所述主机发生故障时,所述主机还用于确定GBP起始点、GBP恢复点和GBP结束点,所述GBP起始点指示所述GBP节点上存储的所有页面中所包括的最小的LSN,所述GBP恢复点指示所述GBP节点最近一次接收的一批页面中所包括的最小的LSN,所述GBP结束点指示所述GBP节点最近一次接收到的所述一批页面中所包括的最大的LSN;
在磁盘恢复点大于或等于所述GBP起始点,且磁盘结束点大于或等于所述GBP结束点时,所述主机还用于回放位于所述GBP恢复点对应的重做日志和所述磁盘结束点对应的重做日志之间的所有重做日志,其中,所述磁盘恢复点指示本地磁盘最近一批被写入的多个页面中所包括的最小的LSN,所述磁盘结束点指示所接收到的最后一条重做日志的LSN。
41.根据权利要求40所述的数据库***,其特征在于,位于所述磁盘恢复点对应的重做日志和所述GBP恢复点对应的重做日志之间的所有重做日志没有被回放。
42.根据权利要求40或41所述的数据库***,其特征在于,在所述磁盘恢复点大于或等于所述GBP起始点,且所述磁盘结束点大于或等于所述GBP结束点时,所述主机还用于启动后台线程,所述后台线程用于将位于所述GBP节点上的所有页面拉取到页面缓冲区。
43.根据权利要求40或41所述的数据库***,其特征在于,在所述主机执行完回放步骤之后,以及在需要被访问的页面还位于所述GBP节点的页面缓冲区时,所述主机还用于从所述GBP节点的页面缓冲区中读取所述需要被访问的页面。
44.根据权利要求42所述的数据库***,其特征在于,在所述主机执行完回放步骤之后,以及在需要被访问的页面还位于所述GBP节点的页面缓冲区时,所述主机还用于从所述GBP节点的页面缓冲区中读取所述需要被访问的页面。
45.一种数据库***的故障修复方法,其特征在于,包括:
在正常工作时,通过第一数据传输协议将多个页面发送给全局页面缓冲池GBP节点,所述多个页面被写入所述GBP节点的缓存队列,所述多个页面对应的日志序列号LSN按照从所述缓存队列的头部到尾部的顺序递增;
在发生故障时,确定GBP起始点、GBP恢复点和GBP结束点,所述GBP起始点指示所述GBP节点上存储的所有页面中所包括的最小的LSN,所述GBP恢复点指示所述GBP节点最近一次接收的一批页面中所包括的最小的LSN,所述GBP结束点指示所述GBP节点最近一次接收到的所述一批页面中所包括的最大的LSN;
在磁盘恢复点大于或等于所述GBP起始点,且磁盘结束点大于或等于所述GBP结束点时,回放位于所述GBP恢复点对应的重做日志和所述磁盘结束点对应的重做日志之间的所有重做日志,其中,所述磁盘恢复点指示本地磁盘最近一批被写入的多个页面中所包括的最小的LSN,所述磁盘结束点指示所接收到的最后一条重做日志的LSN。
46.一种计算设备,其特征在于,包括:
传输单元,用于通过第一数据传输协议将多个页面发送给全局页面缓冲池GBP节点,所述多个页面被写入所述GBP节点的缓存队列,所述多个页面对应的日志序列号LSN按照从所述缓存队列的头部到尾部的顺序递增;
在发送故障时,确定单元,用于确定GBP起始点、GBP恢复点和GBP结束点,所述GBP起始点指示所述GBP节点上存储的所有页面中所包括的最小的LSN,所述GBP恢复点指示所述GBP节点最近一次接收的一批页面中所包括的最小的LSN,所述GBP结束点指示所述GBP节点最近一次接收到的所述一批页面中所包括的最大的LSN;
在磁盘恢复点大于或等于所述GBP起始点,且磁盘结束点大于或等于所述GBP结束点时,回放单元,用于回放位于所述GBP恢复点对应的重做日志和所述磁盘结束点对应的重做日志之间的所有重做日志,其中,所述磁盘恢复点指示本地磁盘最近一批被写入的多个页面中所包括的最小的LSN,所述磁盘结束点指示所接收到的最后一条重做日志的LSN。
Priority Applications (5)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910395371.7A CN111930558B (zh) | 2019-05-13 | 2019-05-13 | 数据库***的故障修复方法、数据库***和计算设备 |
EP20806356.0A EP3961400B1 (en) | 2019-05-13 | 2020-05-13 | Method for repairing database system failures, database system and computing device |
CA3137745A CA3137745C (en) | 2019-05-13 | 2020-05-13 | Fault repair method for database system, database system, and computing device |
PCT/CN2020/089909 WO2020228712A1 (zh) | 2019-05-13 | 2020-05-13 | 数据库***的故障修复方法、数据库***和计算设备 |
US17/525,415 US11829260B2 (en) | 2019-05-13 | 2021-11-12 | Fault repair method for database system, database system, and computing device |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910395371.7A CN111930558B (zh) | 2019-05-13 | 2019-05-13 | 数据库***的故障修复方法、数据库***和计算设备 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111930558A CN111930558A (zh) | 2020-11-13 |
CN111930558B true CN111930558B (zh) | 2023-03-03 |
Family
ID=73282691
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910395371.7A Active CN111930558B (zh) | 2019-05-13 | 2019-05-13 | 数据库***的故障修复方法、数据库***和计算设备 |
Country Status (5)
Country | Link |
---|---|
US (1) | US11829260B2 (zh) |
EP (1) | EP3961400B1 (zh) |
CN (1) | CN111930558B (zh) |
CA (1) | CA3137745C (zh) |
WO (1) | WO2020228712A1 (zh) |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP7363413B2 (ja) * | 2019-11-27 | 2023-10-18 | 富士通株式会社 | 情報処理装置、情報処理システム及びプログラム |
CN112395141B (zh) * | 2020-11-25 | 2023-07-21 | 上海达梦数据库有限公司 | 一种数据页管理方法、装置、电子设备及存储介质 |
US20220261356A1 (en) * | 2021-02-16 | 2022-08-18 | Nyriad, Inc. | Cache operation for a persistent storage device |
CN113254277B (zh) * | 2021-06-15 | 2021-11-02 | 云宏信息科技股份有限公司 | 存储集群osd故障修复方法、存储介质、监视器及存储集群 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5333303A (en) * | 1991-03-28 | 1994-07-26 | International Business Machines Corporation | Method for providing data availability in a transaction-oriented system during restart after a failure |
CN104216806A (zh) * | 2014-07-24 | 2014-12-17 | 英方软件(上海)有限公司 | 一种文件***序列化操作日志的捕获与传输方法及其装置 |
CN104573112A (zh) * | 2015-01-30 | 2015-04-29 | 华为技术有限公司 | Oltp集群数据库中页面查询方法及数据处理节点 |
CN106815275A (zh) * | 2015-12-02 | 2017-06-09 | 阿里巴巴集团控股有限公司 | 一种通过备用数据库实现主备数据库同步的方法与设备 |
Family Cites Families (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5951695A (en) * | 1997-07-25 | 1999-09-14 | Hewlett-Packard Company | Fast database failover |
US7277905B2 (en) | 2004-03-31 | 2007-10-02 | Microsoft Corporation | System and method for a consistency check of a database backup |
US7831772B2 (en) * | 2006-12-12 | 2010-11-09 | Sybase, Inc. | System and methodology providing multiple heterogeneous buffer caches |
US9135123B1 (en) * | 2011-12-28 | 2015-09-15 | Emc Corporation | Managing global data caches for file system |
CN103530253B (zh) | 2013-09-30 | 2016-08-17 | 华为技术有限公司 | 集群多全局缓冲池***、中心节点、计算节点及管理方法 |
US9767178B2 (en) * | 2013-10-30 | 2017-09-19 | Oracle International Corporation | Multi-instance redo apply |
CN103729442B (zh) * | 2013-12-30 | 2017-11-24 | 华为技术有限公司 | 记录事务日志的方法和数据库引擎 |
US9772911B2 (en) * | 2015-03-27 | 2017-09-26 | International Business Machines Corporation | Pooling work across multiple transactions for reducing contention in operational analytics systems |
US10452491B2 (en) * | 2016-04-14 | 2019-10-22 | Sap Se | Scalable log partitioning system |
CN108363641B (zh) * | 2017-01-26 | 2022-01-14 | 华为技术有限公司 | 一种主备机数据传递方法、控制节点以及数据库*** |
US10769034B2 (en) * | 2017-03-07 | 2020-09-08 | Sap Se | Caching DML statement context during asynchronous database system replication |
CN108874588A (zh) * | 2018-06-08 | 2018-11-23 | 郑州云海信息技术有限公司 | 一种数据库实例恢复方法和装置 |
-
2019
- 2019-05-13 CN CN201910395371.7A patent/CN111930558B/zh active Active
-
2020
- 2020-05-13 EP EP20806356.0A patent/EP3961400B1/en active Active
- 2020-05-13 CA CA3137745A patent/CA3137745C/en active Active
- 2020-05-13 WO PCT/CN2020/089909 patent/WO2020228712A1/zh unknown
-
2021
- 2021-11-12 US US17/525,415 patent/US11829260B2/en active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5333303A (en) * | 1991-03-28 | 1994-07-26 | International Business Machines Corporation | Method for providing data availability in a transaction-oriented system during restart after a failure |
CN104216806A (zh) * | 2014-07-24 | 2014-12-17 | 英方软件(上海)有限公司 | 一种文件***序列化操作日志的捕获与传输方法及其装置 |
CN104573112A (zh) * | 2015-01-30 | 2015-04-29 | 华为技术有限公司 | Oltp集群数据库中页面查询方法及数据处理节点 |
CN106815275A (zh) * | 2015-12-02 | 2017-06-09 | 阿里巴巴集团控股有限公司 | 一种通过备用数据库实现主备数据库同步的方法与设备 |
Non-Patent Citations (1)
Title |
---|
Oracle_RAC数据库缓存优化策略探究;杜立林;《湖南工业职业技术学院学报》;20111031;第11卷(第5期);第22-23页 * |
Also Published As
Publication number | Publication date |
---|---|
EP3961400A1 (en) | 2022-03-02 |
EP3961400A4 (en) | 2022-07-06 |
CA3137745C (en) | 2024-04-02 |
EP3961400B1 (en) | 2023-07-05 |
US20220066886A1 (en) | 2022-03-03 |
CA3137745A1 (en) | 2020-11-19 |
US11829260B2 (en) | 2023-11-28 |
WO2020228712A1 (zh) | 2020-11-19 |
CN111930558A (zh) | 2020-11-13 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111930558B (zh) | 数据库***的故障修复方法、数据库***和计算设备 | |
US9753663B1 (en) | Triangular asynchronous replication | |
US9606739B1 (en) | Virtual ordered writes for multiple storage devices | |
US9268658B2 (en) | Failover to backup site in connection with triangular asynchronous replication | |
US7228456B2 (en) | Data recovery for virtual ordered writes for multiple storage devices | |
US7383408B2 (en) | Storage device that uses virtual ordered writes | |
US7051176B2 (en) | Reading data provided to a remote storage device | |
US7430646B2 (en) | Planned switchover in connection with triangular asynchronous replication | |
US10599630B2 (en) | Elimination of log file synchronization delay at transaction commit time | |
US20070234106A1 (en) | Resumption of operations following failover in connection with triangular asynchronous replication | |
US20040193802A1 (en) | Reading virtual ordered writes at local storage device | |
US20070234105A1 (en) | Failover to asynchronous backup site in connection with triangular asynchronous replication | |
GB2418754A (en) | Methods for backing up data to a remote and a local storage units asynchronously in the form of data chunks covering a known period of time. | |
US8601209B1 (en) | Maintaining dasd and tape continuous availability | |
US20050198454A1 (en) | Switching between virtual ordered writes mode and synchronous or semi-synchronous RDF transfer mode | |
CN110196788B (zh) | 一种数据读取方法、装置、***及存储介质 | |
US8942073B1 (en) | Maintaining tape emulation consistency | |
US20150019822A1 (en) | System for Maintaining Dirty Cache Coherency Across Reboot of a Node | |
KR101786874B1 (ko) | 데이터의 일관성을 보장하는 상태기기 기반의 복제 및 체크포인트데이터와 복제로그를 이용한 분산 복구를 처리하는 데이터 복제 방법 및 데이터 저장 시스템 | |
JP2006012142A (ja) | 非ディスク永続メモリを利用したチェックポイント方法およびシステム | |
GB2434893A (en) | Method for storing recovery data at a remote site as chucks of data covering known time periods, with synchronous data sent to a local minimal storage | |
Liao et al. | Rapid Resynchronization Method for Replication In-Memory Databases Supporting Mobile Communication Applications |
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 |