数据库备机的并行回放方法、装置、电子设备及介质制造方法及图纸

技术编号:37348078 阅读:47 留言:0更新日期:2023-04-22 21:44
本申请涉及一种数据库备机的并行回放方法、装置、电子设备及介质,其中,方法包括:接收并存储数据库主机发送的目标事务的逻辑日志;将逻辑日志按照目标事务的事务粒度进行划分,得到多个子逻辑日志,并将多个子逻辑日志均匀分发至多个回放队列;调用回放线程组,并利用回放线程组中的多个回放线程消费各自对应的回放队列,以在备机上对目标事务进行事务回放。通过多线程流水线作业式地并行回放逻辑日志,每一个线程独立进行流水线作业,解决了高并发下备机回放时延高的问题。并发下备机回放时延高的问题。并发下备机回放时延高的问题。

【技术实现步骤摘要】
数据库备机的并行回放方法、装置、电子设备及介质


[0001]本申请涉及数据库
,尤其涉及一种数据库备机的并行回放方法、装置、电子设备及介质。

技术介绍

[0002]当前无论是分布式数据库还是单机数据库,一般都是主从架构,目的是为了在主机异常时,能够提供高可用服务。故障恢复耗时与备机的回放时间强相关,备机回放时间越长,故障恢复耗时时间就越长,当并发较高,写压力较大时,其备机回放时延会随着压测时间增加而变大,进而可能导致故障恢复耗时不满足生产要求。
[0003]针对上述的问题,目前尚未提出有效的解决方案。

技术实现思路

[0004]本申请提供了一种数据库备机的并行回放方法、装置、电子设备及可读介质,以解决上述高并发下备机回放时延高的技术问题。
[0005]根据本申请实施例的一个方面,本申请提供了一种数据库备机的并行回放方法,包括:接收并存储数据库主机发送的目标事务的逻辑日志;将逻辑日志按照目标事务的事务粒度进行划分,得到多个子逻辑日志,并将多个子逻辑日志均匀分发至多个回放队列;调用回放线程组,并利用回放线程组中的多个回放线程消费各自对应的回放队列,以在备机上对目标事务进行事务回放。
[0006]可选地,接收并存储数据库主机发送的目标事务的逻辑日志包括:在输入输出线程接收到数据库主机发送的逻辑日志的情况下,将逻辑日志存放至写盘队列;调用写盘线程消费写盘队列,以将写盘队列中的逻辑日志存储至中继日志文件。
[0007]可选地,将逻辑日志按照目标事务的事务粒度进行划分,得到多个子逻辑日志,并将多个子逻辑日志均匀分发至多个回放队列包括:调用读取线程读取中继日志文件中的逻辑日志;将逻辑日志放入分发队列;调用分发线程消费分发队列,以接收逻辑日志,并将逻辑日志按照目标事务的事务粒度进行划分,得到多个子逻辑日志,其中,事务粒度对应目标事务的子事务;按照子事务的先后顺序将多个子逻辑日志均匀分发至多个回放队列。
[0008]可选地,所述方法还包括:在回放线程每完成一个子事务的回放后,提交子事务的回放结果。
[0009]可选地,所述方法还包括:在调用回放线程组的同时,调用日志转换线程监听回放线程组;在日志转换线程监听到回放线程组中的任一回放线程提交的目标子事务的回放结果的情况下,从中继日志文件中提取出目标子事务的目标子逻辑日志;将目标子逻辑日志写入备机的备机逻辑日志。
[0010]可选地,所述方法还包括:在数据库备机崩溃恢复的情况下,从中继日志文件中恢复备机逻辑日志。
[0011]根据本申请实施例的另一方面,本申请提供了一种数据库备机的并行回放装置,
包括:接收模块,用于接收并存储数据库主机发送的目标事务的逻辑日志;分发模块,用于将逻辑日志按照目标事务的事务粒度进行划分,得到多个子逻辑日志,并将多个子逻辑日志均匀分发至多个回放队列;回放模块,用于调用回放线程组,并利用回放线程组中的多个回放线程消费各自对应的回放队列,以在备机上对目标事务进行事务回放。
[0012]可选地,接收模块包括:存放单元,用于在输入输出线程接收到数据库主机发送的逻辑日志的情况下,将逻辑日志存放至写盘队列;存储单元,用于调用写盘线程消费写盘队列,以将写盘队列中的逻辑日志存储至中继日志文件。
[0013]根据本申请实施例的另一方面,本申请提供了一种电子设备,包括存储器、处理器、通信接口及通信总线,存储器中存储有可在处理器上运行的计算机程序,存储器、处理器通过通信总线和通信接口进行通信,处理器执行计算机程序时实现上述方法的步骤。
[0014]根据本申请实施例的另一方面,本申请还提供了一种具有处理器可执行的非易失的程序代码的计算机可读介质,程序代码使处理器执行上述的方法。
[0015]本申请实施例提供的上述技术方案与相关技术相比具有如下优点:
[0016]本申请通过一种数据库备机的并行回放方法,包括:接收并存储数据库主机发送的目标事务的逻辑日志;将逻辑日志按照目标事务的事务粒度进行划分,得到多个子逻辑日志,并将多个子逻辑日志均匀分发至多个回放队列;调用回放线程组,并利用回放线程组中的多个回放线程消费各自对应的回放队列,以在备机上对目标事务进行事务回放。通过多线程流水线作业式地并行回放逻辑日志,每一个线程独立进行流水线作业,解决了高并发下备机回放时延高的问题。
附图说明
[0017]此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本申请的实施例,并与说明书一起用于解释本申请的原理。
[0018]为了更清楚地说明本申请实施例或相关技术中的技术方案,下面将对实施例或相关技术描述中所需要使用的附图作简单地介绍,显而易见地,对于本领域普通技术人员而言,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
[0019]图1为根据本申请实施例提供的一种可选的数据库备机的并行回放方法的流程图;
[0020]图2为根据本申请实施例提供的一种可选的分布式数据库总体架构图;
[0021]图3为根据本申请实施例提供的一种可选的多线程流水线作业式的逻辑日志并行回放方法原理图;
[0022]图4为根据本申请实施例提供的一种可选的备机回放异步生成逻辑日志的技术原理图;
[0023]图5为根据本申请实施例提供的一种可选的数据库备机的并行回放实施例的示意图;
[0024]图6为根据本申请实施例提供的一种可选的数据库备机的并行回放装置的框图;
[0025]图7为本申请实施例提供的一种可选的电子设备结构示意图。
具体实施方式
[0026]为使本申请实施例的目的、技术方案和优点更加清楚,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本申请的一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本申请保护的范围。
[0027]在后续的描述中,使用用于表示元件的诸如“模块”、“部件”或“单元”的后缀仅为了有利于本申请的说明,其本身并没有特定的意义。因此,“模块”与“部件”可以混合地使用。
[0028]当前无论是分布式数据库还是单机数据库,一般都是主从架构,目的是为了在主机异常时,能够提供高可用服务。RTO(Recovery time objective)指的是故障恢复耗时,该时间与备机的回放时间强相关,备机回放时间越长,RTO时间就越长,进而可能导致RTO时间不满足生产要求。
[0029]当前数据库备机上基于逻辑日志的备机回放在写压力不大时,其没有回放时延。但是当并发较高,写压力较大时,其备机回放时延会随着压测时间增加而变大,实际测试表明,采用sysbench的纯写模型高并发压测10分钟,备机的回放时延超过了100秒。通常金融核心的生产系统中,RTO的时间要求在60秒以内,部分可能会要求在30秒以内。因此,在写压力较大的场景下,基于逻辑日志回放的数据库本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种数据库备机的并行回放方法,其特征在于,包括:接收并存储数据库主机发送的目标事务的逻辑日志;将所述逻辑日志按照所述目标事务的事务粒度进行划分,得到多个子逻辑日志,并将多个所述子逻辑日志均匀分发至多个回放队列;调用回放线程组,并利用所述回放线程组中的多个回放线程消费各自对应的所述回放队列,以在所述备机上对所述目标事务进行事务回放。2.根据权利要求1所述的方法,其特征在于,所述接收并存储数据库主机发送的目标事务的逻辑日志包括:在输入输出线程接收到所述数据库主机发送的所述逻辑日志的情况下,将所述逻辑日志存放至写盘队列;调用写盘线程消费所述写盘队列,以将所述写盘队列中的所述逻辑日志存储至中继日志文件。3.根据权利要求2所述的方法,其特征在于,所述将所述逻辑日志按照所述目标事务的事务粒度进行划分,得到多个子逻辑日志,并将多个所述子逻辑日志均匀分发至多个回放队列包括:调用读取线程读取所述中继日志文件中的所述逻辑日志;将所述逻辑日志放入分发队列;调用分发线程消费所述分发队列,以接收所述逻辑日志,并将所述逻辑日志按照所述目标事务的所述事务粒度进行划分,得到多个所述子逻辑日志,其中,所述事务粒度对应所述目标事务的子事务;按照所述子事务的先后顺序将多个所述子逻辑日志均匀分发至多个回放队列。4.根据权利要求3所述的方法,其特征在于,所述方法还包括:所述在回放线程每完成一个所述子事务的回放后,提交所述子事务的回放结果。5.根据权利要求4所述的方法,其特征在于,所述方法还包括:在调用所述回放线程组的同时,调用日志转换线程监听所述回放线程组;在所述日志转换线程监听到...

【专利技术属性】
技术研发人员:周亚运
申请(专利权)人:金篆信科有限责任公司
类型:发明
国别省市:

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

1