CN112596953A - 数据库日志重演方法、装置、设备及存储介质 - Google Patents
数据库日志重演方法、装置、设备及存储介质 Download PDFInfo
- Publication number
- CN112596953A CN112596953A CN202011567119.9A CN202011567119A CN112596953A CN 112596953 A CN112596953 A CN 112596953A CN 202011567119 A CN202011567119 A CN 202011567119A CN 112596953 A CN112596953 A CN 112596953A
- Authority
- CN
- China
- Prior art keywords
- redo log
- replay
- current
- packet
- log
- 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.)
- Granted
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
-
- 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/1675—Temporal synchronisation or re-synchronisation of redundant processing components
-
- 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
-
- 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
-
- 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
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Databases & Information Systems (AREA)
- Quality & Reliability (AREA)
- Computing Systems (AREA)
- Data Mining & Analysis (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明公开了一种数据库日志重演方法、装置、设备及存储介质,包括:确定当前重做日志包中是否包括目标重做日志,其中,目标重做日志为含有对象标识的预设封锁的重做日志;当确定当前重做日志包中包括目标重做日志时,等待已分发给重演线程的重做日志包重演完成;当确定已分发给重演线程的重做日志包重演完成时,将当前重做日志包分发至预设重演线程,并控制预设重演线程按照当前重做日志包中包括的重做日志的产生顺序,串行重演当前重做日志包。该数据库日志重演方法,可以保证在重演重做日志的同时进行查询时,加载到的对象字典信息一定是完整的,避免查询出错。
Description
技术领域
本发明实施例涉及数据库技术领域,尤其涉及数据库日志重演方法、装置、设备及存储介质。
背景技术
重做(Redo)日志是数据库管理系统中的一个重要功能模块。Redo日志包含了所有物理数据页的修改内容。Insert/delete/update等数据操纵语言(Data ManipulationLanguage,DML)操作、Create Table等数据定义语言(Data Definition Language,DDL)操作,最终都会转化为对物理数据页的修改,这些修改都会反映到Redo日志中。一般说来一条修改数据的结构化查询语言(Structured Query Language,SQL)语句(比如Insert),在数据库管理系统内部会转化为多个相互独立的物理事务来完成,物理事务产生的Redo日志最终会写入日志文件。一个物理事务(Physical Transaction,PTX)包含一个或者多个Redo记录(RREC),每个RREC都对应一个数据库内部的修改动作。
Redo日志重演就是备数据库的服务器解析主数据库的服务器生成的Redo日志,根据RREC记录的物理数据页地址和修改内容,重新修改数据页。Redo日志重演是数据库主备集群的实现基础。主数据库的服务器可以将多个Redo日志打包在不同的Redo日志包中,发送给备数据库的服务器。备数据库的服务器对Redo日志包进行重演,以跟主数据库中的数据保持一致。为了加快Redo日志重演速度,提升数据库主备集群的性能,引入了Redo日志并行重演机制。备数据库的服务器通过多个重演线程协同处理的方式,将Redo日志重演由单任务处理,调整为多个重演线程并行处理,达到了提升Redo日志重演性能的目的。
目前Redo日志并行重演中,备数据库的服务器根据Redo日志包的产生顺序,向各个重演线程分发当前Redo日志包。每个重演线程解析当前Redo日志包,跳过无关物理数据页的修改,仅重演与该重演线程对应的部分物理数据页的Redo日志。同一个物理数据页的Redo日志由同一个重演线程负责重演,每一个物理数据页是严格按照其修改顺序(即Redo日志的产生顺序)来重演,并保证最终的数据完整性和一致性。但是,主数据库的同一个物理事务中的Redo日志,可能分别由备数据库的服务器中不同的重演线程负责重演。Redo日志并行重演可以保证所有Redo日志重演完成后,主数据库与备数据库中的数据是最终一致的。
但是,由于Redo日志并行重演过程中,不同物理数据页的重演进度是存在差异的,并不是严格按照Redo日志的产生顺序进行重演的。因此,备数据库的服务器在重演Redo日志的同时进行查询时,可能会加载到不完整的数据库字典对象,导致查询出错。
发明内容
本发明提供一种数据库日志重演方法、装置、设备及存储介质,以解决目前的重演方法在重演Redo日志的同时进行查询时,可能会加载到不完整的数据库字典对象而导致查询出错的技术问题。
第一方面,本发明实施例提供一种数据库日志重演方法,应用于备数据库的服务器中,包括:
确定当前重做日志包中是否包括目标重做日志;其中,所述目标重做日志为含有对象标识的预设封锁的重做日志,所述当前重做日志包为主数据库的服务器执行数据定义语言DDL操作时生成的多个重做日志包中的一个,所述多个重做日志包中包括至少两个所述目标重做日志,其中一个所述目标重做日志的产生顺序位于所述多个重做日志包中包括的提交日志的产生顺序之前,并且与所述提交日志的产生顺序相邻;
当确定所述当前重做日志包中包括所述目标重做日志时,等待已分发给重演线程的重做日志包重演完成;其中,所述已分发给重演线程的重做日志包的产生顺序均位于所述当前重做日志包的产生顺序之前;
当确定所述已分发给重演线程的重做日志包重演完成时,将所述当前重做日志包分发至预设重演线程,并控制所述预设重演线程按照所述当前重做日志包中包括的重做日志的产生顺序,串行重演所述当前重做日志包。
第二方面,本发明实施例提供一种数据库日志重演装置,所述装置设置于备数据库的服务器中,包括:
第一确定模块,用于确定当前重做日志包中是否包括目标重做日志;其中,所述目标重做日志为含有对象标识的预设封锁的重做日志,所述当前重做日志包为主数据库的服务器执行DDL操作时生成的多个重做日志包中的一个,所述多个重做日志包中包括至少两个所述目标重做日志,其中一个所述目标重做日志的产生顺序位于所述多个重做日志包中包括的提交日志的产生顺序之前,并且与所述提交日志的产生顺序相邻;
等待模块,用于当确定所述当前重做日志包中包括所述目标重做日志时,等待已分发给重演线程的重做日志包重演完成;其中,所述已分发给重演线程的重做日志包的产生顺序均位于所述当前重做日志包的产生顺序之前;
第一分发模块,用于当确定所述已分发给重演线程的重做日志包重演完成时,将所述当前重做日志包分发至预设重演线程,并控制所述预设重演线程按照所述当前重做日志包中包括的重做日志的产生顺序,串行重演所述当前重做日志包。
第三方面,本发明实施例还提供了一种计算机设备,所述计算机设备包括:
一个或多个处理器;
存储器,用于存储一个或多个程序;
当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现如第一方面提供的数据库日志重演方法。
第四方面,本发明实施例还提供了一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现如第一方面提供的数据库日志重演方法。
本实施例提供一种数据库日志重演方法、装置、设备及存储介质,该方法包括:确定当前重做日志包中是否包括目标重做日志,其中,目标重做日志为含有对象标识的预设封锁的重做日志,当前重做日志包为主数据库的服务器执行DDL操作时生成的多个重做日志包中的一个,多个重做日志包中包括至少两个目标重做日志,其中一个目标重做日志的产生顺序位于多个重做日志包中包括的提交日志的产生顺序之前,并且与提交日志的产生顺序相邻;当确定当前重做日志包中包括目标重做日志时,等待已分发给重演线程的重做日志包重演完成,其中,已分发给重演线程的重做日志包的产生顺序均位于当前重做日志包的产生顺序之前;当确定已分发给重演线程的重做日志包重演完成时,将当前重做日志包分发至预设重演线程,并控制预设重演线程按照当前重做日志包中包括的重做日志的产生顺序,串行重演当前重做日志包。该数据库日志重演方法,既可以实现串行重演包括目标重做日志的当前重做日志包,还可以实现在重演包括目标重做日志的当前重做日志包之前,保证已分发给重演线程的重做日志包重演完成,一方面可以保证在重演系统表修改的重做日志之前,确保先重演对对象标识进行预设封锁的步骤,另一方面还可以保证在所有系统表的修改操作产生的重做日志重演完成之后,才会重演到提交动作并释放此对象标识的预设封锁。从而,保证在重演重做日志的同时进行查询时,加载到的对象字典信息一定是完整的,避免查询出错。
附图说明
图1为本发明提供的数据库日志重演方法实施例中物理事务以及重做日志记录的结构示意图;
图2为本发明提供的一种数据库日志重演方法实施例的流程示意图;
图3为本发明提供的另一种数据库日志重演方法实施例的流程示意图;
图4为本发明提供的一种数据库日志重演装置实施例的结构示意图;
图5为本发明提供的另一种数据库日志重演装置实施例的结构示意图;
图6为本发明提供的服务器的结构示意图。
具体实施方式
下面结合附图和实施例对本发明作进一步的详细说明。可以理解的是,此处所描述的具体实施例仅仅用于解释本发明,而非对本发明的限定。另外还需要说明的是,为了便于描述,附图中仅示出了与本发明相关的部分而非全部结构。
图1为本发明提供的数据库日志重演方法实施例中物理事务以及重做日志记录的结构示意图。如图1所示,一个PTX中包括PTX数据头以及n个RREC:RREC1、RREC2、……RRECn。根据记录内容的不同,RREC可以分为两类:物理RREC和逻辑RREC。物理RREC包括数据头和数据。数据头中可以包括该RREC的类型、相关的地址信息等。逻辑RREC包括数据头和数据。数据头中可以包括该RREC的类型、子类型等信息。物理RREC记录的是数据页的变化情况,记录内容包括:操作类型、修改数据页地址、页内偏移、数据长度和修改内容。其中,数据长度指的是需要写入的数据的长度。逻辑RREC记录的是一些数据库逻辑操作步骤,主要包括:事务启动、事务提交、事务回滚、字典封锁、事务封锁、B树封锁、字典淘汰等。
主数据库的服务器在执行DDL操作的过程中,会生成重做日志。一方面,在主数据库发生故障重启时,主数据库的服务器可以通过重演重做日志,将主数据库恢复到发生故障前的状态。另一方面,主数据库的服务器可以向备数据库的服务器发送该重做日志。备数据库的服务器通过重演该重做日志,保证备数据库中的数据的完整性和一致性。目前,备数据库的服务器可以通过并行重演的方式,提升重做日志重演性能。但是,备数据库的服务器在重演Redo日志的同时进行查询时,可能会加载到不完整的数据库字典对象,导致查询出错。以下详细解释为什么会出现这种问题。
主数据库执行DDL操作时,会先X封锁待修改的数据库字典对象(数据库字典对象又称为数据库对象、字典对象或者对象),再修改系统表数据。其中,系统表是用来登记数据库字典对象信息的表。系统表可以包括:SYSOBJECTS系统表、SYSCOLUMNS系统表、SYSINDEXES系统表等系统表。本实施例中的数据库字典对象可以包括表、视图及索引等。
例1以主数据库的服务器创建一张表TX为例进行说明。主数据库的服务器中,创建一张表TX的步骤如下所示。
步骤1:启动数据库事务TRX1,开始执行表创建动作。
步骤2:分配新创建表TX的表ID(这个动作只是在主数据库内存中执行,不会产生Redo日志,备库也不会重演这个步骤)。
步骤3:对表标识(IDentity,ID)进行X封锁。对表进行X封锁就是通过对表ID进行X封锁实现的。
步骤4:向SYSOBJECTS系统表中插入表ID、表名等信息。
步骤5:向SYSCOLUMNS、SYSINDEXES等系统表中插入表的列信息、表的索引信息等。
步骤6:表创建完成,事务TRX1提交,释放表ID的X封锁。执行该步骤对应生成提交(COMMIT)日志。
步骤2至步骤6为数据库事务TRX1的具体内容。上述步骤1至步骤6中,除步骤2之外,其他步骤均会在主数据库的服务器中产生重做日志。假设步骤1、步骤3及步骤4产生的重做日志在重做日志包RPKG1中。步骤5及步骤6产生的重做日志在重做日志包RPKG2中。
重做日志采用串行重演时,备数据库的服务器重演主数据库的DDL操作时,会按照上述顺序,即步骤1、步骤3至步骤6依次进行重演。在此期间,备数据库执行查询TX表的动作时,从SYSOBJECTS系统表加载到表ID后,对表ID进行S封锁时就会出现锁等待。直到备数据库将事务TRX1的COMMIT日志重演完成,X封锁释放后,备数据库的查询操作才会被唤醒,然后备数据库继续从系统表中加载TX表的列信息时,一定是完整的数据,查询不会出错。
重做日志采用并行重演时,备数据库的服务器在接收到重做日志包RPKG1及日志包RPKG2后,会根据RPKG1及RPKG2的产生顺序,先将RPKG1分发给各个重演线程。备数据库的服务器中的重演线程的数量可以预先设置。各个重演线程在收到RPKG1后,根据RPKG1中各个重做日志的物理数据页的页号以及重演线程的标识,确定各自需要重演的重做日志,并依照重做日志进行重演。在将RPKG1分发给各个重演线程后,再将RPKG2分发给各个重演线程。由于同一个物理数据页的重做日志由同一个重演线程负责重演,可能会出现重演线程的负载不均衡的情况。对同一个重做日志包(假设为RPKG1),各个重演线程在解析时,各自确定自己需要负责重演的日志,有可能某个重演线程负责重演的重做日志较少,该重演线程对这个日志包的重演速度就会更快。在结束对RPKG1的重演之后,该重演线程继续启动对RPKG2的重演,此时其他路的重演线程可能还在重演RPKG1的日志。因此,在并行重演重做日志时,可能会出现主数据库的服务器执行DDL操作产生的重做日志由不同的重演线程并行重演,并且各重演线程的重演进度不同的情况,不能保证备数据库的服务器是按照重做日志的产生顺序来依次重演。因此,可能导致在备数据库中查询到不完整的字典对象信息。
在例1中,只有步骤1-步骤6全部重演完成,才能在备数据库的系统表中查询到TX表完整的字典信息(例如,列信息、索引信息等)。本实施例中的字典信息指的是对象的描述信息。
备数据库的服务器查询表TX的操作在执行时会被分解为:第一步,先从SYSOBJECTS系统表获取表TX的ID,并对TX的ID上S锁。例1并行重演过程中,一旦步骤3被重演,只有步骤6执行完成,上S锁才可能成功。因为步骤3-步骤6期间TX的ID一直上有X锁。第二步,从SYSCOLUMNS、SYSINDEXES等系统表中获取TX表的相关信息。例1中,这部分数据只有步骤1-步骤6全部执行完成,TX表的相关信息才是完整的。
以下以两个具体场景说明查询出错的过程。
场景1:在重做日志并行重演的同时进行查询操作,虽然查询操作对表ID成功上S锁,但是因为创建表TX的整个重做日志重演过程没有完成,所以查询出错。
步骤1.1:备数据库的服务器中的重演线程RAPPLY_THRD1先重演插入SYSOBJECTS系统表的Redo日志(例1中步骤4)。
步骤1.2:备数据库的服务器对TX执行查询操作,需要先从SYSOBJECTS系统表获取TX表的ID,并执行S封锁。
步骤1.3:备数据库的服务器的并行重演线程RAPPLY_THRD2重演TX表ID的X封锁日志(例1中的步骤3),需S锁释放之后才能上X锁,产生封锁等待,此步重演处于等待中。
步骤1.4:备数据库的服务器对TX执行查询操作,继续从SYSCOLUMNS表中获取TX表的列信息。但是,此时TX表的创建动作并没有真正完成,SYSCOLUMNS系统表中并没有写入TX的列信息,备库加载到的TX表信息是不完整的,引发查询出错。
场景2:在重做日志并行重演的同时进行查询操作,查询操作一直无法对表ID上S锁,处于等待中。后来虽然成功上了S锁,但是因为整个日志重演过程没有完成,所以查询出错。
步骤2.1:备数据库的服务器的并行重演线程RAPPLY_THRD1重演TX表ID的X封锁日志(例1中步骤3)。此步骤重演之后表ID被上了X锁。
步骤2.2:备数据库的服务器的并行重演线程RAPPLY_THRD2重演插入SYSOBJECTS系统表的Redo日志(例1中步骤4)。
步骤2.3:备数据库的服务器执行查询操作,从SYSOBJECTS系统表获取TX表的ID,执行S封锁时产生锁等待。
步骤2.4:备数据库的服务器的并行重演线程RAPPLY_THRD3先重演了RPKG2中的事务TRX1的事务提交动作,将TX表ID的X封锁释放(例1中步骤6)。
步骤2.5:备数据库的服务器的查询操作被唤醒,但此时TX表的创建动作并没有真正完成,SYSCOLUMNS系统表中并没有写入TX的列信息,备数据库的服务器加载到的TX表信息是不完整的,引发查询出错。
针对上述问题的一种可行的解决方案是:
1.重演的过程中,在重演系统表修改的重做日志之前(例1中的步骤4和步骤5),确保先重演对表ID进行X封锁的步骤(例1中的步骤3)。
2.进一步地,按照上述新的重演策略执行:在重演包含对象ID的X封锁日志的当前日志包(包含例1中的步骤3产生的X封锁日志的日志包)时,先等待上一个日志包(指的是产生顺序位于该当前日志包之前的日志包)的各路并行重演线程重演结束,然后要求所有其他并行重演线程暂停工作,将包含X封锁的日志包切换为串行重演模式,在包含X封锁的日志包重演完成后,再重新启动并行重演。
3.更进一步地,DDL操作的重演需特别考虑:考虑到DDL操作的重做日志可能分布在多个日志包中,仅将包含第一条X封锁的日志包切换为串行重演,可能还会引发查询出错:参考上述场景2的描述,即,RPKG1在串行重演还未完成时,RPKG2中的步骤6的重做日志已重演完成,导致查询出错。因此,在主数据库的服务器执行DDL操作的COMMIT语句前,再次对同一个对象ID执行X封锁,目的是为了生成一条X封锁的REDO日志。备数据库的服务器在重演到这条X封锁日志时,按照对包含X封锁日志的日志包的重演策略,会先等待上一个日志包重演完成(按照例1中主数据库的日志产生顺序,所有系统表的修改操作产生的Redo日志一定在这条X封锁日志之前)。通过这种方式来保证在所有系统表的修改操作产生的Redo日志重演完成之后,才会重演到COMMIT动作并释放此对象ID的X封锁,从而保证备库的查询操作被唤醒时,加载到的对象字典信息一定是完整的。
基于上述解决方案,本实施例中,对主数据库的服务器创建表TX的步骤进行如下改进。为了后续描述方便,以例2表示该过程。
步骤1:启动数据库事务TRX1,开始执行表创建动作。
步骤2:分配新创建表TX的表ID(这个动作只是在主数据库内存中执行,不会产生Redo日志,备库也不会重演这个步骤)。
步骤3:对表ID进行X封锁。
步骤4:向SYSOBJECTS系统表中插入表ID、表名等信息。
步骤5:向SYSCOLUMNS、SYSINDEXES等系统表中插入表的列信息、表的索引信息等。
步骤6:再次对表TX的表ID进行X封锁(由于步骤3已经X封锁成功,因此这里并不会重复上锁,目的只是为了生成一条X封锁的日志,备数据库的服务器重演到这条重做日志时,能够切换为串行重演模式,保证在重演COMMIT日志释放X封锁之前,对系统表的所有修改动作已经重演完成)。
步骤7:表创建完成,事务TRX1提交,释放表ID的X封锁。
本实施例提供一种数据库日志重演方法,以解决目前在重演Redo日志的同时进行查询时,可能会加载到不完整的数据库字典对象而导致查询出错的问题。
图2为本发明提供的一种数据库日志重演方法实施例的流程示意图。本实施例适用于对重做日志进行并行重演的场景中。本实施例可以由数据库日志重演装置来执行,该数据库日志重演装置可以由软件和/或硬件的方式实现,该数据库日志重演装置可以集成于备数据库的服务器中。如图2所示,本实施例提供的数据库日志重演方法包括如下步骤:
步骤201:确定当前重做日志包中是否包括目标重做日志。
其中,目标重做日志为含有对象标识的预设封锁的重做日志。当前重做日志包为主数据库的服务器执行DDL操作时生成的多个重做日志包中的一个。多个重做日志包中包括至少两个目标重做日志,其中一个目标重做日志的产生顺序位于多个重做日志包中包括的提交日志的产生顺序之前,并且与提交日志的产生顺序相邻。
具体地,主数据库的服务器在生成多个重做日志后,会对这些重做日志进行打包传输。基于预先设置的重做日志包的大小,按照重做日志的产生顺序,将重做日志打包处理,并标记各个重做日志包的产生顺序。举例来说,在例2中,步骤1、步骤3至步骤4产生的重做日志打包在重做日志包1中,步骤5至步骤7产生的重做日志打包在重做日志包2中,重做日志包1的产生顺序在重做日志包2的产生顺序之前,假设在重做日志包1中标记其产生顺序为00,在重做日志包2中标记其产生顺序为01。
需要说明的是,本实施例中的重做日志的产生顺序指的是生成该重做日志的步骤执行的顺序。重做日志包的产生顺序指的是该重做日志包的生成顺序,其与重做日志包包括的产生顺序最晚的重做日志的产生顺序一致或者成正比。
如前所描述,备数据库的服务器在接收到多个重做日志包后,会根据重做日志包的产生顺序,先分发产生顺序最前的日志包。本实施例中的当前重做日志包指的是当前需要分发的重做日志包。该当前重做日志包为主数据库的服务器执行DDL操作时生成的多个重做日志包中的一个。基于例2的描述,这里的多个重做日志包中包括至少两个目标重做日志。本实施例中的目标重做日志指的是含有对象标识的预设封锁的重做日志。例如,例2中的步骤3产生的重做日志以及步骤6产生的重做日志均为目标重做日志。其中一个目标重做日志的产生顺序位于多个重做日志包中包括的提交日志的产生顺序之前,并且与提交日志的产生顺序相邻。也即,其中一个目标重做日志之后紧接着提交日志。
示例性地,本实施例中的预设封锁为X封锁。X封锁为排他型封锁。
当前重做日志包中的每个重做日志中均包括重做日志的类型,备数据库的服务器可以根据当前重做日志包中的每个重做日志的类型,确定该当前重做日志包中是否包括目标重做日志。
步骤202:当确定当前重做日志包中包括目标重做日志时,等待已分发给重演线程的重做日志包重演完成。
其中,已分发给重演线程的重做日志包的产生顺序均位于当前重做日志包的产生顺序之前。
具体地,一种场景中,在当前重做日志包分发之前,已经存在已分发给重演线程的重做日志包。由前面描述的日志包的分发逻辑可知,这些已分发给重演线程的重做日志包的产生顺序均位于当前重做日志包的产生顺序之前。
在步骤202中,需等待已分发给重演线程的重做日志包重演完成。
另一种场景中,在当前重做日志包分发之前,不存在已分发给重演线程的重做日志包,则直接执行下述步骤203。
步骤203:当确定已分发给重演线程的重做日志包重演完成时,将当前重做日志包分发至预设重演线程,并控制预设重演线程按照当前重做日志包中包括的重做日志的产生顺序,串行重演当前重做日志包。
一种实现方式中,重演线程在重演完重做日志后可以在重做日志中添加完成标记。步骤203中,可以通过查询已分发给重演线程的重做日志包的重做日志中是否包括完成标记,来确定已分发给重演线程的重做日志包是否重演完成。当确定已分发给重演线程的重做日志包的重做日志中均包括完成标记时,确定已分发给重演线程的重做日志包重演完成。
另一种实现方式中,可以通过向各重演线程发送重演进度查询请求来确定已分发给重演线程的重做日志包是否重演完成。
当确定已分发给重演线程的重做日志包重演完成时,将当前重做日志包分发至预设重演线程,并控制预设重演线程按照当前重做日志包中包括的重做日志的产生顺序,串行重演当前重做日志包。也即,控制预设重演线程按照当前重做日志包中包括的重做日志的产生顺序,从前到后重演当前重做日志包。示例性地,该预设重演线程可以为第0路重演线程。
可选地,步骤203之后,在确定串行重演完当前重做日志包后,将下一个重做日志包确定为新的当前重做日志包,返回执行确定当前重做日志包中是否包括目标重做日志的步骤。其中,下一个重做日志包的产生顺序位于当前重做日志包的产生顺序之后,并且,与当前重做日志包的产生顺序相邻。
可选地,当确定当前重做日志包不包括目标重做日志时,将当前重做日志包分发至重演线程,并控制重演线程并行重演当前重做日志包中对应的重做日志。之后,将下一个重做日志包确定为新的当前重做日志包,返回执行确定当前重做日志包中是否包括目标重做日志的步骤。可选地,备数据库的服务器可以通过控制线程完成将当前重做日志包分发至重演线程的过程。
该实现方式中,在当前重做日志包不包括目标重做日志时,可以依然按照并行重演方式进行重做日志重演,以提高重演的性能。
更具体地,控制重演线程并行重演当前重做日志包中对应的重做日志,包括:控制重演线程根据当前重做日志包中包括的重做日志的物理数据页的页号以及重演线程的标识,确定各重演线程对应的重做日志;控制重演线程并行重演当前重做日志包中对应的重做日志。
以下以例2为例,说明上述步骤201至步骤203。假设例2中步骤1、步骤3至步骤4产生的重做日志打包在重做日志包1中,步骤5至步骤7产生的重做日志打包在重做日志包2中。并且,重做日志包1的产生顺序位于重做日志包2的产生顺序之前。
备数据库的服务器在收到重做日志包1及重做日志包2后,先分发重做日志包1。此时,重做日志包1为当前重做日志包。执行步骤201,由于步骤3对应的重做日志为目标重做日志。因此,确定当前重做日志包中包括目标重做日志。一种场景中,按照目前例2中直接从步骤1开始执行的过程,在重做日志包1之前,不存在已分发给重演线程的重做日志包,则直接执行步骤203。另一种场景中,假设例2在执行步骤1之前还执行了其他步骤,且该步骤对应的重做日志不包括在重做日志包1中,则在重做日志包1之前,存在已分发给重演线程的重做日志包,则执行步骤202,之后,执行步骤203:当确定已分发给重演线程的重做日志包重演完成时,将当前重做日志包分发至预设重演线程,并控制该预设重演线程按照当前重做日志包中包括的重做日志的产生顺序,串行重演当前重做日志包。在串行重演当前重做日志包的过程中,会按照步骤1、步骤3至步骤4的执行顺序,依次重演这些步骤。
在重做日志包1重演完成之后,将重做日志包2作为新的当前重做日志包。执行步骤201,由于步骤6对应的重做日志为目标重做日志。因此,确定当前重做日志包中包括目标重做日志。执行步骤202,等待已分发给重演线程的重做日志包重演完成,即等待重做日志包1重演完成。之后,执行步骤203:将当前重做日志包分发至预设重演线程,并控制该预设重演线程按照当前重做日志包中包括的重做日志的产生顺序,串行重演当前重做日志包。在串行重演当前重做日志包的过程中,会按照步骤5、步骤6至步骤7的执行顺序,依次重演这些步骤。
对应于场景1,采用本实施例提供的数据库日志重演方法不会存在先重演例1中的步骤4,再重演例1中的步骤3的问题。原因解释如下。假设步骤3生成的重做日志和步骤4生成的重做日志在同一个重做日志包中,由于步骤3生成的重做日志为目标重做日志,因此,该重做日志包会按照重做日志的生成顺序,串行重演,则步骤3生成的重做日志必然在步骤4生成的重做日志之前重演。假设步骤3生成的重做日志和步骤4生成的重做日志不在同一个重做日志包中,则也需要确定包括步骤3生成的重做日志的重做日志包串行重演完成,才会重演包括步骤4生成的重做日志的重做日志包。因此,本实施例提供的数据库日志重演方法可以解决场景1中存在的问题。
对应于场景2,采用本实施例提供的数据库日志重演方法不会存在先重演例1中的步骤6(对应于例2中的步骤7),再重演例1中的步骤5的问题。原因解释如下。在例2中,假设步骤5、步骤6及步骤7生成的重做日志在同一个重做日志包中,由于步骤6生成的重做日志为目标重做日志,因此,该重做日志包会按照重做日志的生成顺序,串行重演,则步骤5生成的重做日志必然在步骤7生成的重做日志之前重演。假设步骤5、步骤6及步骤7生成的重做日志不在同一个重做日志包中,例如,步骤5及步骤6生成的重做日志在同一个重做日志包A中,步骤7生成的重做日志在单独的一个重做日志包B中。基于前述描述,重做日志包A会串行重演。重做日志包B会在重做日志包A重演完成之后,才开始重演。也即,步骤5的重演必然在步骤7的重演之前。因此,本实施例提供的数据库日志重演方法可以解决场景2中存在的问题。
本实施例提供的数据库日志重演方法,包括:确定当前重做日志包中是否包括目标重做日志,其中,目标重做日志为含有对象标识的预设封锁的重做日志,当前重做日志包为主数据库的服务器执行DDL操作时生成的多个重做日志包中的一个,多个重做日志包中包括至少两个目标重做日志,其中一个目标重做日志的产生顺序位于多个重做日志包中包括的提交日志的产生顺序之前,并且与提交日志的产生顺序相邻;当确定当前重做日志包中包括目标重做日志时,等待已分发给重演线程的重做日志包重演完成,其中,已分发给重演线程的重做日志包的产生顺序均位于当前重做日志包的产生顺序之前;当确定已分发给重演线程的重做日志包重演完成时,将当前重做日志包分发至预设重演线程,并控制预设重演线程按照当前重做日志包中包括的重做日志的产生顺序,串行重演当前重做日志包。该数据库日志重演方法,既可以实现串行重演包括目标重做日志的当前重做日志包,还可以实现在重演包括目标重做日志的当前重做日志包之前,保证已分发给重演线程的重做日志包重演完成,一方面可以保证在重演系统表修改的重做日志之前,确保先重演对对象标识进行预设封锁的步骤,另一方面还可以保证在所有系统表的修改操作产生的重做日志重演完成之后,才会重演到提交动作并释放此对象标识的预设封锁。从而,保证在重演重做日志的同时进行查询时,加载到的对象字典信息一定是完整的,避免查询出错。
图3为本发明提供的另一种数据库日志重演方法实施例的流程示意图。本实施例在图2所示实施例及各种可选的实现方案的基础上,对该数据库日志重演方法做进一步的说明。如图3所示,本实施例提供的数据库日志重演方法包括如下步骤:
步骤301:确定当前重做日志包中是否包括目标重做日志。
其中,目标重做日志为含有对象标识的预设封锁的重做日志。当前重做日志包为主数据库的服务器执行DDL操作时生成的多个重做日志包中的一个。多个重做日志包中包括至少两个目标重做日志,其中一个目标重做日志的产生顺序位于多个重做日志包中包括的提交日志的产生顺序之前,并且与提交日志的产生顺序相邻。
步骤302:当确定当前重做日志包中包括目标重做日志时,等待已分发给重演线程的重做日志包重演完成。
其中,已分发给重演线程的重做日志包的产生顺序均位于当前重做日志包的产生顺序之前。
步骤303:当确定已分发给重演线程的重做日志包重演完成时,将当前重做日志包分发至预设重演线程,并控制预设重演线程按照当前重做日志包中包括的重做日志的产生顺序,串行重演当前重做日志包。
步骤304:在确定串行重演完当前重做日志包后,将下一个重做日志包确定为新的当前重做日志包,返回执行确定当前重做日志包中是否包括目标重做日志的步骤。
其中,下一个重做日志包的产生顺序位于当前重做日志包的产生顺序之后,并且,与当前重做日志包的产生顺序相邻。
步骤305:当确定当前重做日志包不包括目标重做日志时,将当前重做日志包分发至重演线程,并控制重演线程并行重演当前重做日志包中对应的重做日志。
步骤306:将下一个重做日志包确定为新的当前重做日志包,返回执行确定当前重做日志包中是否包括目标重做日志的步骤。
本实施例提供的数据库日志重演方法,可以保证在重演重做日志的同时进行查询时,加载到的对象字典信息一定是完整的基础上,实现对不包括目标重做日志的重做日志包的并行重演,以提高重演效率。
图4为本发明提供的一种数据库日志重演装置实施例的结构示意图。该装置设置于备数据库的服务器中。如图4所示,本实施例提供的数据库日志重演装置包括:第一确定模块41、等待模块42以及第一分发模块43。
第一确定模块41,用于确定当前重做日志包中是否包括目标重做日志。
其中,目标重做日志为含有对象标识的预设封锁的重做日志。当前重做日志包为主数据库的服务器执行DDL操作时生成的多个重做日志包中的一个。多个重做日志包中包括至少两个目标重做日志,其中一个目标重做日志的产生顺序位于多个重做日志包中包括的提交日志的产生顺序之前,并且与提交日志的产生顺序相邻。
等待模块42,用于当确定当前重做日志包中包括目标重做日志时,等待已分发给重演线程的重做日志包重演完成。
其中,已分发给重演线程的重做日志包的产生顺序均位于当前重做日志包的产生顺序之前。
第一分发模块43,用于当确定已分发给重演线程的重做日志包重演完成时,将当前重做日志包分发至预设重演线程,并控制预设重演线程按照当前重做日志包中包括的重做日志的产生顺序,串行重演当前重做日志包。
可选地,装置还包括:第二确定模块。
第二确定模块,用于在确定串行重演完当前重做日志包后,将下一个重做日志包确定为新的当前重做日志包,返回执行确定当前重做日志包中是否包括目标重做日志的步骤。其中,下一个重做日志包的产生顺序位于当前重做日志包的产生顺序之后,并且,与当前重做日志包的产生顺序相邻。
可选地,预设封锁为X封锁。
本发明实施例所提供的数据库日志重演装置可执行本发明任意实施例所提供的数据库日志重演方法,具备执行方法相应的功能模块和有益效果。
图5为本发明提供的另一种数据库日志重演装置实施例的结构示意图。本实施例在图4所示实施例及各种可选的实现方案的基础上,对数据库日志重演装置包括的其他模块作一详细说明。如图5所示,本实施例提供的数据库日志重演装置还包括如下模块:第二分发模块51。
第二分发模块51,用于当确定当前重做日志包不包括目标重做日志时,将当前重做日志包分发至重演线程,并控制重演线程并行重演当前重做日志包中对应的重做日志。
可选地,在控制重演线程并行重演当前重做日志包中对应的重做日志的方面,第二分发模块51具体用于:控制重演线程根据当前重做日志包中包括的重做日志的物理数据页的页号以及重演线程的标识,确定各重演线程对应的重做日志;控制重演线程并行重演当前重做日志包中对应的重做日志。
可选地,该装置还包括:第三确定模块。
第三确定模块,用于将下一个重做日志包确定为新的当前重做日志包,返回执行确定当前重做日志包中是否包括目标重做日志的步骤。
本发明实施例所提供的数据库日志重演装置可执行本发明任意实施例所提供的数据库日志重演方法,具备执行方法相应的功能模块和有益效果。
图6为本发明提供的服务器的结构示意图。如图6所示,该计算机设备包括处理器60和存储器61。该计算机设备中处理器60的数量可以是一个或多个,图6中以一个处理器60为例;该计算机设备的处理器60和存储器61可以通过总线或其他方式连接,图6中以通过总线连接为例。
存储器61作为一种计算机可读存储介质,可用于存储软件程序、计算机可执行程序以及模块,如本发明实施例中的数据库日志重演方法对应的程序指令以及模块(例如,数据库日志重演装置中的第一确定模块41、等待模块42以及第一分发模块43)。处理器60通过运行存储在存储器61中的软件程序、指令以及模块,从而执行计算机设备的各种功能应用以及数据处理,即实现上述的数据库日志重演方法。
存储器61可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需的应用程序;存储数据区可存储根据计算机设备的使用所创建的数据等。此外,存储器61可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他非易失性固态存储器件。在一些实施例中,存储器61可进一步包括相对于处理器60远程设置的存储器,这些远程存储器可以通过网络连接至计算机设备。上述网络的实施例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。
本发明还提供一种包含计算机可执行指令的存储介质,所述计算机可执行指令在由计算机处理器执行时用于执行一种数据库日志重演方法,该方法包括:
确定当前重做日志包中是否包括目标重做日志;其中,所述目标重做日志为含有对象标识的预设封锁的重做日志,所述当前重做日志包为主数据库的服务器执行DDL操作时生成的多个重做日志包中的一个,所述多个重做日志包中包括至少两个所述目标重做日志,其中一个所述目标重做日志的产生顺序位于所述多个重做日志包中包括的提交日志的产生顺序之前,并且与所述提交日志的产生顺序相邻;
当确定所述当前重做日志包中包括所述目标重做日志时,等待已分发给重演线程的重做日志包重演完成;其中,所述已分发给重演线程的重做日志包的产生顺序均位于所述当前重做日志包的产生顺序之前;
当确定所述已分发给重演线程的重做日志包重演完成时,将所述当前重做日志包分发至预设重演线程,并控制所述预设重演线程按照所述当前重做日志包中包括的重做日志的产生顺序,串行重演所述当前重做日志包。
当然,本发明实施例所提供的一种包含计算机可执行指令的存储介质,其计算机可执行指令不限于如上所述的方法操作,还可以执行本发明任意实施例所提供的数据库日志重演方法中的相关操作。
通过以上关于实施方式的描述,所属领域的技术人员可以清楚地了解到,本发明可借助软件及必需的通用硬件来实现,当然也可以通过硬件实现,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在计算机可读存储介质中,如计算机的软盘、只读存储器(Read-Only Memory,ROM)、随机存取存储器(RandomAccess Memory,RAM)、闪存(FLASH)、硬盘或光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述的方法。
值得注意的是,上述数据库日志重演装置的实施例中,所包括的各个单元和模块只是按照功能逻辑进行划分的,但并不局限于上述的划分,只要能够实现相应的功能即可;另外,各功能单元的具体名称也只是为了便于相互区分,并不用于限制本发明的保护范围。
注意,上述仅为本发明的较佳实施例及所运用技术原理。本领域技术人员会理解,本发明不限于这里所述的特定实施例,对本领域技术人员来说能够进行各种明显的变化、重新调整和替代而不会脱离本发明的保护范围。因此,虽然通过以上实施例对本发明进行了较为详细的说明,但是本发明不仅仅限于以上实施例,在不脱离本发明构思的情况下,还可以包括更多其他等效实施例,而本发明的范围由所附的权利要求范围决定。
Claims (10)
1.一种数据库日志重演方法,其特征在于,应用于备数据库的服务器中,包括:
确定当前重做日志包中是否包括目标重做日志;其中,所述目标重做日志为含有对象标识的预设封锁的重做日志,所述当前重做日志包为主数据库的服务器执行数据定义语言DDL操作时生成的多个重做日志包中的一个,所述多个重做日志包中包括至少两个所述目标重做日志,其中一个所述目标重做日志的产生顺序位于所述多个重做日志包中包括的提交日志的产生顺序之前,并且与所述提交日志的产生顺序相邻;
当确定所述当前重做日志包中包括所述目标重做日志时,等待已分发给重演线程的重做日志包重演完成;其中,所述已分发给重演线程的重做日志包的产生顺序均位于所述当前重做日志包的产生顺序之前;
当确定所述已分发给重演线程的重做日志包重演完成时,将所述当前重做日志包分发至预设重演线程,并控制所述预设重演线程按照所述当前重做日志包中包括的重做日志的产生顺序,串行重演所述当前重做日志包。
2.根据权利要求1所述的方法,其特征在于,所述将所述当前重做日志包分发至预设重演线程,并控制所述预设重演线程按照所述当前重做日志包中包括的重做日志的产生顺序,串行重演所述当前重做日志包之后,所述方法还包括:
在确定串行重演完所述当前重做日志包后,将下一个重做日志包确定为新的当前重做日志包,返回执行确定当前重做日志包中是否包括目标重做日志的步骤;其中,下一个重做日志包的产生顺序位于所述当前重做日志包的产生顺序之后,并且,与所述当前重做日志包的产生顺序相邻。
3.根据权利要求2所述的方法,其特征在于,所述方法还包括:
当确定所述当前重做日志包不包括所述目标重做日志时,将所述当前重做日志包分发至所述重演线程,并控制所述重演线程并行重演所述当前重做日志包中对应的重做日志。
4.根据权利要求3所述的方法,其特征在于,所述将所述当前重做日志包分发至所述重演线程,并控制所述重演线程并行重演所述当前重做日志包中对应的重做日志之后,所述方法还包括:
将所述下一个重做日志包确定为新的当前重做日志包,返回执行确定当前重做日志包中是否包括目标重做日志的步骤。
5.根据权利要求3所述的方法,其特征在于,所述控制所述重演线程并行重演所述当前重做日志包中对应的重做日志,包括:
控制所述重演线程根据所述当前重做日志包中包括的重做日志的物理数据页的页号以及重演线程的标识,确定各重演线程对应的重做日志;
控制所述重演线程并行重演所述当前重做日志包中对应的重做日志。
6.根据权利要求1至5任一项所述的方法,其特征在于,所述预设封锁为X封锁。
7.一种数据库日志重演装置,其特征在于,所述装置设置于备数据库的服务器中,包括:
第一确定模块,用于确定当前重做日志包中是否包括目标重做日志;其中,所述目标重做日志为含有对象标识的预设封锁的重做日志,所述当前重做日志包为主数据库的服务器执行数据定义语言DDL操作时生成的多个重做日志包中的一个,所述多个重做日志包中包括至少两个所述目标重做日志,其中一个所述目标重做日志的产生顺序位于所述多个重做日志包中包括的提交日志的产生顺序之前,并且与所述提交日志的产生顺序相邻;
等待模块,用于当确定所述当前重做日志包中包括所述目标重做日志时,等待已分发给重演线程的重做日志包重演完成;其中,所述已分发给重演线程的重做日志包的产生顺序均位于所述当前重做日志包的产生顺序之前;
第一分发模块,用于当确定所述已分发给重演线程的重做日志包重演完成时,将所述当前重做日志包分发至预设重演线程,并控制所述预设重演线程按照所述当前重做日志包中包括的重做日志的产生顺序,串行重演所述当前重做日志包。
8.根据权利要求7所述的装置,其特征在于,所述装置还包括:
第二确定模块,用于在确定串行重演完所述当前重做日志包后,将下一个重做日志包确定为新的当前重做日志包,返回执行确定当前重做日志包中是否包括目标重做日志的步骤;其中,下一个重做日志包的产生顺序位于所述当前重做日志包的产生顺序之后,并且,与所述当前重做日志包的产生顺序相邻。
9.一种计算机设备,其特征在于,所述计算机设备包括:
一个或多个处理器;
存储器,用于存储一个或多个程序;
当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现如权利要求1至6中任一所述的数据库日志重演方法。
10.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,该程序被处理器执行时实现如权利要求1至6中任一所述的数据库日志重演方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011567119.9A CN112596953B (zh) | 2020-12-25 | 2020-12-25 | 数据库日志重演方法、装置、设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011567119.9A CN112596953B (zh) | 2020-12-25 | 2020-12-25 | 数据库日志重演方法、装置、设备及存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112596953A true CN112596953A (zh) | 2021-04-02 |
CN112596953B CN112596953B (zh) | 2023-08-29 |
Family
ID=75202525
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202011567119.9A Active CN112596953B (zh) | 2020-12-25 | 2020-12-25 | 数据库日志重演方法、装置、设备及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112596953B (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113553382A (zh) * | 2021-08-06 | 2021-10-26 | 上海达梦数据库有限公司 | 数据页的刷盘方法、装置、设备及存储介质 |
Citations (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20120310985A1 (en) * | 2011-06-01 | 2012-12-06 | Jim Gale | Systems and methods for replication replay in a relational database |
CN102945278A (zh) * | 2012-11-09 | 2013-02-27 | 华为技术有限公司 | 一种数据库记录重做日志的方法和装置 |
CN103198159A (zh) * | 2013-04-27 | 2013-07-10 | 国家计算机网络与信息安全管理中心 | 一种基于事务重做的异构集群多副本一致性维护方法 |
CN108874588A (zh) * | 2018-06-08 | 2018-11-23 | 郑州云海信息技术有限公司 | 一种数据库实例恢复方法和装置 |
CN109542631A (zh) * | 2018-11-22 | 2019-03-29 | 上海达梦数据库有限公司 | 一种备机的重演方法、装置、服务器及存储介质 |
CN110442560A (zh) * | 2019-08-14 | 2019-11-12 | 上海达梦数据库有限公司 | 一种日志重演方法、装置、服务器和存储介质 |
CN110543386A (zh) * | 2019-09-16 | 2019-12-06 | 上海达梦数据库有限公司 | 一种数据存储方法、装置、设备和存储介质 |
CN111125040A (zh) * | 2018-10-31 | 2020-05-08 | 华为技术有限公司 | 管理重做日志的方法、装置及存储介质 |
CN111324665A (zh) * | 2020-01-23 | 2020-06-23 | 阿里巴巴集团控股有限公司 | 一种日志回放方法及装置 |
CN111444147A (zh) * | 2020-03-30 | 2020-07-24 | 上海达梦数据库有限公司 | 一种数据页创建方法、装置、终端设备及存储介质 |
-
2020
- 2020-12-25 CN CN202011567119.9A patent/CN112596953B/zh active Active
Patent Citations (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20120310985A1 (en) * | 2011-06-01 | 2012-12-06 | Jim Gale | Systems and methods for replication replay in a relational database |
CN102945278A (zh) * | 2012-11-09 | 2013-02-27 | 华为技术有限公司 | 一种数据库记录重做日志的方法和装置 |
CN103198159A (zh) * | 2013-04-27 | 2013-07-10 | 国家计算机网络与信息安全管理中心 | 一种基于事务重做的异构集群多副本一致性维护方法 |
CN108874588A (zh) * | 2018-06-08 | 2018-11-23 | 郑州云海信息技术有限公司 | 一种数据库实例恢复方法和装置 |
CN111125040A (zh) * | 2018-10-31 | 2020-05-08 | 华为技术有限公司 | 管理重做日志的方法、装置及存储介质 |
CN109542631A (zh) * | 2018-11-22 | 2019-03-29 | 上海达梦数据库有限公司 | 一种备机的重演方法、装置、服务器及存储介质 |
CN110442560A (zh) * | 2019-08-14 | 2019-11-12 | 上海达梦数据库有限公司 | 一种日志重演方法、装置、服务器和存储介质 |
CN110543386A (zh) * | 2019-09-16 | 2019-12-06 | 上海达梦数据库有限公司 | 一种数据存储方法、装置、设备和存储介质 |
CN111324665A (zh) * | 2020-01-23 | 2020-06-23 | 阿里巴巴集团控股有限公司 | 一种日志回放方法及装置 |
CN111444147A (zh) * | 2020-03-30 | 2020-07-24 | 上海达梦数据库有限公司 | 一种数据页创建方法、装置、终端设备及存储介质 |
Non-Patent Citations (4)
Title |
---|
GE FU: "Fine Grained Transaction Log for Data Recovery in Database Systems", 《2008 THIRD ASIA-PACIFIC TRUSTED INFRASTRUCTURE TECHNOLOGIES CONFERENCE》 * |
GE FU: "Fine Grained Transaction Log for Data Recovery in Database Systems", 《2008 THIRD ASIA-PACIFIC TRUSTED INFRASTRUCTURE TECHNOLOGIES CONFERENCE》, 21 November 2008 (2008-11-21), pages 123 - 131 * |
卢栋栋等: "基于多线程的并行实例恢复方法", 《计算机应用》 * |
卢栋栋等: "基于多线程的并行实例恢复方法", 《计算机应用》, no. 04, 10 April 2016 (2016-04-10), pages 126 - 131 * |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113553382A (zh) * | 2021-08-06 | 2021-10-26 | 上海达梦数据库有限公司 | 数据页的刷盘方法、装置、设备及存储介质 |
CN113553382B (zh) * | 2021-08-06 | 2023-06-02 | 上海达梦数据库有限公司 | 数据页的刷盘方法、装置、设备及存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN112596953B (zh) | 2023-08-29 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10289443B2 (en) | System and method for sharing global transaction identifier (GTRID) in a transactional middleware environment | |
Sciascia et al. | Scalable deferred update replication | |
CN110442560B (zh) | 一种日志重演方法、装置、服务器和存储介质 | |
CN111597015B (zh) | 事务处理方法、装置、计算机设备及存储介质 | |
US20130110781A1 (en) | Server replication and transaction commitment | |
CN111338766A (zh) | 事务处理方法、装置、计算机设备及存储介质 | |
US11928089B2 (en) | Data processing method and device for distributed database, storage medium, and electronic device | |
CN107870954B (zh) | 一种分布式数据库的扩展方法及装置 | |
CN111190935B (zh) | 数据读取方法、装置、计算机设备及存储介质 | |
EP4213038A1 (en) | Data processing method and apparatus based on distributed storage, device, and medium | |
EP4170509A1 (en) | Method for playing back log on data node, data node, and system | |
TWI701567B (zh) | 針對資料庫的資料修改請求處理方法和裝置 | |
CN113391885A (zh) | 一种分布式事务处理系统 | |
CN112883045B (zh) | 数据库事务拆分执行方法及装置 | |
CN109783578B (zh) | 数据读取方法、装置、电子设备以及存储介质 | |
EP4307137A1 (en) | Transaction processing method, distributed database system, cluster, and medium | |
US20230098963A1 (en) | Object processing method and apparatus, computer device, and storage medium | |
CN112596953B (zh) | 数据库日志重演方法、装置、设备及存储介质 | |
CN113946628A (zh) | 一种基于拦截器的数据同步方法及装置 | |
CN113918654B (zh) | 一种区块数据提交的方法及装置 | |
CN112612647B (zh) | 日志并行重演方法、装置、设备及存储介质 | |
CN109857523B (zh) | 一种用于实现数据库高可用性的方法及装置 | |
Dong et al. | Asynchronous Consensus Quorum Read: Pioneering Read Optimization for Asynchronous Consensus Protocols | |
Bhargava et al. | Design and implementation of the Raid V2 distributed database system | |
CN117539841B (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 |