数据库系统的故障修复方法、数据库系统和计算设备技术方案

技术编号:26342233 阅读:74 留言:0更新日期:2020-11-13 20:31
本申请涉及数据库系统的故障修复方法,该方法采用了全局页面缓冲池GBP节点。具体的,主机在正常工作期间,通过低时延、高吞吐的数据传输协议(比如远程直接内存访问RDMA协议),将因为事务修改产生的被修改页面备份到GBP节点上,这样在主机发生故障时,备机不需要回放剩余没有回放的所有重做日志,而只需要将GBP节点上不存在的页面以及没有顺序排列的页面对应的重做日志进行回放并获得这部分页面,备机就能够被提升为主机,或者说该数据库系统的故障就能够被修复了。

The method of database system fault repair, database system and computing equipment

【技术实现步骤摘要】
数据库系统的故障修复方法、数据库系统和计算设备
本申请涉及数据库
,尤其涉及数据库系统的故障修复方法,以及对应的数据库系统和计算设备。
技术介绍
图1示出了一种数据库系统,包括主机110和备机130,主机110和备机130的设置是为了保证该数据库系统的可靠性。主机110和备机130各自有自己的数据存储和日志存储,主机110修改页面(page)会产生重做日志(redolog),主机110将重做日志传输给备机,备机130接收重做日志并回放,从而达到备机130与主机110数据同步的目的。备机130接收重做日志和回放重做日志是两个并行的过程,备机130可以批量接收重做日志并写入本地内存,同时逐条回放重做日志。通常情况下,日志回放速度慢于日志接收速度,比如接收了10G的日志,可能仅回放了8G的日志,有2G的日志待回放。在主机110发生故障时,备机130需要将接收到的所有重做日志全部回放完,才能与故障发生前的主机110同步以及替代该主机110成为新的主机(也被称为“故障转移”或“数据库系统恢复”)。恢复时间目标(RecoveryTimeObjective,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节点的缓本文档来自技高网...

【技术保护点】
1.一种数据库系统的故障修复方法,其特征在于,包括:/n在主机正常工作时,所述主机使用第一数据传输协议将多个页面发送给全局页面缓冲池GBP节点,/n所述GBP节点将所述多个页面写入到所述GBP节点的缓存队列,且所述多个页面对应的日志序列号LSN按照从所述缓存队列的头部到尾部的顺序递增;/n在所述主机发生故障时,所述备机确定GBP起始点、GBP恢复点和GBP结束点,所述GBP起始点指示所述GBP节点上存储的所有页面中所包括的最小的LSN;所述GBP恢复点指示所述GBP节点最近一次接收到的一批页面中所包括的最小的LSN;所述GBP结束点指示所述GBP节点最近一次接收到的所述一批页面中所包括的最大的LSN;/n在磁盘恢复点大于或等于所述GBP起始点,且磁盘结束点大于或等于所述GBP结束点时,所述备机回放位于所述GBP恢复点所对应的重做日志和所述磁盘结束点所对应的重做日志之间的所有重做日志,所述磁盘恢复点指示所述备机的磁盘中最近一批被写入的多个页面所包含的最小的LSN,所述磁盘结束点指示所述备机所接收的最后一条重做日志的LSN。/n

【技术特征摘要】
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或2所述的故障修复方法,其特征在于,所述GBP节点维护了所述GBP恢复点和所述GBP结束点,则在所述GBP节点在将所述多个页面写入到所述GBP节点的缓存队列之后,所述方法还包括:
所述GBP节点根据所述多个页面,更新所述GBP恢复点和所述GBP结束点;
所述备机确定GBP恢复点和GBP结束点,包括:
所述备机从所述GBP节点中获取更新后的所述GBP恢复点和所述GBP结束点。


4.根据权利要求1或2所述的故障修复方法,其特征在于,所述GBP节点维护所述GBP起始点,
在所述GBP节点接收到所述GBP节点的页面缓冲区中不存在的新页面且所述GBP节点的页面缓冲区已满时,所述方法还包括:
所述GBP节点将位于所述缓存队列头部的页面淘汰掉,并将所述GBP起始点更新为所述缓存队列的新的头部页面对应的LSN;
所述备机确定GBP起始点,包括:所述备机从所述GBP节点中获取更新后的所述GBP起始点。


5.根据权利要求1或2所述的故障修复方法,其特征在于,
在所述GBP节点接收到所述GBP节点的页面缓冲区中不存在的新页面时,
所述GBP节点将所述多个页面写入到所述GBP节点的缓存队列,包括:
所述GBP节点将所述新页面放入所述缓存队列的尾部;
在所述GBP节点接收到所述GBP节点的页面缓冲区中已经存在的新页面时,
所述GBP节点将所述多个页面写入到所述GBP节点的缓存队列,包括:
所述GBP节点根据接收到的所述新页面对已经存在的对应页面进行更新,并将更新后的所述新页面放在所述缓存队列的尾部。


6.根据权利要求1至5任一项所述的故障修复方法,其特征在于,还包括:在所述磁盘恢复点大于或等于所述GBP起始点,且所述磁盘结束点大于或等于所述GBP结束点时,所述备机启动后台线程,所述后台线程用于将所述GBP节点上存储的所有页面拉取到所述备机的页面缓冲区。


7.根据权利要求6所述的故障修复方法,其特征在于,所述后台线程用于通过第二数据传输协议将所述GBP节点上存储的所有页面拉取到所述备机的页面缓冲区。


8.根据权利要求1至7任一项所述的故障修复方法,其特征在于,在所述备机执行完回放步骤之后,以及在所述备机上的应用需要访问的页面还位于所述GBP节点的页面缓冲区时,则所述应用从所述GBP节点的页面缓冲区中读取所述需要访问的页面。


9.一种数据库系统,其特征在于,包括主机、备机和全局页面缓冲池GBP节点;
所述主机用于通过第一数据传输协议将多个页面发送给所述GBP节点;
所述GBP节点用于将所述多个页面写入到所述GBP节点的缓存队列,且所述多个页面对应的日志序列号LSN按照从所述缓存队列的头部到尾部的顺序递增;
在所述主机发生故障时,所述备机用于确定GBP起始点、GBP恢复点和GBP结束点,所述GBP起始点指示所述GBP节点上存储的所有页面中所包括的最小的日志序列号LSN,所述GBP恢复点指示所述GBP节点最近一次接收到的一批页面中所包括的最小的LSN,所述GBP结束点指示所述GBP节点最近一次接收到的所述一批页面中所包括的最大的LSN;
在磁盘恢复点大于或等于所述GBP起始点,且磁盘结束点大于或等于所述GBP结束点的情况下,所述备机还用于回放位于所述GBP恢复点所对应的重做日志和所述磁盘结束点所对应的重做日志之间的所有重做日志,其中,所述磁盘恢复点指示所述备机的磁盘中最近一批被写入的多个页面所包含的最小的LSN,所处磁盘结束点指示所述备机所接收的最后一条重做日志的LSN。


10.根据权利要求9所述的系统,其特征在于,位于所述磁盘恢复点所对应的重做日志和所述GBP恢复点所对应的重做日志之间的所有重做日志没有被回放。


11.根据权利要求9或10所述的系统,其特征在于,在将所述多个页面写入到所述GBP节点的缓存队列之后,所述GBP节点还用于根据所述多个页面,更新所述GBP恢复点和所述GBP结束点;
相应的,所述备机还用于从所述GBP节点中获取更新后的所述GBP恢复点和所述GBP结束点。


12.根据权利要求9或10所述的系统,其特征在于,在所述GBP节点接收到所述GBP节点的页面缓冲区中不存在的新页面且所述GBP节点的页面缓冲区已满时,所述GBP节点还用于将位于所述缓存队列头部的页面淘汰掉,并将所述GBP起始点更新为所述缓存队列的新的头部页面对应的LSN;
相应的,所述备机还用于从所述GBP节点中获取更新后的所述GBP起始点。


13.根据权利要求9或10所述的系统,其特征在于,
在所述GBP节点接收到所述GBP节点的页面缓冲区中不存在的新页面时,所述GBP节点还用于将所述新页面放入所述缓存队列的尾部;或,
在所述GBP节点接收到所述GBP节点的页面缓冲区中已经存在的新页面时,所述GBP节点还用于根据接收到的所述新页面对已经存在的对应页面进行更新,并将更新后的所述新页面放在所述缓存队列的尾部。


14.根据权利要求9至13任一项所述的系统,其特征在于,在所述磁盘恢复点大于或等于所述GBP起始点,且所述磁盘结束点大于或等于所述GBP结束点时,所述备机还用于启动后台线程,所述后台线程用于将所述GBP节点上存储的所有页面拉取到的所述备机的页面缓冲区。


15.根据权利要求14所述的系统,其特征在于,所述后台线程用于通过第二数据传输协议将所述GBP节点上存储的所有页面拉取到的所述备机的页面缓冲区。


16.一种数据库系统的故障修复方法,其特征在于,包括:
在主机发生故障时,确定全局页面缓冲池GBP起始点、GBP恢复点和GBP结束点,所述GBP起始点指示GBP节点上存储的所有页面中所包括的最小的日志序列号LSN,所述GBP恢复点指示所述GBP节点最近一次接收到的一批页面中所包括的最小的LSN,所述GBP结束点指示所述GBP节点最近一次接收到的所述一批页面中所包括的最大的LSN,其中,所述GBP节点上存储的所有页面均是所述主机在正常工作期间,通过第一数据传输协议发送给所述GBP节点,并由所述GBP节点写入到所述GBP节点的缓存队列的,所述多个页面对应的LSN按照从所述缓存队列的头部到尾部的顺序递增;
在磁盘恢复点大于或等于所述GBP起始点,且磁盘结束点大于或等于所述GBP结束点时,回放位于所述GBP恢复点所对应的重做日志和所述磁盘结束点所对应的重做日志之间的所有重做日志;所述磁盘恢复点指示所述备机的磁盘中最近一批被写入的多个页面所包含的最小的LSN,所述磁盘结束点指示所述备机所接收的最后一条重做日志的LSN。


17.根据权利要求16所述的故障修复方法,其特征在于,位于所述磁盘恢复点所对应的重做日志以及所述GBP恢复点所对应的重做日志之间的所有重做日志没有被回放。


18.根据权利要求16或17所述的故障修复方法,其特征在于,在所述磁盘恢复点大于或等于所述GBP起始点,且所述磁盘结束点大于或等于所述GBP结束点时,所述方法还包括:启动后台线程,所述后台线程用于将所述GBP节点上存储的所有页面拉取到页面缓冲区。

【专利技术属性】
技术研发人员:王传廷朱仲楚邢玉辉
申请(专利权)人:华为技术有限公司
类型:发明
国别省市:广东;44

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

1