CN112612647B - 日志并行重演方法、装置、设备及存储介质 - Google Patents
日志并行重演方法、装置、设备及存储介质 Download PDFInfo
- Publication number
- CN112612647B CN112612647B CN202011590419.9A CN202011590419A CN112612647B CN 112612647 B CN112612647 B CN 112612647B CN 202011590419 A CN202011590419 A CN 202011590419A CN 112612647 B CN112612647 B CN 112612647B
- Authority
- CN
- China
- Prior art keywords
- thread
- replay
- log
- parallel
- lsn
- 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
- 238000000034 method Methods 0.000 title claims abstract description 30
- 230000007246 mechanism Effects 0.000 claims abstract description 48
- 238000004590 computer program Methods 0.000 claims description 7
- 238000012545 processing Methods 0.000 claims description 6
- 230000002618 waking effect Effects 0.000 claims description 5
- 238000010586 diagram Methods 0.000 description 6
- 238000003780 insertion Methods 0.000 description 5
- 230000037431 insertion Effects 0.000 description 5
- 230000004048 modification Effects 0.000 description 5
- 238000012986 modification Methods 0.000 description 5
- 230000000903 blocking effect Effects 0.000 description 4
- 230000006870 function Effects 0.000 description 3
- 230000008859 change Effects 0.000 description 2
- 238000013461 design Methods 0.000 description 2
- 230000008569 process Effects 0.000 description 2
- 230000001360 synchronised effect Effects 0.000 description 2
- 230000009471 action Effects 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 230000008878 coupling Effects 0.000 description 1
- 238000010168 coupling process Methods 0.000 description 1
- 238000005859 coupling reaction Methods 0.000 description 1
- 230000008030 elimination Effects 0.000 description 1
- 238000003379 elimination reaction Methods 0.000 description 1
- 230000000977 initiatory effect Effects 0.000 description 1
- 238000010295 mobile communication Methods 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 230000008707 rearrangement Effects 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
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/1461—Backup scheduling policy
-
- 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
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5027—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
-
- 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
-
- 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/82—Solving problems relating to consistency
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/50—Indexing scheme relating to G06F9/50
- G06F2209/5018—Thread allocation
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Abstract
本申请公开了一种日志并行重演方法、装置、设备及存储介质,具体包括获取当前物理事务的重做日志和第一线程已重演的最大LSN;在重做日志包含X闩锁ROOT页日志的情况下,根据最大LSN确定并行线程重演同步机制;根据并行线程重演同步机制重演日志。基于本申请实施例提出的并行线程重演同步机制重演日志,可以在B树分裂场景下,正常并行重演Redo日志,提升备库Redo日志重演性能。
Description
技术领域
本申请实施例涉及分布式数据库领域,尤其涉及一种日志并行重演方法、装置、设备及存储介质。
背景技术
重做(Redo)日志重演即是解析Redo日志,根据Redo记录(RREC)记录的数据页地址和修改内容,重新修改数据页。Redo日志重演是数据库主备集群中备机与主机之间数据同步的一种重要机制,为了加快Redo日志重演进度,提升数据库主备集群的性能,引入了Redo日志并行重演机制,将Redo日志重演由单任务线程处理调整为多个重演线程并行处理。这一处理方式具体是根据Redo日志修改的数据页号进行分片,每个重演线程解析Redo日志,跳过无关数据页的修改,仅重演部分数据页的Redo日志。其中,同一个数据页的Redo日志由同一个重演线程负责重演,每一个数据页严格按照其修改顺序(即Redo日志产生的顺序)进行重演,并保证最终的数据完整性和一致性。但是,主库同一个物理事务(PhysicalTransaction,PTX)中的Redo日志,可能分别由不同的重演线程负责重演。这样由于Redo日志并行重演过程中,不同数据页的重演进度存在差异,并不是严格按照Redo日志的产生顺序进行重演的,那么备库查询可能访问到不一致的数据页,导致查询出错。
例如,备库查询访问如图1所示的B树时,总是先S封锁B树ROOT页,B树查找定位到LEAF页,并S封锁LEAF页后,再释放ROOT页的锁(LATCH)。但主库修改引发B树结构变化时,例如,插入(INSERT)数据引发B树分裂,那么会先X封锁B树的ROOT页,并生成封锁B树ROOT页的Redo日志。
单线程日志重演时,备库重演主库引发B树分裂操作产生的Redo日志前,会先X封锁ROOT页,直到主库引发B树分裂操作产生的Redo日志重演完成后,再一起释放B树ROOT页的X闩锁,这种处理机制可以确保备库查询能够访问到完整的B树结构。但引入日志并行重演之后,主库引发B树分裂操作产生的Redo日志与X闩锁ROOT页的Redo日志,可能由不同的线程并行重演,不能保证是按照Redo日志产生的顺序依次重演。因此,可能导致备库查询访问到不一致的B树数据页。比如,在INSERT之前,如图1所示,P1为ROOT页,P2和P3是LEAF页,数据页中保存了一条记录REC_A。主库中的INSERT操作向P3页插入数据引发B树分裂,分裂后的数据页P3中的记录REC_A被删除,写入到数据页P4中,分裂后的B树结构如如图2所示。相应地,主库INSERT操作生成的Redo日志由同一个PTX写入,PTX中包含的Redo记录(RREC)包括RREC1、RREC2、RREC3、RREC4,其分别对应X闩锁ROOT页P1的Redo日志记录、修改数据页P3的Redo日志记录、修改数据页P4的Redo日志记录、修改ROOT页P1的Redo日志记录。假设P1、P3、P4的Redo日志分别由重演线程RAPPLY_THRD1、RAPPLY_THRD2、RAPPLY_THRD3重演。由于各并行线程重演进度不一致,则会导致备库查询出错。
比如,RAPPLY_THRD2先重演了P3的Redo日志,而RAPPLY_THRD1和RAPPLY_THRD3尚未完成重演,此时备库查询T表的数据REC_A,先S闩锁ROOT页P1,再根据P1的数据信息,得知REC_A保存在数据页P3中。备库查询S闩锁数据页P3,试图读取记录REC_A。但由于数据页P3的Redo日志已重演完成,记录REC_A已经被删除,导致无法读取正确的数据。
针对上述问题,目前可行的解决方案是在并行重演包含修改B树结构的Redo日志(即X闩锁ROOT页)时,要求所有其他并行重演线程全部暂停工作,这个PTX的所有Redo日志只由一个线程串行重演,等这个PTX重演完成后,再重新启动并行重演。但是,一旦主库出现B树分裂,备库的并行重演会被打断,变为串行重演,这样会影响日志重演性能。
发明内容
为了解决上述至少一个技术问题,本申请实施例提供了以下方案。
第一方面,本申请实施例提供了一种日志并行重演方法,该方法包括:
获取当前物理事务的重做日志和第一线程已重演的当前物理事务的最大日志序列号(Log sequence number,LSN);
在重做日志包含X闩锁ROOT页日志的情况下,根据最大LSN确定并行线程重演同步机制;
根据所述并行线程重演同步机制重演日志。
第二方面,本申请实施例还提供了一种日志并行重演装置,该装置包括:
获取模块,用于获取当前物理事务的重做日志和第一线程已重演的最大LSN;
确定模块,用于在重做日志包含X闩锁ROOT页日志的情况下,根据最大LSN确定并行线程重演同步机制;
重演模块,用于根据并行线程重演同步机制重演日志。
第三方面,本申请实施例还提供了一种电子设备,包括:存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,当处理器执行计算机程序时,实现如本申请任意实施例提供的日志并行重演方法。
第四方面,本申请实施例还提供了一种计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时,实现如本申请任意实施例提供的日志并行重演方法。
本申请实施例提供一种日志并行重演方法、装置、设备及存储介质,具体包括获取当前物理事务的重做日志和第一线程已重演的最大LSN;在重做日志包含X闩锁ROOT页日志的情况下,根据最大LSN确定并行线程重演同步机制;根据并行线程重演同步机制重演日志。基于本申请实施例提出的并行线程重演同步机制重演日志,可以在B树分裂场景下,正常并行重演Redo日志,提升备库Redo日志重演性能。
附图说明
图1为本申请实施例中的B树结构示意图;
图2是本申请实施例中的分裂后的B树结构示意图;
图3是本申请实施例中的PTX和RREC结构示意图;
图4是本申请实施例中的日志并行重演方法流程图;
图5是本申请实施例中的日志并行重演装置的结构示意图;
图6是本申请实施例中的电子设备的结构示意图。
具体实施方式
下面结合附图和实施例对本申请作进一步的详细说明。可以理解的是,此处所描述的具体实施例仅仅用于解释本申请,而非对本申请的限定。另外还需要说明的是,为了便于描述,附图中仅示出了与本申请相关的部分而非全部结构。
另外,在本申请实施例中,“可选地”或者“示例性地”等词用于表示作例子、例证或说明。本申请实施例中被描述为“可选地”或者“示例性地”的任何实施例或设计方案不应被解释为比其它实施例或设计方案更优选或更具优势。确切而言,使用“可选地”或者“示例性地”等词旨在以具体方式呈现相关概念。
为了更清楚的理解本申请实施例提供的方法,在此对本申请方案中所涉及到的相关概念进行解释,具体如下:
Redo日志包含所有对物理数据页的修改内容,比如,插入(Insert)、删除(delete)、更新(update)等数据操作语言(Data Manipulation Language,DML)操作,以及创建表格(Create Table)等数据定义语言(Data Definition Language,DDL)操作修改的内容,这些操作最终都会转化为对物理数据页的修改,这些修改都会反映到Redo日志中。通常一条修改数据的结构化查询语言(Structured Query Language,SQL)语句(例如,Insert语句),在系统内部会转化为多个相互独立的物理事务完成,物理事务产生的Redo日志最终会写入日志文件。
一个物理事务可以包含一个或者多个RREC,每个RREC都对应一个数据库内部的修改动作。根据记录内容的不同,RREC可以分为物理RREC和逻辑RREC两类。如图3所示,物理RREC记录的是数据页的变化情况,记录内容包括:操作类型、修改数据页地址、页内偏移、数据长度和修改内容。逻辑RREC记录的是数据库中逻辑操作的步骤,主要包括:事务启动、事务提交、事务回滚、字典封锁、事务封锁、B树封锁、字典淘汰等。
在上述概念的基础上,本申请实施例提供了一种日志并行重演方法,该方法可以由具有数据库管理系统的电子设备执行,并应用于多线程并行重演Redo日志的场景下,如图4所示,该方法可以包括但不限于以下步骤:
S401、获取当前物理事务的重做日志和第一线程已重演的最大LSN。
示例性地,可以通过线程解析PTX的方式获取当前PTX的Redo日志。
可选地,可以在每个线程中定义WAIT_SLOT结构体对象,该结构体可以包含EVENT事件和同步的LSN值两个参数,每个线程可以通过结构体中的这两个参数确定当前的重演进度,例如,通过同步的LSN值登记线程已重演的最大LSN值,通过EVENT事件参数维护线程的WAIT_SLOT_LIST链表,该链表中存放的即是等待本线程唤醒的其他线程的WAIT_SLOT结构体对象。
S402、在重做日志包含X闩锁ROOT页日志的情况下,根据最大LSN确定并行线程重演同步机制。
由于修改B树结构操作产生的Redo日志一定会包含X闩锁ROOT页,那么可以在解析PTX后,确定当前PTX的Redo日志中包含有X闩锁ROOT页日志的情况下,根据第一线程已经重演的最大LSN确定并行线程重演同步机制。
在本申请实施例中,可以将根据并行日志重演机制确定负责重演ROOT页日志的线程定义为第二线程,第一线程可以理解为与当前PTX相关的除第二线程外的其余所有线程。
例如,在第一线程已经重演的最大LSN小于当前PTX的重演LSN的情况下,说明第一线程还未重演至当前PTX,那么可以在第一线程的链表中加入第二线程的结构体,根据修改后的第一线程的链表确定并行重演同步机制。
假设本申请实施例中的第一线程为THRD_Y,第二线程为THRD_X。由于不同线程的重演进度不相同,THRD_X解析当前PTX以获取整个PTX的Redo日志,并确定当前PTX的Redo日志中包含有X闩锁ROOT页日志时,若THRD_Y已重演的最大LSN小于当前PTX的重演LSN,说明THRD_Y还未重演到当前包含ROOT页的X封锁的PTX,那么需要THRD_X等待THRD_Y将重演进度进行至当前包含ROOT页的X闩锁的PTX,可以将THRD_X的WAIT_SLOT加入至THRD_Y的WAIT_SLOT_LIST链表,根据修改后的THRD_Y的WAIT_SLOT_LIST链表确定后续的线程并行重演同步机制。
或者,在第一线程已经重演的最大LSN等于当前PTX的重演LSN的情况下,即第一线程重演至当前Redo日志中包含X闩锁ROOT页日志的PTX,那么可以根据第一线程的链表信息确定并行线程重演同步机制。
例如,假设THRD_Y解析当前PTX后,确定当前PTX的Redo日志中包含X闩锁ROOT页日志,说明THRD_Y重演到包含ROOT页X封锁的PTX,那么可以将THRD_Y已重演的最大LSN设置为当前PTX的重演LSN,即THRD_Y->LSN=PTX->LSN,进而判断THRD_Y的链表WAIT_SLOT_LIST中是否存在等待的线程,并依据判断结果确定并行线程重演同步机制。
可以理解的是,本申请实施例中的并行线程存在多个,对于某个PTX,其中可以包含至少一个第一线程以及一个第二线程。
S403、根据并行线程重演同步机制重演日志。
基于上述步骤S402中不同情况下所确定的并行线程重演同步机制重演日志,即可提升备库Redo日志重演的性能。
本申请实施例提供了一种日志并行重演方法,该方法包括获取当前物理事务的重做日志和第一线程已重演的最大LSN;在重做日志包含X闩锁ROOT页日志的情况下,根据最大LSN确定并行线程重演同步机制;根据并行线程重演同步机制重演日志。基于本申请实施例提出的并行线程重演同步机制重演日志,可以在B树分裂场景下,正常并行重演Redo日志,提升备库Redo日志重演性能。
在一种示例中,上述步骤S402中根据修改后的第一线程的链表确定并行重演同步机制可以为,若第一线程已重演的最大LSN等于当前PTX的重演LSN,即当THRD_Y解析到当前PTX后,确定当前PTX的Redo日志中包含X闩锁日志,说明THRD_Y重演到包含ROOT页X封锁的PTX,那么可以将THRD_Y已重演的最大LSN设置为当前PTX的重演LSN,即THRD_Y->LSN=PTX->LSN。此时,在第二线程自身维护的链表中加入第一线程的结构体,再唤醒第二线程。即将THRD_X的WAIT_SLOT加入至THRD_Y的WAIT_SLOT_LIST链表后,在THRD_Y重演至当前PTX时,在THRD_X的WAIT_SLOT_LIST链表中加入THRD_Y的WAIT_SLOT,并唤醒THRD_X,由唤醒后的THRD_X开启对包含有ROOT页X封锁的PTX进行重演。
上述过程可以理解为,第一线程的链表中维护有等待的第二线程,在第一线程重演至当前包含ROOT页X封锁的PTX时,先在等待的第二线程的链表中加入第一线程的结构体,再唤醒该等待的第二线程,由该第二线程对当前PTX进行重演。
在一种示例中,上述步骤S402中根据第一线程的链表信息确定并行线程重演同步机制可以为,在第一线程的链表信息中未包含有第二线程的结构体的情况下,说明THRD_Y已经将当前PTX之前的PTX的Redo日志重演完成,THRD_X无需等待THRD_Y,可以直接重演,那么可以在第二线程的链表中加入第一线程的结构体。即在THRD_X的WAIT_SLOT_LIST链表中加入THRD_Y的WAIT_SLOT,由THRD_X对包含有ROOT页X封锁的PTX进行重演。
在一种示例中,在THRD_X的WAIT_SLOT_LIST链表中加入THRD_Y的WAIT_SLOT后,由THRD_X重演整个包含有X闩锁日志的PTX的Redo日志,并在THRD_X重演PTX的Redo日志结束后,可以扫描自身维护的WAIT_SLOT_LIST链表,唤醒THRD_Y,并继续重演后续Redo日志。相应地,THRD_Y被唤醒后,也可以继续重演后续Redo日志。即在本申请实施例中,将THRD_X作为ROOT页号所属的并行线程,负责重演PTX的所有Redo日志,将THRD_Y作为涉及该PTX的其他重演线程,不重演该PTX的Redo日志,但需要等待THRD_X重演PTX结束后,继续重演后续的Redo日志。另外,将不涉及该PTX的并行线程统一称为THRD_O,THRD_O可以直接跳过此PTX,继续重演后续的Redo日志。
这样采用局部串行的实现方式可以在重演X闩锁ROOT页的Redo日志时,若检测到包含修改B树结构的操作,仅暂停此PTX相关的并行线程,其他并行线程不受影响,可以继续并行重演Redo日志,从而提升了备库Redo日志重演的性能。
图5为本申请实施例提供的一种日志并行重演装置,如图5所示,该装置可以包括获取模块501、确定模块502、重演模块503;
其中,获取模块,用于获取当前物理事务的重做日志和第一线程已重演的最大LSN;
确定模块,用于在重做日志包含X闩锁ROOT页的情况下,根据最大LSN确定并行线程重演同步机制;
重演模块,用于根据并行线程重演同步机制重演日志。
在一种示例中,在最大LSN小于当前物理事务的重演LSN的情况下,确定模块用于在第一线程的链表中加入第二线程的结构体,根据修改后的第一线程的链表确定并行重演同步机制;
其中,第二线程为负责重演ROOT页日志的线程;
或者,在最大LSN等于当前物理事务的重演LSN的情况下,确定模块用于根据第一线程的链表信息确定并行线程重演同步机制。
在一种示例中,确定模块可以包括唤醒单元和添加单元;
唤醒单元用于在最大LSN等于当前物理事务的重演LSN的情况下,根据修改后的第一线程的链表中唤醒第二线程;
添加单元用于在第二线程的链表中加入第一线程的结构体。
在一种示例中,确定模块包含有添加单元;
添加单元用于在确定第一线程对当前事务之前的PTX的Redo日志重演完成,且第一线程的链表信息中未包含有第二线程的结构体的情况下,在第二线程的链表中加入第一线程的结构体。
在一种示例中,上述装置还可以包括调用模块;
调用模块用于调用第二线程重演当前包含有X闩锁日志的物理事务。
在一种示例中,上述装置还可以包括唤醒模块;
唤醒模块用于在第二线程重演结束后,根据第二线程的链表唤醒第一线程。
本申请实施例所提供的日志并行重演装置可执行本申请图4所提供的日志并行重演方法,具备执行方法相应的功能单元和有益效果。
图6为本申请实施例6提供的一种电子设备的结构示意图,如图6所示,该设备包括处理器601、存储器602、输入装置603和输出装置606;设备中处理器的数量可以是一个或多个,图6中以一个处理器为例;设备中的处理器、存储器、输入装置和输出装置可以通过总线或其他方式连接,图6中以通过总线连接为例。
存储器作为一种计算机可读存储介质,可用于存储软件程序、计算机可执行程序以及模块,如本申请图4中的日志并行重演方法对应的程序指令/模块(例如,日志并行重演装置中的获取模块501、确定模块502、重演模块503)。处理器通过运行存储在存储器中的软件程序、指令以及模块,从而执行设备的各种功能应用以及数据处理,即实现上述的日志并行重演方法。
存储器可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需的应用程序;存储数据区可存储根据终端的使用所创建的数据等。此外,存储器可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他非易失性固态存储器件。在一些实例中,存储器可进一步包括相对于处理器远程设置的存储器,这些远程存储器可以通过网络连接至设备/终端/服务器。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。
输入装置可用于接收输入的数字或字符信息,以及产生与设备的用户设置以及功能控制有关的键信号输入。输出装置可包括操作面板等显示设备。
本申请实施例还提供一种包含计算机可执行指令的存储介质,该计算机可执行指令在由计算机处理器执行时用于执行一种日志并行重演方法,该方法包括:
获取当前物理事务的重做日志和第一线程已重演的最大LSN;
在重做日志包含X闩锁ROOT页日志的情况下,获取第一线程已重演的最大LSN,根据最大LSN确定并行线程重演同步机制;
根据并行线程重演同步机制重演日志。
通过以上关于实施方式的描述,所属领域的技术人员可以清楚地了解到,本申请可借助软件及必需的通用硬件来实现,当然也可以通过硬件实现,但很多情况下前者是更佳的实施方式。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在计算机可读存储介质中,如计算机的软盘、只读存储器(Read-Only Memory,ROM)、随机存取存储器(RandomAccess Memory,RAM)、闪存(FLASH)、硬盘或光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本申请各个实施例所述的方法。
值得注意的是,上述日志并行重演装置中所包括的模块只是按照功能逻辑进行划分,但并不局限于上述的划分方式,只要能够实现相应的功能即可;另外,电子控制模块等模块的具体名称也只是为了便于区分,并不用于限制本申请的保护范围。
注意,上述仅为本申请的较佳实施例及所运用技术原理。本领域技术人员会理解,本申请不限于这里所述的特定实施例,对本领域技术人员来说能够进行各种明显的变化、重新调整和替代而不会脱离本申请的保护范围。因此,虽然通过以上实施例对本申请进行了较为详细的说明,但是本申请不仅仅限于以上实施例,在不脱离本申请构思的情况下,还可以包括更多其他等效实施例,而本申请的范围由所附的权利要求范围决定。
Claims (8)
1.一种日志并行重演方法,其特征在于,包括:
获取当前物理事务的重做日志和第一线程已重演的最大日志序列号LSN;
在所述重做日志包含X闩锁ROOT页日志的情况下,根据所述最大LSN确定并行线程重演同步机制;其中,所述并行线程重演同步机制是多个重演线程并行处理数据库主备集群中备机与主机之间数据同步的一种机制;
根据所述并行线程重演同步机制重演日志;
所述根据所述最大LSN确定并行线程重演同步机制,包括:
在所述最大LSN小于所述当前物理事务的重演LSN的情况下,在所述第一线程的链表中加入第二线程的结构体,根据修改后的第一线程的链表确定并行重演同步机制;
其中,所述第二线程为负责重演ROOT页日志的线程;
或者,在所述最大LSN等于所述当前物理事务的重演LSN的情况下,根据所述第一线程的链表信息确定并行线程重演同步机制。
2.根据权利要求1所述的方法,其特征在于,根据修改后的第一线程的链表确定并行重演同步机制,包括:
在所述最大LSN等于所述当前物理事务的重演LSN的情况下,在所述第二线程的链表中加入所述第一线程的结构体,唤醒所述第二线程。
3.根据权利要求1所述的方法,其特征在于,根据所述第一线程的链表信息确定并行线程重演同步机制,包括:
在所述第一线程的链表信息中未包含有第二线程的结构体的情况下,在所述第二线程的链表中加入第一线程的结构体。
4.根据权利要求2-3任一项所述的方法,其特征在于,所述方法还包括:
调用所述第二线程重演所述当前物理事务。
5.根据权利要求4所述的方法,其特征在于,在所述第二线程重演结束后,根据所述第二线程的链表唤醒所述第一线程。
6.一种日志并行重演装置,其特征在于,包括:
获取模块,用于获取当前物理事务的重做日志和第一线程已重演的最大日志序列号LSN;
确定模块,用于在所述重做日志包含X闩锁ROOT页日志的情况下,根据所述最大LSN确定并行线程重演同步机制;其中,所述并行线程重演同步机制是多个重演线程并行处理数据库主备集群中备机与主机之间数据同步的一种机制;
重演模块,用于根据所述并行线程重演同步机制重演日志;
所述确定模块,还用于:
在所述最大LSN小于所述当前物理事务的重演LSN的情况下,在所述第一线程的链表中加入第二线程的结构体,根据修改后的第一线程的链表确定并行重演同步机制;
其中,所述第二线程为负责重演ROOT页日志的线程;
或者,在所述最大LSN等于所述当前物理事务的重演LSN的情况下,所述确定模块,用于根据所述第一线程的链表信息确定并行线程重演同步机制。
7.一种电子设备,其特征在于,包括:存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其特征在于,所述处理器执行所述计算机程序时,实现如权利要求1-5任一项所述的日志并行重演方法。
8.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时,实现如权利要求1-5任一项所述的日志并行重演方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011590419.9A CN112612647B (zh) | 2020-12-29 | 2020-12-29 | 日志并行重演方法、装置、设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011590419.9A CN112612647B (zh) | 2020-12-29 | 2020-12-29 | 日志并行重演方法、装置、设备及存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112612647A CN112612647A (zh) | 2021-04-06 |
CN112612647B true CN112612647B (zh) | 2024-02-23 |
Family
ID=75248637
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202011590419.9A Active CN112612647B (zh) | 2020-12-29 | 2020-12-29 | 日志并行重演方法、装置、设备及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112612647B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113239120B (zh) * | 2021-06-07 | 2023-08-18 | 上海达梦数据库有限公司 | 一种日志同步方法、装置、设备及存储介质 |
Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7249150B1 (en) * | 2001-07-03 | 2007-07-24 | Network Appliance, Inc. | System and method for parallelized replay of an NVRAM log in a storage appliance |
US7376866B1 (en) * | 2004-10-22 | 2008-05-20 | Network Appliance, Inc. | Method and an apparatus to perform fast log replay |
CN101185076A (zh) * | 2005-03-31 | 2008-05-21 | 瑞士银行股份有限公司 | 用于使第二数据库与第一数据库同步的计算机网络系统及相应过程 |
KR100891036B1 (ko) * | 2008-09-08 | 2009-03-31 | (주)데이타뱅크시스템즈 | 데이터베이스의 실시간 복제를 통한 자동 복구 시스템 및 그 방법 |
CN107133143A (zh) * | 2017-04-25 | 2017-09-05 | 努比亚技术有限公司 | 重启日志归并方法、上传方法、系统及可读存储介质 |
CN107562883A (zh) * | 2017-09-04 | 2018-01-09 | 马上消费金融股份有限公司 | 一种数据同步的方法及系统 |
EP3327589A1 (en) * | 2016-11-28 | 2018-05-30 | Sap Se | Delayed snapshot isolation for read service at a database |
CN111858501A (zh) * | 2020-06-02 | 2020-10-30 | 武汉达梦数据库有限公司 | 一种基于日志解析同步的日志读取方法和数据同步系统 |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7305421B2 (en) * | 2001-07-16 | 2007-12-04 | Sap Ag | Parallelized redo-only logging and recovery for highly available main memory database systems |
US9069704B2 (en) * | 2011-11-07 | 2015-06-30 | Sap Se | Database log replay parallelization |
US10402374B2 (en) * | 2013-08-26 | 2019-09-03 | Vmware, Inc. | Log-structured storage device format |
US9934110B2 (en) * | 2016-05-03 | 2018-04-03 | Netapp, Inc. | Methods for detecting out-of-order sequencing during journal recovery and devices thereof |
US11442823B2 (en) * | 2016-06-03 | 2022-09-13 | International Business Machines Corporation | Transaction consistency query support for replicated data from recovery log to external data stores |
-
2020
- 2020-12-29 CN CN202011590419.9A patent/CN112612647B/zh active Active
Patent Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7249150B1 (en) * | 2001-07-03 | 2007-07-24 | Network Appliance, Inc. | System and method for parallelized replay of an NVRAM log in a storage appliance |
US7376866B1 (en) * | 2004-10-22 | 2008-05-20 | Network Appliance, Inc. | Method and an apparatus to perform fast log replay |
CN101185076A (zh) * | 2005-03-31 | 2008-05-21 | 瑞士银行股份有限公司 | 用于使第二数据库与第一数据库同步的计算机网络系统及相应过程 |
KR100891036B1 (ko) * | 2008-09-08 | 2009-03-31 | (주)데이타뱅크시스템즈 | 데이터베이스의 실시간 복제를 통한 자동 복구 시스템 및 그 방법 |
EP3327589A1 (en) * | 2016-11-28 | 2018-05-30 | Sap Se | Delayed snapshot isolation for read service at a database |
CN107133143A (zh) * | 2017-04-25 | 2017-09-05 | 努比亚技术有限公司 | 重启日志归并方法、上传方法、系统及可读存储介质 |
CN107562883A (zh) * | 2017-09-04 | 2018-01-09 | 马上消费金融股份有限公司 | 一种数据同步的方法及系统 |
CN111858501A (zh) * | 2020-06-02 | 2020-10-30 | 武汉达梦数据库有限公司 | 一种基于日志解析同步的日志读取方法和数据同步系统 |
Also Published As
Publication number | Publication date |
---|---|
CN112612647A (zh) | 2021-04-06 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10754875B2 (en) | Copying data changes to a target database | |
US8108343B2 (en) | De-duplication and completeness in multi-log based replication | |
CN109739935B (zh) | 数据读取方法、装置、电子设备以及存储介质 | |
US5724581A (en) | Data base management system for recovering from an abnormal condition | |
US8874519B1 (en) | Method and apparatus for restoring a table in a database | |
EP2797013B1 (en) | Database update execution according to power management schemes | |
CN108509462B (zh) | 一种同步活动事务表的方法及装置 | |
CN103729442A (zh) | 记录事务日志的方法和数据库引擎 | |
US10621156B1 (en) | Application schemas for journal-based databases | |
Rae et al. | Online, asynchronous schema change in F1 | |
JPH0212460A (ja) | 索引木への並列アクセスのためのデータ・アクセス方法およびデータ処理システム | |
CN111522631A (zh) | 分布式事务处理方法、装置、服务器及介质 | |
CN112131237A (zh) | 数据同步方法、装置、设备及计算机可读介质 | |
WO2022134876A1 (zh) | 数据同步方法、装置、电子设备、存储介质 | |
EP4276651A1 (en) | Log execution method and apparatus, and computer device and storage medium | |
EP4307137A1 (en) | Transaction processing method, distributed database system, cluster, and medium | |
CN113391885A (zh) | 一种分布式事务处理系统 | |
CN113792094A (zh) | 一种数据同步系统、方法、设备及介质 | |
CN113868028A (zh) | 一种在数据节点上回放日志的方法、数据节点及系统 | |
WO2022242372A1 (zh) | 对象处理方法、装置、计算机设备和存储介质 | |
CN109165258A (zh) | 一种数据同步方法与装置 | |
CN112612647B (zh) | 日志并行重演方法、装置、设备及存储介质 | |
CN111694863A (zh) | 一种数据库缓存的刷新方法、系统和装置 | |
US20230315713A1 (en) | Operation request processing method, apparatus, device, readable storage medium, and system | |
CN110737710A (zh) | 分布式数据自动结构化入库方法及系统 |
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 |