CN112416654B - 一种数据库日志重演方法、装置、设备及存储介质 - Google Patents

一种数据库日志重演方法、装置、设备及存储介质 Download PDF

Info

Publication number
CN112416654B
CN112416654B CN202011349368.0A CN202011349368A CN112416654B CN 112416654 B CN112416654 B CN 112416654B CN 202011349368 A CN202011349368 A CN 202011349368A CN 112416654 B CN112416654 B CN 112416654B
Authority
CN
China
Prior art keywords
log
replay
data page
redo
address information
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
Application number
CN202011349368.0A
Other languages
English (en)
Other versions
CN112416654A (zh
Inventor
王海龙
韩朱忠
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Shanghai Dameng Database Co Ltd
Original Assignee
Shanghai Dameng Database Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Shanghai Dameng Database Co Ltd filed Critical Shanghai Dameng Database Co Ltd
Priority to CN202011349368.0A priority Critical patent/CN112416654B/zh
Publication of CN112416654A publication Critical patent/CN112416654A/zh
Application granted granted Critical
Publication of CN112416654B publication Critical patent/CN112416654B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • G06F11/1402Saving, restoring, recovering or retrying
    • G06F11/1471Saving, restoring, recovering or retrying involving logging of persistent data for recovery
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • G06F11/1402Saving, restoring, recovering or retrying
    • G06F11/1446Point-in-time backing up or restoration of persistent data
    • G06F11/1458Management of the backup or restore process
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • G06F11/1402Saving, restoring, recovering or retrying
    • G06F11/1446Point-in-time backing up or restoration of persistent data
    • G06F11/1458Management of the backup or restore process
    • G06F11/1469Backup restoration techniques
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5027Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2201/00Indexing scheme relating to error detection, to error correction, and to monitoring
    • G06F2201/80Database-specific techniques
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/50Indexing scheme relating to G06F9/50
    • G06F2209/5018Thread allocation

Abstract

本发明公开了一种数据库日志重演方法、装置、设备及存储介质。该方法包括:根据并行度参数创建至少两个重演线程;接收主库发送的至少一个Redo日志包,根据所述至少一个Redo日志包确定数据页地址信息;根据所述数据页地址信息和并行度参数将所述至少一个日志包依次分配给所述至少两个重演线程进行数据库日志重演,通过本发明的技术方案,以实现能够通过创建多个重演线程,多个重演线程共同完成Redo日志的重演任务。每个重演线程仅重演其中一部分数据页,由多个重演线程并行地重演Redo日志。将原先Redo日志由单个线程串行重演,转化为多个线程并行重演,充分利用多CPU的计算能力,不但可以提升Redo日志重演性能,也提升了故障重启速度和还原恢复速度。

Description

一种数据库日志重演方法、装置、设备及存储介质
技术领域
本发明实施例涉及数据库技术,尤其涉及一种数据库日志重演方法、装置、设备及存储介质。
背景技术
Redo日志是数据库管理系统中的一个重要功能模块,数据库故障重启时,可通过重演Redo日志,将数据库恢复到系统故障前的状态。
Redo日志包含了所有物理数据页的修改内容,Insert、delete或者update等DML操作、Create Table等DDL操作,最终都会转化为对物理数据页的修改,这些修改都会反映到Redo日志中。一般说来一条修改数据的SQL语句(比如Insert),在系统内部会转化为多个相互独立的物理事务来完成,物理事务提交时会将产生的Redo日志写入日志包RLOG_PKG中。
一个物理事务(下文简称PTX)包含一个或者多个Redo记录(RREC),每个RREC都对应一个数据库内部的修改动作。根据记录内容的不同,RREC可以分为两类:物理RREC和逻辑RREC。物理RREC记录的是数据页的变化情况,记录内容包括:操作类型、修改数据页地址、页内偏移、数据长度和修改内容。逻辑RREC记录的是一些数据库逻辑操作步骤,主要包括:事务启动、事务提交、事务回滚、字典封锁、事务封锁、B树封锁、字典淘汰等。
Redo日志包(RLOG_PKG)是批量保存Redo日志的数据单元。一个日志包内可保存一个或多个PTX产生的Redo日志,一个PTX产生的Redo日志只能保存在一个日志包中。日志包具有自描述的特性,日志包大小不固定,可分为包头和包体两个部分。包头采用固定包头和可变包头相结合的方式,记录日志的控制信息,包括类型、长度、包序号、LSN信息、产生日志的节点号、加密压缩信息、日志包内并行数等内容,其中包序号是一个全局唯一、递增的数值。包体记录具体的Redo日志内容。RLOG_PKG日志包分两种类型,一种是串行日志包,一种是并行日志包,串行日志包只需要固定包头即可,并行日志包需要用到可变包头,记录每路并行日志在包内的偏移位置,由于并行数不确定,所以这部分信息是变长的,也就是可变包头。
物理事务(PTX)提交时将Redo日志写入到日志包中,在数据库事务(简称TRX)提交或日志包被写满时触发日志刷盘动作。日志刷盘线程负责将日志包中的Redo日志写入联机日志文件。
主备集群中,主库以RLOG_PKG为单位发送主库的Redo日志到备库。备库通过重演主库的Redo日志,得到和主库一样的数据库文件。
Redo日志重演就是解析Redo日志,根据RREC记录的数据页地址和修改内容,重新修改数据页。Redo日志重演是数据库故障恢复、数据库还原恢复、以及数据库主备集群的实现基础。Redo日志重演的速度,决定了数据库故障恢复、数据库还原恢复、以及数据库主备集群的性能上限。
一般的Redo日志重演的流程大致包括日志包加载、数据页预加载和Redo日志重演三部分,这三部分功能,分别由一个单独的线程负责处理。故障重启时,从联机日志加载日志包,还原恢复时从归档日志文件加载日志包,备库重演则从主库接收日志包;数据页预加载则解析日志包,将Redo日志修改的数据页提前从磁盘加载到数据库缓冲区中;日志重演则解析Redo日志,将数据页的修改内容,重新写入到缓冲区内的数据页中。
这种日志重演处理机制将日志包加载、数据页预加载和Redo日志重演三者并行处理,以达到提升Redo日志重演性能的目的,基本可满足一般应用系统的性能要求。比如,数据库主备集群中,数据库缓冲区往往不足以存放所有数据,磁盘IO是系统最大的瓶颈,并且主库还承担了大量的查询操作,insert、delete、update操作比例往往远小于select操作。备库通过上述并行处理机制,可以适应主库日志的产生速度,备库Redo日志重演速度并不成为主备集群的性能瓶颈。
但随着硬件能力的提升,CPU的核数在不断增加,内存也不断增大,甚至有些系统的内存足够存放所有数据。比如,主备库分别部署在一台128核的机器上,所有数据已经加载到内存中,应用仅连接主库进行操作,其中80%为select操作,20%为insert、delete、update等操作。Select操作是不产生Redo日志的,只有insert、delete、update等会产生Redo日志。在主库CPU利用率为80%的情况下,大约有128*0.8*0.2=20.48个CPU核的计算能力会产生Redo日志。
但是,备库由一个线程负责Redo日志重演的机制,决定了备库仅能有效利用1个CPU核的计算能力,与主库超过20核CPU的计算能力不相匹配,拖慢了数据库主备集群的整体性能。备库Redo日志重演速度已经成为制约数据守护集群的性能瓶颈,亟需优化。
发明内容
本发明实施例提供一种数据库日志重演方法、装置、设备及存储介质,以实现能够通过创建多个重演线程,多个重演线程共同完成Redo日志的重演任务。每个重演线程仅重演其中一部分数据页,由多个重演线程并行地重演Redo日志。将原先Redo日志由单个线程串行重演,转化为多个线程并行重演,充分利用多CPU的计算能力,不但可以提升Redo日志重演性能,也提升了故障重启速度和还原恢复速度。
第一方面,本发明实施例提供了一种数据库日志重演方法,包括:
根据并行度参数创建至少两个重演线程;
接收主库发送的至少一个Redo日志包,根据所述至少一个Redo日志包确定数据页地址信息;
根据所述数据页地址信息和并行度参数将所述至少一个日志包依次分配给所述至少两个重演线程进行数据库日志重演。
进一步的,接收主库发送的至少一个Redo日志包,根据所述至少一个Redo日志包确定数据页地址信息,包括:
接收主库发送的至少一个Redo日志包;
获取所述至少一个Redo日志包中的待重演的物理事务;
依次获取待重演的物理事务对应的待重演的Redo记录;
根据所述Redo记录确定数据页地址信息;
根据所述数据页地址信息确定数据页号。
进一步的,根据所述数据页地址信息和并行度参数将所述至少一个日志包依次分配给所述至少两个重演线程进行数据库日志重演,包括:
所述数据页号对所述并行度参数取模,得到目标编号;
将所述数据页号对应的Redo记录分配给所述目标编号对应的重演线程进行重演。
进一步的,接收主库发送的Redo日志包括:
接收主库发送的至少一个Redo日志包,将所述至少一个Redo日志包写入备库的联机日志文件。
进一步的,在根据所述至少一个Redo日志包确定数据页地址信息之后,还包括:
根据所述数据页地址信息读取Redo日志修改的数据页,并将所述Redo日志修改的数据页存储至缓冲区内。
进一步的,还包括:
当所述日志包写入备库的联机日志文件,且所述日志包对应的重演线程处理完成后,释放所述日志包。
进一步的,接收主库发送的至少一个Redo日志包,包括:
接收主库发送的至少一个Redo日志包,并对所述至少一个Redo日志包进行标记。
第二方面,本发明实施例还提供了一种数据库日志重演装置,该装置包括:
创建模块,用于根据并行度参数创建至少两个重演线程;
接收模块,用于接收主库发送的至少一个Redo日志包,根据所述至少一个Redo日志包确定数据页地址信息;
分配模块,用于根据所述数据页地址信息和并行度参数将所述至少一个日志包依次分配给所述至少两个重演线程进行数据库日志重演。
第三方面,本发明实施例还提供了一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现如本发明实施例中任一所述的数据库日志重演方法。
第四方面,本发明实施例还提供了一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现如本发明实施例中任一所述的数据库日志重演方法。
本发明实施例通过根据并行度参数创建至少两个重演线程;接收主库发送的至少一个Redo日志包,根据所述至少一个Redo日志包确定数据页地址信息;根据所述数据页地址信息和并行度参数将所述至少一个日志包依次分配给所述至少两个重演线程进行数据库日志重演,以实现能够通过创建多个重演线程,多个重演线程共同完成Redo日志的重演任务。每个重演线程仅重演其中一部分数据页,由多个重演线程并行地重演Redo日志。将原先Redo日志由单个线程串行重演,转化为多个线程并行重演,充分利用多CPU的计算能力,不但可以提升Redo日志重演性能,也提升了故障重启速度和还原恢复速度。
附图说明
为了更清楚地说明本发明实施例的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,应当理解,以下附图仅示出了本发明的某些实施例,因此不应被看作是对范围的限定,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他相关的附图。
图1是本发明实施例一中的一种数据库日志重演方法的流程图;
图2是本发明实施例二中的一种数据库日志重演装置的结构示意图;
图3是本发明实施例三中的一种计算机设备的结构示意图。
具体实施方式
下面结合附图和实施例对本发明作进一步的详细说明。可以理解的是,此处所描述的具体实施例仅仅用于解释本发明,而非对本发明的限定。另外还需要说明的是,为了便于描述,附图中仅示出了与本发明相关的部分而非全部结构。
应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步定义和解释。同时,在本发明的描述中,术语“第一”、“第二”等仅用于区分描述,而不能理解为指示或暗示相对重要性。
实施例一
图1为本发明实施例一提供的一种数据库日志重演方法的流程图,本实施例可适用于数据库日志重演的情况,该方法可以由本发明实施例中的数据库日志重演装置来执行,该数据库日志重演装置可采用软件和/或硬件的方式实现,如图1所示,该数据库日志重演方法具体包括如下步骤:
S110,根据并行度参数创建至少两个重演线程。
其中,所述并行度参数与主库所处的设备的硬件性能有关。例如可以是,所述并行度参数与主库所处的设备的核数有关,核数越多,所述并行度参数越大。
示例性的,所述并行度参数可以等于5,例如可以是,根据所述并行度参数等于5,则创建5个并行的重演线程,可以对5个并行的重演线程进行编号,重演线程0、重演线程1、重演线程2、重演线程3和重演线程4。
其中,所述重演线程用于对Redo日志进行重演。
S120,接收主库发送的至少一个Redo日志包,根据所述至少一个Redo日志包确定数据页地址信息。
其中,所述至少一个Redo日志包可以为主库发送的一个Redo日志对应的至少一个Redo日志包。
其中,所述Redo日志包包括一个或者多个物理事务产生的Redo日志,一个物理事务产生的Redo日志只能保存在一个Redo日志包中。
示例性的,根据所述至少一个Redo日志包确定数据页地址信息的方式可以为根据至少一个Redo日志包中的待重演的物理事务对应的待重演的Redo记录确定数据页地址。
示例性的,在接收到主库发送的至少一个Redo日志包后,对Redo日志包进行刷盘流程。需要说明的是,刷盘流程和重演流程是两个独立的流程,可以同时进行,互不影响。
S130,根据所述数据页地址信息和并行度参数将所述至少一个日志包依次分配给所述至少两个重演线程进行数据库日志重演。
示例性的,根据所述数据页地址信息和并行度参数将所述至少一个日志包依次分配给所述至少两个重演线程进行数据库日志重演的方式可以为,根据Redo记录确定的数据页地址信息,根据数据页地址信息确定数据页号,数据页号对并行度参数取模,得到线程号码,将Redo记录分配至线程号码对应的线程进行日志重演,例如可以是,根据Redo记录A确定的数据页地址信息,根据数据页地址信息确定数据页号为1024,数据页号1024对并行度参数5取模,得到线程号码4,将Redo记录A分配至线程号码4对应的线程进行日志重演。
可选的,接收主库发送的至少一个Redo日志包,根据所述至少一个Redo日志包确定数据页地址信息,包括:
接收主库发送的至少一个Redo日志包;
获取所述至少一个Redo日志包中的待重演的物理事务;
依次获取待重演的物理事务对应的待重演的Redo记录;
根据所述Redo记录确定数据页地址信息;
根据所述数据页地址信息确定数据页号。
其中,根据所述数据页地址信息确定数据页号的方式可以为获取数据页地址信息中包含的数据页号,也可以为其他方式,本发明实施例对此不进行限制。
示例性的,备库接收主库发送的Redo日志,Redo日志包括至少一个Redo日志包。获取第一个Redo日志包中的待重演的物理事务,启动待重演的物理事务,获取待重演的物理事务对应的一个待重演的Redo记录,解析Redo记录获取数据页地址信息,根据数据页地址信息确定数据页号。
可选的,根据所述数据页地址信息和并行度参数将所述至少一个日志包依次分配给所述至少两个重演线程进行数据库日志重演,包括:
所述数据页号对所述并行度参数取模,得到目标编号;
将所述数据页号对应的Redo记录分配给所述目标编号对应的重演线程进行重演。
示例性的,所述数据页号对所述并行度参数取模,得到目标编号,例如可以是,数据页号是1024,并行度为5。1024%5=4,修改1024页产生的Redo日志都会分配给编号为4的重演线程进行重演。
可选的,接收主库发送的Redo日志包括:
接收主库发送的至少一个Redo日志包,将所述至少一个Redo日志包写入备库的联机日志文件。
示例性的,在备库接收到主库发送的至少一个Redo日志包时,需要进行刷盘操作,也就是将至少一个Redo日志包依次写入备库的联机日志文件,供备库故障重启时恢复数据。
可选的,在根据所述至少一个Redo日志包确定数据页地址信息之后,还包括:
根据所述数据页地址信息读取Redo日志修改的数据页,并将所述Redo日志修改的数据页存储至缓冲区内。
示例性的,根据所述数据页地址信息读取Redo日志修改的数据页,并将所述Redo日志修改的数据页存储至缓冲区内的方式可以为解析接收到的Redo日志,获取修改的数据页地址信息,发起异步的数据页读取请求,将Redo日志修改的数据页预加载到缓冲区中。
可选的,还包括:
当所述日志包写入备库的联机日志文件,且所述日志包对应的重演线程处理完成后,释放所述日志包。
可选的,接收主库发送的至少一个Redo日志包,包括:
接收主库发送的至少一个Redo日志包,并对所述至少一个Redo日志包进行标记。
示例性的,接收主库发送的至少一个Redo日志包,并对所述至少一个Redo日志包进行标记的方式可以为在RLOG_PKG的第一个ptx的第一个RREC之前,写入一条特殊的RREC日志,用于备库故障重启时调整重演信息使用。
示例性的,对所述至少一个Redo日志包进行标记是为了区分主库发送的Redo日志包和备库自己生成的日志。
本发明实施例可以适用于数据守护场景、还原恢复场景或者故障重启场景。
在一个具体的例子中,本发明实施例通过多个重演线程协同处理的方式,将Redo日志重演由单任务处理调整为多个重演线程并行处理,达到了提升Redo日志重演性能的目的。将Redo日志修改的数据页根据页号进行分片,每个重演线程仅重演部分数据页,并确保同一个数据页的Redo日志由同一个重演线程负责重演。每一个数据页是严格按照其修改顺序(Redo日志产生的顺序)来重演,并保证最终的数据完整性和一致性。
Redo日志并行重演系统初始化:
(1)根据配置的并行度参数N_PLL,初始化并行重演任务系统。例如,N_PLL=5,则初始化5个并行重演线程。并行度参数N_PLL由用户根据主库所属设备的核数和软硬件实际情况确定。
并行任务系统中最主要的是一个重演线程,主要包括以下几个内容:
1.并行任务系统序号(PLL_NTH);
2.当前重演到的LSN值(REDO_LSN),跟随重演进度动态调整。
3.存放待重演任务的任务链表;
4.实际重演日志的重演线程;
(2)为每个重演线程分配一个唯一的序号PLL_NTH,PLL_NTH从0开始编号,比如并行度参数N_PLL=5,则会创建5路并行重演线程,对这5路重演线程从0开始编号(也就是PLL_NTH),编号从0到4。
以数据守护场景为例,备库Redo日志重演总体流程如下:
(1)接收主库发送的Redo日志(以RLOG_PKG为单位)。
(2)解析接收到的Redo日志,获取修改的数据页地址信息,发起异步的数据页读取请求,将Redo日志修改的数据页预加载到缓冲区中。
(3)根据(1)收到的Redo日志重新构造RLOG_PKG。构造工作,主要是在RLOG_PKG的第一个ptx的第一个RREC之前,写入一条特殊的RREC日志,用于备库故障重启时调整重演信息使用。
(4)根据配置参数,设置RLOG_PKG的引用计数N_FIXED为N_PLL(并行度)+1。
(5)发起经(3)构造之后的RLOG_PKG日志刷盘请求,请求写入备库联机日志文件,供备库故障重启时恢复数据。
(6)将第(1)步发来的原始RLOG_PKG依次加入各并行重演系统,发起重演请求。
(7)回到步骤(1)继续获取Redo日志。
备库Redo日志刷盘流程和Redo日志并行重演执行流程是两个独立的流程,互不影响。
Redo日志并行重演执行流程:
(1)获取待重演的RLOG_PKG对象;
(2)获取一个RLOG_PKG中待重演的PTX;
(3)当前RLOG_PKG所有PTX处理完成,跳转到步骤(12),否执行步骤(4);
(4)PTX BEGIN启动物理事务;
(5)获取PTX中一个待重演的RREC记录;
(6)当前PTX所有RREC处理完成,跳转到步骤(10),否执行步骤(7);
(7)解析RREC获取数据页地址信息;
(8)线程利用分片的方法(根据数据页号PAGE_NO和并行度)确定是否需要重演此RREC。
分片的方法,就是使用数据页号对并行度取模,取到的模数就是将要重演此数据页的重演线程的编号。比如某个数据页的页号是1024,并行度为5。那么1024%5=4,则修改1024页产生的Redo日志都会分配给编号为4的重演线程进行重演。
算法为:
IF(PAGE_NO%N_PLL==PLL_NTH);
重演;
ELSE;
忽略;
(9)跳转到步骤(5),继续读取下一个RREC记录;
(10)PTX COMMIT提交物理事务;
(11)跳转到步骤(2),继续获取下一个PTX;
(12)将RLOG_PKG引用计数N_FIXED减1;
(13)如果N_FIXED==0,则说明其他并行重演线程已经处理完成,并且RLOG_PKG已经写入联机日志文件,释放RLOG_PKG;
(14)跳转到步骤(1),继续获取下个待重演的RLOG_PKG。
备库Redo日志刷盘流程:
(1)获取待刷盘RLOG_PKG;
(2)将RLOG_PKG写入联机日志文件;
(3)RLOG_PKG的引用计数N_FIXED减1;
(4)如果N_FIXED==0,则说明所有并行重演线程已经处理完成,释放RLOG_PKG;
(5)跳转到步骤(1),继续获取下一个待刷盘的RLOG_PKG。
本实施例的技术方案,通过根据并行度参数创建至少两个重演线程;接收主库发送的至少一个Redo日志包,根据所述至少一个Redo日志包确定数据页地址信息;根据所述数据页地址信息和并行度参数将所述至少一个日志包依次分配给所述至少两个重演线程进行数据库日志重演,以实现能够通过创建多个重演线程,多个重演线程共同完成Redo日志的重演任务。每个重演线程仅重演其中一部分数据页,由多个重演线程并行地重演Redo日志。将原先Redo日志由单个线程串行重演,转化为多个线程并行重演,充分利用多CPU的计算能力,不但可以提升Redo日志重演性能,也提升了故障重启速度和还原恢复速度。
实施例二
图2为本发明实施例二提供的一种数据库日志重演装置的结构示意图。本实施例可适用于数据库日志重演的情况,该装置可采用软件和/或硬件的方式实现,该装置可集成在任何提供数据库日志重演功能的设备中,如图2所示,所述数据库日志重演装置具体包括:创建模块210、接收模块220和分配模块230。
其中,创建模块210,用于根据并行度参数创建至少两个重演线程;
接收模块220,用于接收主库发送的至少一个Redo日志包,根据所述至少一个Redo日志包确定数据页地址信息;
分配模块230,用于根据所述数据页地址信息和并行度参数将所述至少一个日志包依次分配给所述至少两个重演线程进行数据库日志重演。
上述产品可执行本发明任意实施例所提供的方法,具备执行方法相应的功能模块和有益效果。
本实施例的技术方案,通过根据并行度参数创建至少两个重演线程;接收主库发送的至少一个Redo日志包,根据所述至少一个Redo日志包确定数据页地址信息;根据所述数据页地址信息和并行度参数将所述至少一个日志包依次分配给所述至少两个重演线程进行数据库日志重演,以实现能够通过创建多个重演线程,多个重演线程共同完成Redo日志的重演任务。每个重演线程仅重演其中一部分数据页,由多个重演线程并行地重演Redo日志。将原先Redo日志由单个线程串行重演,转化为多个线程并行重演,充分利用多CPU的计算能力,不但可以提升Redo日志重演性能,也提升了故障重启速度和还原恢复速度。
实施例三
图3为本发明实施例三中的一种计算机设备的结构示意图。图3示出了适于用来实现本发明实施方式的示例性计算机设备12的框图。图3显示的计算机设备12仅仅是一个示例,不应对本发明实施例的功能和使用范围带来任何限制。
如图3所示,计算机设备12以通用计算设备的形式表现。计算机设备12的组件可以包括但不限于:一个或者多个处理器或者处理单元16,系统存储器28,连接不同系统组件(包括系统存储器28和处理单元16)的总线18。
总线18表示几类总线结构中的一种或多种,包括存储器总线或者存储器控制器,外围总线,图形加速端口,处理器或者使用多种总线结构中的任意总线结构的局域总线。举例来说,这些体系结构包括但不限于工业标准体系结构(Industry StandardArchitecture,ISA)总线,微通道体系结构(Micro Channel Architecture,MCA)总线,增强型ISA总线、视频电子标准协会(Video Electronics Standards Association,VESA)局域总线以及外围组件互连(Peripheral Component Interconnect,PCI)总线。
计算机设备12典型地包括多种计算机系统可读介质。这些介质可以是任何能够被计算机设备12访问的可用介质,包括易失性和非易失性介质,可移动的和不可移动的介质。
系统存储器28可以包括易失性存储器形式的计算机系统可读介质,例如随机存取存储器(Random Access Memory,RAM)30和/或高速缓存存储器32。计算机设备12可以进一步包括其它可移动/不可移动的、易失性/非易失性计算机系统存储介质。仅作为举例,存储系统34可以用于读写不可移动的、非易失性磁介质(图3未显示,通常称为“硬盘驱动器”)。尽管图3中未示出,可以提供用于对可移动非易失性磁盘(例如“软盘”)读写的磁盘驱动器,以及对可移动非易失性光盘(只读光盘(Compact Disc-Read Only Memory,CD-ROM)、数字视盘(Digital Video Disc-Read Only Memory,DVD-ROM)或者其它光介质)读写的光盘驱动器。在这些情况下,每个驱动器可以通过一个或者多个数据介质接口与总线18相连。存储器28可以包括至少一个程序产品,该程序产品具有一组(例如至少一个)程序模块,这些程序模块被配置以执行本发明各实施例的功能。
具有一组(至少一个)程序模块42的程序/实用工具40,可以存储在例如存储器28中,这样的程序模块42包括但不限于操作系统、一个或者多个应用程序、其它程序模块以及程序数据,这些示例中的每一个或某种组合中可能包括网络环境的实现。程序模块42通常执行本发明所描述的实施例中的功能和/或方法。
计算机设备12也可以与一个或多个外部设备14(例如键盘、指向设备、显示器24等)通信,还可与一个或者多个使得用户能与该计算机设备12交互的设备通信,和/或与使得该计算机设备12能与一个或多个其它计算设备进行通信的任何设备(例如网卡,调制解调器等等)通信。这种通信可以通过输入/输出(I/O)接口22进行。另外,本实施例中的计算机设备12,显示器24不是作为独立个体存在,而是嵌入镜面中,在显示器24的显示面不予显示时,显示器24的显示面与镜面从视觉上融为一体。并且,计算机设备12还可以通过网络适配器20与一个或者多个网络(例如局域网(Local Area Network,LAN),广域网Wide AreaNetwork,WAN)和/或公共网络,例如因特网)通信。如图所示,网络适配器20通过总线18与计算机设备12的其它模块通信。应当明白,尽管图中未示出,可以结合计算机设备12使用其它硬件和/或软件模块,包括但不限于:微代码、设备驱动器、冗余处理单元、外部磁盘驱动阵列、磁盘阵列(Redundant Arrays of Independent Disks,RAID)系统、磁带驱动器以及数据备份存储系统等。
处理单元16通过运行存储在系统存储器28中的程序,从而执行各种功能应用以及数据处理,例如实现本发明实施例所提供的数据库日志重演方法:
根据并行度参数创建至少两个重演线程;
接收主库发送的至少一个Redo日志包,根据所述至少一个Redo日志包确定数据页地址信息;
根据所述数据页地址信息和并行度参数将所述至少一个日志包依次分配给所述至少两个重演线程进行数据库日志重演。
实施例四
本发明实施例四提供了一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现如本申请所有发明实施例提供的数据库日志重演方法:
根据并行度参数创建至少两个重演线程;
接收主库发送的至少一个Redo日志包,根据所述至少一个Redo日志包确定数据页地址信息;
根据所述数据页地址信息和并行度参数将所述至少一个日志包依次分配给所述至少两个重演线程进行数据库日志重演。
可以采用一个或多个计算机可读的介质的任意组合。计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质或者是上述两者的任意组合。计算机可读存储介质例如可以是但不限于电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子(非穷举的列表)包括:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑磁盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本文件中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。
计算机可读的信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。计算机可读的信号介质还可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。
计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括但不限于无线、电线、光缆、RF等等,或者上述的任意合适的组合。
在一些实施方式中,客户端、服务器可以利用诸如HTTP(HyperText TransferProtocol,超文本传输协议)之类的任何当前已知或未来研发的网络协议进行通信,并且可以与任意形式或介质的数字数据通信(例如,通信网络)互连。通信网络的示例包括局域网(“LAN”),广域网(“WAN”),网际网(例如,互联网)以及端对端网络(例如,ad hoc端对端网络),以及任何当前已知或未来研发的网络。
上述计算机可读介质可以是上述电子设备中所包含的;也可以是单独存在,而未装配入该电子设备中。
上述计算机可读介质承载有一个或者多个程序,当上述一个或者多个程序被该电子设备执行时,使得该电子设备:接收用户输入的源文本,将所述源文本翻译为目标语种对应的目标文本;获取所述用户的历史纠正行为;根据所述历史纠正行为对所述目标文本进行纠正,获得翻译结果,并将所述翻译结果推送至所述用户所在的客户端。
可以以一种或多种程序设计语言或其组合来编写用于执行本发明操作的计算机程序代码,所述程序设计语言包括面向对象的程序设计语言诸如Java、Smalltalk、C++,还包括常规的过程式程序设计语言—诸如“C”语言或类似的程序设计语言。程序代码可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络包括局域网(LAN)或广域网(WAN)连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。
附图中的流程图和框图,图示了按照本公开各种实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段、或代码的一部分,该模块、程序段、或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个接连地表示的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
描述于本公开实施例中所涉及到的单元可以通过软件的方式实现,也可以通过硬件的方式来实现。其中,单元的名称在某种情况下并不构成对该单元本身的限定。
本文中以上描述的功能可以至少部分地由一个或多个硬件逻辑部件来执行。例如,非限制性地,可以使用的示范类型的硬件逻辑部件包括:现场可编程门阵列(FPGA)、专用集成电路(ASIC)、专用标准产品(ASSP)、片上系统(SOC)、复杂可编程逻辑设备(CPLD)等等。
在本公开的上下文中,机器可读介质可以是有形的介质,其可以包含或存储以供指令执行系统、装置或设备使用或与指令执行系统、装置或设备结合地使用的程序。机器可读介质可以是机器可读信号介质或机器可读储存介质。机器可读介质可以包括但不限于电子的、磁性的、光学的、电磁的、红外的、或半导体系统、装置或设备,或者上述内容的任何合适组合。机器可读存储介质的更具体示例会包括基于一个或多个线的电气连接、便携式计算机盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦除可编程只读存储器(EPROM或快闪存储器)、光纤、便捷式紧凑盘只读存储器(CD-ROM)、光学储存设备、磁储存设备、或上述内容的任何合适组合。
注意,上述仅为本发明的较佳实施例及所运用技术原理。本领域技术人员会理解,本发明不限于这里所述的特定实施例,对本领域技术人员来说能够进行各种明显的变化、重新调整和替代而不会脱离本发明的保护范围。因此,虽然通过以上实施例对本发明进行了较为详细的说明,但是本发明不仅仅限于以上实施例,在不脱离本发明构思的情况下,还可以包括更多其他等效实施例,而本发明的范围由所附的权利要求范围决定。

Claims (8)

1.一种数据库日志重演方法,其特征在于,包括:
根据并行度参数创建至少两个重演线程;
接收主库发送的至少一个Redo日志包,根据所述至少一个Redo日志包确定数据页地址信息;
根据所述数据页地址信息和并行度参数将所述至少一个日志包依次分配给所述至少两个重演线程进行数据库日志重演;
所述接收主库发送的至少一个Redo日志包,根据所述至少一个Redo日志包确定数据页地址信息,包括:
接收主库发送的至少一个Redo日志包;
获取所述至少一个Redo日志包中的待重演的物理事务;
依次获取待重演的物理事务对应的待重演的Redo记录;
根据所述Redo记录确定数据页地址信息;
根据所述数据页地址信息确定数据页号;
所述根据所述数据页地址信息和并行度参数将所述至少一个日志包依次分配给所述至少两个重演线程进行数据库日志重演,包括:
所述数据页号对所述并行度参数取模,得到目标编号;
将所述数据页号对应的Redo记录分配给所述目标编号对应的重演线程进行重演。
2.根据权利要求1所述的方法,其特征在于,接收主库发送的Redo日志包括:
接收主库发送的至少一个Redo日志包,将所述至少一个Redo日志包写入备库的联机日志文件。
3.根据权利要求1所述的方法,其特征在于,在根据所述至少一个Redo日志包确定数据页地址信息之后,还包括:
根据所述数据页地址信息读取Redo日志修改的数据页,并将所述Redo日志修改的数据页存储至缓冲区内。
4.根据权利要求1所述的方法,其特征在于,还包括:
当所述日志包写入备库的联机日志文件,且所述日志包对应的重演线程处理完成后,释放所述日志包。
5.根据权利要求1所述的方法,其特征在于,接收主库发送的至少一个Redo日志包,包括:
接收主库发送的至少一个Redo日志包,并对所述至少一个Redo日志包进行标记。
6.一种数据库日志重演装置,其特征在于,包括:
创建模块,用于根据并行度参数创建至少两个重演线程;
接收模块,用于接收主库发送的至少一个Redo日志包,根据所述至少一个Redo日志包确定数据页地址信息;
分配模块,用于根据所述数据页地址信息和并行度参数将所述至少一个日志包依次分配给所述至少两个重演线程进行数据库日志重演;
所述接收主库发送的至少一个Redo日志包,根据所述至少一个Redo日志包确定数据页地址信息,包括:
接收主库发送的至少一个Redo日志包;
获取所述至少一个Redo日志包中的待重演的物理事务;
依次获取待重演的物理事务对应的待重演的Redo记录;
根据所述Redo记录确定数据页地址信息;
根据所述数据页地址信息确定数据页号;
所述根据所述数据页地址信息和并行度参数将所述至少一个日志包依次分配给所述至少两个重演线程进行数据库日志重演,包括:
所述数据页号对所述并行度参数取模,得到目标编号;
将所述数据页号对应的Redo记录分配给所述目标编号对应的重演线程进行重演。
7.一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其特征在于,所述处理器执行所述程序时实现如权利要求1-5中任一所述的方法。
8.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,该程序被处理器执行时实现如权利要求1-5中任一所述的方法。
CN202011349368.0A 2020-11-26 2020-11-26 一种数据库日志重演方法、装置、设备及存储介质 Active CN112416654B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202011349368.0A CN112416654B (zh) 2020-11-26 2020-11-26 一种数据库日志重演方法、装置、设备及存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202011349368.0A CN112416654B (zh) 2020-11-26 2020-11-26 一种数据库日志重演方法、装置、设备及存储介质

Publications (2)

Publication Number Publication Date
CN112416654A CN112416654A (zh) 2021-02-26
CN112416654B true CN112416654B (zh) 2024-04-09

Family

ID=74842533

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202011349368.0A Active CN112416654B (zh) 2020-11-26 2020-11-26 一种数据库日志重演方法、装置、设备及存储介质

Country Status (1)

Country Link
CN (1) CN112416654B (zh)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113239120B (zh) * 2021-06-07 2023-08-18 上海达梦数据库有限公司 一种日志同步方法、装置、设备及存储介质
CN114116665B (zh) * 2021-11-22 2023-07-25 北京海量数据技术股份有限公司 数据库中并行写入事务日志以提升处理效率的方法
CN115114370B (zh) * 2022-01-20 2023-06-13 腾讯科技(深圳)有限公司 主从数据库的同步方法、装置、电子设备和存储介质

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2016122710A1 (en) * 2015-01-30 2016-08-04 Hewlett Packard Enterprise Development Lp Byte addressable non-volatile random access memory for storing log record
WO2017101731A1 (zh) * 2015-12-18 2017-06-22 阿里巴巴集团控股有限公司 数据库的服务提供方法和系统
CN108874588A (zh) * 2018-06-08 2018-11-23 郑州云海信息技术有限公司 一种数据库实例恢复方法和装置
CN110442560A (zh) * 2019-08-14 2019-11-12 上海达梦数据库有限公司 一种日志重演方法、装置、服务器和存储介质
CN111290881A (zh) * 2020-01-21 2020-06-16 上海达梦数据库有限公司 一种数据恢复方法、装置、设备及存储介质

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103729442B (zh) * 2013-12-30 2017-11-24 华为技术有限公司 记录事务日志的方法和数据库引擎
US10452491B2 (en) * 2016-04-14 2019-10-22 Sap Se Scalable log partitioning system
US20180144015A1 (en) * 2016-11-18 2018-05-24 Microsoft Technology Licensing, Llc Redoing transaction log records in parallel
US10162710B2 (en) * 2016-11-28 2018-12-25 Sap Se Version space reconstruction during database initialization
US10769034B2 (en) * 2017-03-07 2020-09-08 Sap Se Caching DML statement context during asynchronous database system replication
US10756952B2 (en) * 2018-05-30 2020-08-25 International Business Machines Corporation Determining a storage network path utilizing log data
US20200050692A1 (en) * 2018-08-10 2020-02-13 Microsoft Technology Licensing, Llc Consistent read queries from a secondary compute node

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2016122710A1 (en) * 2015-01-30 2016-08-04 Hewlett Packard Enterprise Development Lp Byte addressable non-volatile random access memory for storing log record
WO2017101731A1 (zh) * 2015-12-18 2017-06-22 阿里巴巴集团控股有限公司 数据库的服务提供方法和系统
CN108874588A (zh) * 2018-06-08 2018-11-23 郑州云海信息技术有限公司 一种数据库实例恢复方法和装置
CN110442560A (zh) * 2019-08-14 2019-11-12 上海达梦数据库有限公司 一种日志重演方法、装置、服务器和存储介质
CN111290881A (zh) * 2020-01-21 2020-06-16 上海达梦数据库有限公司 一种数据恢复方法、装置、设备及存储介质

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
一个基于日志服务器的内存数据库恢复系统;盛业兴;陆阳;;合肥工业大学学报(自然科学版)(第03期);全文 *
基于多线程的并行实例恢复方法;卢栋栋;何清法;;计算机应用(第04期);全文 *

Also Published As

Publication number Publication date
CN112416654A (zh) 2021-02-26

Similar Documents

Publication Publication Date Title
CN112416654B (zh) 一种数据库日志重演方法、装置、设备及存储介质
CN110442560B (zh) 一种日志重演方法、装置、服务器和存储介质
US8239389B2 (en) Persisting external index data in a database
US8127174B1 (en) Method and apparatus for performing transparent in-memory checkpointing
US20190188091A1 (en) Write-ahead style logging in a persistent memory device
WO2017080431A1 (zh) 一种基于日志解析的数据库复制方法及装置
US9292384B2 (en) Storage systems with adaptive erasure code generation
WO2015100985A1 (zh) 记录事务日志的方法和数据库引擎
US20110082832A1 (en) Parallelized backup and restore process and system
US11748215B2 (en) Log management method, server, and database system
US9003228B2 (en) Consistency of data in persistent memory
US10387274B2 (en) Tail of logs in persistent main memory
CN111176584A (zh) 一种基于混合内存的数据处理方法及装置
US10430115B2 (en) System and method for optimizing multiple packaging operations in a storage system
US20180246949A1 (en) Early thread return with secondary event writes
US11200219B2 (en) System and method for idempotent metadata destage in a storage cluster with delta log based architecture
CN111026764B (zh) 一种数据存储方法、装置、电子产品及存储介质
US11099948B2 (en) Persistent storage segment caching for data recovery
US20240045857A1 (en) Increasing oltp throughput by improving the performance of logging using persistent memory storage
US20240045613A1 (en) Increasing oltp throughput by improving the performance of logging using persistent memory storage
US20240045591A1 (en) Increasing oltp throughput by improving the performance of logging using persistent memory storage
US20240111623A1 (en) Extended protection storage system put operation
US11755419B2 (en) Utilizing spare network nodes for deduplication fingerprints database
CN113326268A (zh) 一种数据写入、读取方法及装置
Taha et al. Enhancing fault tolerance in MapReduce tasks

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