CN106855822A - 用于分布式事务处理的方法及设备 - Google Patents
用于分布式事务处理的方法及设备 Download PDFInfo
- Publication number
- CN106855822A CN106855822A CN201510900172.9A CN201510900172A CN106855822A CN 106855822 A CN106855822 A CN 106855822A CN 201510900172 A CN201510900172 A CN 201510900172A CN 106855822 A CN106855822 A CN 106855822A
- Authority
- CN
- China
- Prior art keywords
- log
- sequence numbers
- limitation
- slave node
- shared storage
- 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.)
- Pending
Links
Classifications
-
- 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/466—Transaction processing
-
- 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/465—Distributed object oriented systems
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本申请的目的是提供一种用于分布式事务处理的方法及设备,用以解决现有技术中可能无法保持备节点设备的事务特性的问题。其中,主节点设备在向共享存储设备回写事务提交的重做日志后,将事务提交的重做日志的日志序号作为提交日志序号发送给备节点设备;备节点设备在根据提交日志序号重放相关的重做日志后,返回限制日志序号;主节点设备向共享存储设备回写日志序号小于等于限制日志序号的数据页。通过主备节点之间相互通知相关的日志序号,并且对主节点设备向共享存储设备中回写数据页的进度进行限制,从而使得备节点设备的数据始终为主节点设备提交后某一事务后的快照,且不会读取到不应该可见的数据,由此保证事务特性。
Description
技术领域
本申请涉及计算机领域,尤其涉及一种用于分布式事务处理的方法及设备。
背景技术
随着互联网技术的发展,分布式事务的应用越来越广泛。基于共享存储的分布式事务数据库一般包括至少两个计算节点和一个数据节点,其中所述计算节点是指无需磁盘仅有操作系统的主机,包括一个主节点设备和至少一个备节点设备,而所述数据节点是指高可用的共享存储设备,可以通过网络输出为块设备,数据库的所有数据文件和日志都存在在所述共享存储设备的磁盘中,由所有计算节点共同挂载读取。在由可靠的数据节点的前提下(即不考虑共享存储设备的失效),利用更多的设备作为计算节点共享同一份磁盘数据,能够有效降低扩展计算资源的成本。
对于分布式事务处理的场景,在计算节点的主节点设备可读可写,备节点设备只可读的情况下,有可能会因为主节点设备向共享存储设备回写数据页的进度过快,导致保证备节点由共享存储设备中读取到不应该可见的数据,从而无法保持备节点设备的事务特性。
申请内容
本申请的一个目的是提供一种用于分布式事务处理的方法及设备,用以解决现有技术中可能无法保持备节点设备的事务特性的问题。
为实现上述目的,本申请提供了一种在主节点设备端用于分布式事务处理的方法,该方法包括:
在向共享存储设备回写事务提交的重做日志后,将所述事务提交的重做日志的日志序号作为提交日志序号发送给备节点设备;
接收所述备节点设备在重放日志序号小于等于所述提交日志序号的重做日志后所发送的限制日志序号,其中所述限制日志序号等于所述提交日志序号;
向共享存储设备回写日志序号小于等于所述限制日志序号的数据页。
本申请还提供了一种在备节点设备端用于分布式事务处理的方法,该方法包括:
接收主节点设备发送的提交日志序号,其中所述提交日志序号为所述主节点设备向共享存储设备回写的事务提交的重做日志的日志序号;
重放日志序号小于等于所述提交日志序号的重做日志;
向所述主节点设备发送限制日志序号,其中所述限制日志序号用于控制向共享存储设备回写日志序号小于等于所述限制日志序号的数据页,所述限制日志序号等于所述提交日志序号。
基于本申请的另一方面,还提供了一种用于分布式事务处理的主节点设备,该主节点设备包括:
发送装置,用于在向共享存储设备回写事务提交的重做日志后,将所述事务提交的重做日志的日志序号作为提交日志序号发送给备节点设备;
接收装置,用于接收所述备节点设备在重放日志序号小于等于所述提交日志序号的重做日志后所发送的限制日志序号,其中所述限制日志序号等于所述提交日志序号;
数据提交装置,用于向共享存储设备回写日志序号小于等于所述限制日志序号的数据页。
本申请还提供了一种用于分布式事务处理的备节点设备,该备节点设备包括:
接收装置,用于接收主节点设备发送的提交日志序号,其中所述提交日志序号为所述主节点设备向共享存储设备回写的事务提交的重做日志的日志序号;
日志应用装置,用于重放日志序号小于等于所述提交日志序号的重做日志;
发送装置,用于向所述主节点设备发送限制日志序号,其中所述限制日志序号用于控制向共享存储设备回写日志序号小于等于所述限制日志序号的数据页,所述限制日志序号等于所述提交日志序号。
与现有技术相比,本申请的技术方案中,主节点设备在向共享存储设备回写事务提交的重做日志后,将重做日志中对应事务提交事件的日志序号发送给备节点设备,由此控制备节点设备重放相应的重做日志,以更新备节点设备内存中的数据页。同时,主节点设备根据备节点设备的反馈来限制自身向回写数据页的进度,使得备节点设备的数据始终为主节点设备提交后某一事务后的快照,不会由共享存储设备中读取到不应该可见的数据,由此保证事务特性。
附图说明
通过阅读参照以下附图所作的对非限制性实施例所作的详细描述,本申请的其它特征、目的和优点将会变得更明显:
图1为本申请实施例中一种用于分布式事务处理的数据库系统的结构示意图;
图2为本申请实施例提供的一种在主节点设备端用于分布式事务处理的方法的流程图;
图3为本申请实施例提供的一种在备节点设备端用于分布式事务处理的方法的流程图;
图4为本申请实施例提供的一种用于分布式事务处理的主节点设备的结构示意图;
图5为本申请实施例提供的一种用于分布式事务处理的备节点设备的结构示意图;
图6为本申请实施例提供的另一种用于分布式事务处理的备节点设备的结构示意图;
图7为一种用于分布式事务处理的数据库系统中各个设备之间的交互流程图;
图8为一种用于分布式事务处理的数据库系统在处理过程中某一时刻的日志及数据状态示意图;
附图中相同或相似的附图标记代表相同或相似的部件。
具体实施方式
下面结合附图对本申请作进一步详细描述。
在本申请一个典型的配置中,终端、服务网络的设备和可信方均包括一个或多个处理器(CPU)、输入/输出接口、网络接口和内存。
内存可能包括计算机可读介质中的非永久性存储器,随机存取存储器(RAM)和/或非易失性内存等形式,如只读存储器(ROM)或闪存(flashRAM)。内存是计算机可读介质的示例。
计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁带磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括非暂存电脑可读媒体(transitory media),如调制的数据信号和载波。
图1示出了一种用于分布式事务处理的数据库系统,以一主一备的构架为例,该数据库系统中包括一台主节点设备110、一台备节点设备120和一台高可用的共享存储设备130,三者通过网络相互连接。其中,所述主节点设备110和备节点设备120均为仅有操作系统、且没有用于保存文件的磁盘的计算节点,所有文件均存在于内存中。而所述共享存储设备130可通过网络输出为块设备,数据库的所有数据文件和日志文件都存放在所述共享存储设备中,由所述主节点设备110和备节点设备120共同读取使用。根据实际的应用需求,该数据库系统也可以为包含多个备节点设备120,其中任意一个备节点设备与主节点设备、共享存储设备之间的交互方式,与本例中一主一备的构架类似。
在此,本领域技术人员应当理解,所述数据库系统中的主节点设备110、备节点设备120和共享存储设备130可以包括但不限于用户设备、网络设备或用户设备与网络设备通过网络相集成所构成的设备。所述用户设备包括但不限于个人计算机、触控终端等实现;所述网络设备包括但不限于如网络主机、单个网络服务器、多个网络服务器集或基于云计算的计算机集合等实现。在此,云由基于云计算(Cloud Computing)的大量主机或网络服务器构成,其中,云计算是分布式计算的一种,由一群松散耦合的计算机集组成的一个虚拟计算机。
图2示出了在主节点设备110端用于分布式事务处理的方法包括:
步骤S201,主节点设备在向共享存储设备回写事务提交的重做日志(Redo Log)后,将所述事务提交的重做日志的日志序号(LSN)作为提交日志序号发送给备节点设备。
其中,所述重做日志包含对一个数据库实例进行所有数据修改的物理操作记录,因此通过在另一个数据库实例重放重做日志,就可以重新进行原数据库实例的所有物理操作,从而同步数据。例如,主节点设备在进行事务处理时,每一次对数据进行的修改均会生成相应的日志写入重做日志,备节点设备通过重放相应的重做日志即可实现重复对相应数据的修改操作,由此同步数据。重做日志中的每条日志都会有一个日志序号,该日志序号用于标记每个日志在重做日志中的位置,相当于对应的数据修改事件产生的位置,每个被修改的数据页也会包含相应的日志序号表示其最新被修改的点在重做日志中位置。
主节点设备在进行事务处理时,会对内存中的数据页进行一系列修改,同时产生相应的日志写入重做日志中,在提交事务时,同样会产生对应于该提交事务事件的日志被写入重做日志中。在事务提交之后,重做日志会被主节点设备由其内存及时回写到共享存储设备的磁盘中,而修改的数据页则采用异步的方式在其内存写满之前回写到共享存储设备的磁盘中。主节点设备在回写重做日志后,将所述事务提交的重做日志的日志序号(即对应事务提交的日志的日志序号),作为提交日志序号发送给备节点设备,在本例中所述提交日志序号记为LSN_COMMIT。
步骤S202,主节点设备接收所述备节点设备在重放日志序号小于等于所述提交日志序号的重做日志后所发送的限制日志序号。
主节点设备通过LSN_COMMIT来控制备节点设备重放哪些日志,从而将相应的数据变更应用到被节点设备内存的数据页中。为了备节点设备的数据与主库在提交事务后的数据一致,备节点设备将重放日志序号小于等于LSN_COMMIT的重做日志,以完成数据同步。
在连续处理的过程中,若备节点设备上一次接收到的LSN_COMMIT为5,此次接收到的LSN_COMMIT为10,对于本次处理,由于LSN小于等于5的日志已经在上次处理过程中完成了重放,因此只需要重放LSN为6-10的日志即可。由此,步骤S202具体包括:主节点设备接收所述备节点设备在重放变更日志后所发送的限制日志序号,其中所述变更日志包括日志序号在前一次接收到的标记日志序号至本次接收到的标记日志序号之间的重做日志,所述限制日志序号等于本次所述备节点设备本次接收到提交日志序号。
此外,主节点设备接收到的限制日志序号由备节点设备在重放相应的日志之后发出,该限制日志序号记为LSN_LIMIT,与对应的LSN_COMMIT相等,表示备节点设备当前已经重放的日志,能够标记备节点设备内存中数据页的状态。在连续处理的过程中,若备节点设备上一次接收到的LSN_COMMIT为5,此次接收到的LSN_COMMIT为10,由此本次重放LSN为6-10的日志,则相应的LSN_LIMIT也为10。
步骤S203,主节点设备向共享存储设备回写日志序号小于等于所述限制日志序号的数据页。
主节点设备通过备节点设备返回的LSN_LIMIT来限制其内存中的数据页回写至共享存储设备磁盘的进度。只有根据LSN_LIMIT确认备节点设备已经重放了相应的重做日志,才将对应的数据页回写到共享存储设备磁盘。例如,接收到的LSN_LIMIT为5,则将LSN小于等于5的数据页回写共享存储设备磁盘,此时磁盘上的数据文件和备节点设备内存中的数据,构成主节点设备在LSN为5时的数据状态的快照。由此保证共享存储设备磁盘中的数据更新不会早于备节点设备内存中的数据更新,使得备节点设备不会由共享存储设备中读取到不应该可见的数据,由此保证事务特性。
进一步地,在连续处理的过程中,若主节点设备上一次接收到的LSN_LIMIT为5,此次接收到的LSN_LIMI为10,对于本次处理,由于LSN小于等于5的数据页已经在上次处理过程回写完毕,因此只需要回写LSN为6-10的数据页即可。由此,步骤S203具体包括:主节点设备向共享存储设备回写日志序号在前一次接收到的限制日志序号至本次接收到的限制日志序号之间的数据页。
在备节点设备120端,用于分布式事务处理的方法如图3所示,包括以下步骤:
步骤S301,备节点设备接收主节点设备发送的提交日志序号,其中所述提交日志序号为所述主节点设备向共享存储设备回写的事务提交的重做日志的日志序号。
步骤S302,备节点设备重放日志序号小于等于所述提交日志序号的重做日志。
由于主节点设备与备节点设备共用共享存储设备的磁盘,主节点设备会在提交事务后把相应的重做日志回写到共享存储设备的磁盘中,因此备节点设备用于重放的重做日志可以根据收到的提交日志序号,由共享存储设备的磁盘中读取,然后进行重放。具体地,所述步骤S302可以包括两个步骤:
S3021,由所述共享存储设备获取日志序号小于等于所述提交日志序号的重做日志。
S3022,重放所述重做日志。
在连续处理的过程中,对于本次处理,仅需要重放上次接收到的LSN_COMMIT到本次收到的LSN_COMMIT之间的重做日志即可,因此可以仅读取需要重放的日志即可。具体地,所述步骤S3021包括:由所述共享存储设备获取日志序号在前一次接收到的标记日志序号至本次接收到的标记日志序号之间的重做日志。例如,备节点设备上一次接收到的LSN_COMMIT为5,此次接收到的LSN_COMMIT为10,对于本次处理,由于LSN小于等于5的日志已经在上次处理过程中由共享存储设备中读取并进行了重放,因此在本次处理时,只需要从共享存储设备读取LSN为6-10的日志即可。
步骤S302,用于向所述主节点设备发送限制日志序号,其中所述限制日志序号用于控制向共享存储设备回写日志序号小于等于所述限制日志序号的数据页,所述限制日志序号等于所述提交日志序号。
备节点设备通过限制日志序号来限制其内存中的数据页回写至共享存储设备磁盘的进度,由此保证共享存储设备磁盘中的数据更新不会早于备节点设备内存中的数据更新,使得备节点设备不会由共享存储设备中读取到不应该可见的数据,由此保证事务特性。
由于所述备节点设备为仅有操作系统、且没有用于保存文件的磁盘的计算节点,所有文件均存在于内存中。内存能够保存的数据量相对有限,当备节点设备中的内存满时,就需要删除一些数据页,为重放重做日志留出内存空间。由于备节点设备会通过重放重做日志,生成LSN_COMMIT之前的数据页,而主节点设备也会根据相应的LSN_LIMIT向共享存储设备回写数据页,因此备节点设备若需要删除内存中的数据页,可以删除主节点设备已经回写到共享存储设备中的数据页(即小于等于LSN_LIMIT的数据页)。由于这些删除的数据页已经由主节点设备回写至共享存储设备,备节点设备在需要时可以随时读取,因此不会造成备节点设备的数据缺失,保证事务特性。
由此,在备节点设备120端,用于分布式事务处理的方法还包括:若需要删除所述备节点设备中的数据页,则删除日志序号小于等于所述限制日志序号的数据页。
在本实施例中,所述用于分布式事务处理的数据库系统中主节点设备可读可写,所述备节点设备仅可读,且备节点设备中的数据始终为主节点设备在某次事务提交之后的时间点的数据状态快照。当备节点设备接收到读请求时,可以根据读请求由其内存的数据页中调取相应的数据,若备节点设备的内存中缺少相应的数据页导致无法直接调取相应的数据(相应的数据页已经删除),由于这些缺少的数据页已经由主节点设备回写至共享存储设备,因此备节点设备可以根据需要从共享存储设备中获取所述读请求对应的数据页,以完成数据读取,由此保证备节点设备的数据完整性。
由此,在备节点设备120端,用于分布式事务处理的方法还包括:获取读请求,若所述备节点设备不包含所述读请求对应的数据页,则由所述共享存储设备获取所述读请求对应的数据页。
基于本申请的另一方面,本实施例提供了一种用于分布式事务处理的主节点设备,该主节点设备110的结构如图4所示,包括发送装置111、接收装置112和数据提交装置113。
具体的,所述发送装置111用于在向共享存储设备回写事务提交的重做日志后,将所述事务提交的重做日志的日志序号作为提交日志序号发送给备节点设备。
其中,所述重做日志包含对一个数据库实例进行所有数据修改的物理操作记录,因此通过在另一个数据库实例重放重做日志,就可以重新进行原数据库实例的所有物理操作,从而同步数据。例如,主节点设备在进行事务处理时,每一次对数据进行的修改均会生成相应的日志写入重做日志,备节点设备通过重放相应的重做日志即可实现重复对相应数据的修改操作,由此同步数据。重做日志中的每条日志都会有一个日志序号,该日志序号用于标记每个日志在重做日志中的位置,相当于对应的数据修改事件产生的位置,每个被修改的数据页也会包含相应的日志序号表示其最新被修改的点在重做日志中位置。
主节点设备在进行事务处理时,会对内存中的数据页进行一系列修改,同时产生相应的日志写入重做日志中,在提交事务时,同样会产生对应于该提交事务事件的日志被写入重做日志中。在事务提交之后,重做日志会被主节点设备由其内存及时回写到共享存储设备的磁盘中,而修改的数据页则采用异步的方式在其内存写满之前回写到共享存储设备的磁盘中。主节点设备在回写重做日志后,将所述事务提交的重做日志的日志序号(即对应事务提交的日志的日志序号),作为提交日志序号发送给备节点设备,在本例中所述提交日志序号记为LSN_COMMIT。
所述接收装置112用于接收所述备节点设备在重放日志序号小于等于所述提交日志序号的重做日志后所发送的限制日志序号,其中所述限制日志序号等于所述提交日志序号。
主节点设备通过LSN_COMMIT来控制备节点设备重放哪些日志,从而将相应的数据变更应用到被节点设备内存的数据页中。为了备节点设备的数据与主库在提交事务后的数据一致,备节点设备将重放日志序号小于等于LSN_COMMIT的重做日志,以完成数据同步。
在连续处理的过程中,若备节点设备上一次接收到的LSN_COMMIT为5,此次接收到的LSN_COMMIT为10,对于本次处理,由于LSN小于等于5的日志已经在上次处理过程中完成了重放,因此只需要重放LSN为6-10的日志即可。由此,所述接收装置112具体用于接收所述备节点设备在重放变更日志后所发送的限制日志序号,其中所述变更日志包括日志序号在前一次接收到的标记日志序号至本次接收到的标记日志序号之间的重做日志,所述限制日志序号等于本次所述备节点设备本次接收到提交日志序号。
此外,主节点设备接收到的限制日志序号由备节点设备在重放相应的日志之后发出,该限制日志序号记为LSN_LIMIT,与对应的LSN_COMMIT相等,表示备节点设备当前已经重放的日志,能够标记备节点设备内存中数据页的状态。在连续处理的过程中,若备节点设备上一次接收到的LSN_COMMIT为5,此次接收到的LSN_COMMIT为10,由此本次重放LSN为6-10的日志,则相应的LSN_LIMIT也为10。
所述数据提交装置113用于向共享存储设备回写日志序号小于等于所述限制日志序号的数据页。
主节点设备通过备节点设备返回的LSN_LIMIT来限制其内存中的数据页回写至共享存储设备磁盘的进度。只有根据LSN_LIMIT确认备节点设备已经重放了相应的重做日志,才将对应的数据页回写到共享存储设备磁盘。例如,接收到的LSN_LIMIT为5,则将LSN小于等于5的数据页回写共享存储设备磁盘,此时磁盘上的数据文件和备节点设备内存中的数据,构成主节点设备在LSN为5时的数据状态的快照。由此保证共享存储设备磁盘中的数据更新不会早于备节点设备内存中的数据更新,使得备节点设备不会由共享存储设备中读取到不应该可见的数据,由此保证事务特性。
进一步地,在连续处理的过程中,若主节点设备上一次接收到的LSN_LIMIT为5,此次接收到的LSN_LIMI为10,对于本次处理,由于LSN小于等于5的数据页已经在上次处理过程回写完毕,因此只需要回写LSN为6-10的数据页即可。由此,所述数据提交装置113,具体用于向共享存储设备回写日志序号在前一次接收到的限制日志序号至本次接收到的限制日志序号之间的数据页。
此外,本申请实施例还提供了一种用于分布式事务处理的备节点设备。该备节点设备120的结构如图5所示,包括接收装置121、日志应用装置122和发送装置123。
具体的,所述接收装置121用于接收主节点设备发送的提交日志序号,其中所述提交日志序号为所述主节点设备向共享存储设备回写的事务提交的重做日志的日志序号。
所述日志应用装置122用于重放日志序号小于等于所述提交日志序号的重做日志。由于主节点设备与备节点设备共用共享存储设备的磁盘,主节点设备会在提交事务后把相应的重做日志回写到共享存储设备的磁盘中,因此备节点设备用于重放的重做日志可以根据收到的提交日志序号,由共享存储设备的磁盘中读取,然后进行重放。所述日志应用装置122,具体用于由所述共享存储设备获取日志序号小于等于所述提交日志序号的重做日志,以及重放所述重做日志。
在连续处理的过程中,对于本次处理,仅需要重放上次接收到的LSN_COMMIT到本次收到的LSN_COMMIT之间的重做日志即可,因此可以仅读取需要重放的日志即可。具体地,所述日志应用装置122用于由所述共享存储设备获取日志序号在前一次接收到的标记日志序号至本次接收到的标记日志序号之间的重做日志,以及重放所述重做日志。例如,备节点设备上一次接收到的LSN_COMMIT为5,此次接收到的LSN_COMMIT为10,对于本次处理,由于LSN小于等于5的日志已经在上次处理过程中由共享存储设备中读取并进行了重放,因此在本次处理时,只需要从共享存储设备读取LSN为6-10的日志即可。
所述发送装置123用于向所述主节点设备发送限制日志序号,其中所述限制日志序号用于控制向共享存储设备回写日志序号小于等于所述限制日志序号的数据页,所述限制日志序号等于所述提交日志序号。备节点设备通过限制日志序号来限制其内存中的数据页回写至共享存储设备磁盘的进度,由此保证共享存储设备磁盘中的数据更新不会早于备节点设备内存中的数据更新,使得备节点设备不会由共享存储设备中读取到不应该可见的数据,由此保证事务特性。
由于所述备节点设备为仅有操作系统、且没有用于保存文件的磁盘的计算节点,所有文件均存在于内存中。内存能够保存的数据量相对有限,当备节点设备中的内存满时,就需要删除一些数据页,为重放重做日志留出内存空间。由于备节点设备会通过重放重做日志,生成LSN_COMMIT之前的数据页,而主节点设备也会根据相应的LSN_LIMIT向共享存储设备回写数据页,因此备节点设备若需要删除内存中的数据页,可以删除主节点设备已经回写到共享存储设备中的数据页(即小于等于LSN_LIMIT的数据页)。由于这些删除的数据页已经由主节点设备回写至共享存储设备,备节点设备在需要时可以随时读取,因此不会造成备节点设备的数据缺失,保证事务特性。
由此,本申请实施例还提供了一种优选的用于分布式事务处理的备节点设备,该备节点设备120的结构如图6所示,除如图5所示的接收装置121、日志应用装置122和发送装置123之外,还包括清理装置124。具体的,该清理装置124用于在需要删除所述备节点设备中的数据页时,删除日志序号小于等于所述限制日志序号的数据页。
在本实施例中,所述用于分布式事务处理的数据库系统中主节点设备可读可写,所述备节点设备仅可读,且备节点设备中的数据始终为主节点设备在某次事务提交之后的时间点的数据状态快照。当备节点设备接收到读请求时,可以根据读请求由其内存的数据页中调取相应的数据,若备节点设备的内存中缺少相应的数据页导致无法直接调取相应的数据(相应的数据页已经删除),由于这些缺少的数据页已经由主节点设备回写至共享存储设备,因此备节点设备可以根据需要从共享存储设备中获取所述读请求对应的数据页,以完成数据读取,由此保证备节点设备的数据完整性。
由此,所述备节点设备120的所述接收装置121还用于获取读请求,以及在所述备节点设备不包含所述读请求对应的数据页时,由所述共享存储设备获取所述读请求对应的数据页。
以本实施例中一主一备构架的数据库系统为例,主节点设备可读可写,能够处理读写请求,备节点设备仅可读,仅可处理读请求,图7示出了该数据库系统中主节点设备110、备节点设备120和共享存储设备130之间的交互流程图,具体如下:
步骤S701,主节点设备110在进行事提交后,会将该事务相关的RedoLog(重做日志)及时写入到共享存储设备130的日志文件中。例如某一事务处理过程中对应的Redo Log的LSN为6-10,其事务提交对应的RedoLog的LSN为10。
步骤S702,主节点设备110在向共享存储设备130磁盘的日志文件中写入LSN为6-10的Redo Log之后,向备节点设备120通知已经回写的事务提交的Redo Log对应的LSN。该LSN即为LSN_COMMIT(提交日志序号)。
步骤S703,备节点设备120根据LSN_COMMIT所表示的LSN,由共享存储设备130的日志文件中读取本次LSN_COMMIT与上次LSN_COMMIT之间的Redo Log。在本例中,本次LSN_COMMIT表示的LSN为10,上次LSN_COMMIT表示的LSN为5,因此在本步骤中备节点设备120由共享存储设备130的日志文件读取LSN为6-10的Redo Log。
步骤S704,备节点设备120重放读取到的Redo Log,来更新对应的数据,同时更新LSN_LIMIT(限制日志序号)为已经重放的Redo Log的LSN。由此,在Redo Log重放完成后,LSN_LIMIT表示的LSN为10。
步骤S705,备节点设备120将LSN_LIMIT通知主节点设备110。
步骤S706,主节点设备110根据接收到的LSN_LIMIT所表示的LSN,向共享存储设备130磁盘的数据文件写入本次LSN_LIMIT与上次LSN_LIMIT之间的数据页。
步骤S707,当备节点设备120中的内存用完时,可以根据当前更新的LSN_LIMIT删除LSN_LIMIT之前的相应数据页,从而释放内存。例如,当LSN_LIMIT更新为10之后,可以删除LSN为10之前的数据页,以释放内存,完成正常的处理。
步骤S708,备节点设备120在处理读请求时,当其内存中无法找到相关的数据页时,由共享存储设备130磁盘的数据文件读取对应的数据页,使得备节点设备能够完成读请求的处理。
以图8所示的状态为例,主节点设备110生成并向共享存储设备130的日志文件中写入的Redo Log的LSN为50,而备节点设备120已经重放并Redo Log的LSN为40,其内存中最新的数据页的LSN为40。考虑通信以及读写处理的延迟,因此主节点设备110有可能还未根据最新更新的LSN_LIMIT向共享存储设备130的数据文件写入LSN 40之前的所有数据页,假设此时共享存储设备130的数据文件中最新的数据页的LSN为30。由此可知,由备节点设备120和共享存储设备130中最多可以读取到LSN为40的数据页。
例如,若备节点设备120由于内存不足而删除了LSN 20之前的数据页,当备节点设备120需要根据读请求读取LSN为15的数据页中的数据时,由于在其内存中缺少对应的数据页,则可以从共享存储设备130的数据文件中去读取LSN为15的数据页,从而完成读请求的处理。若备节点设备120由于内存不足而删除了LSN 40之前的所有数据页,当备节点设备120需要根据读请求读取LSN为35的数据页中的数据时,由于此时共享存储设备130的数据文件中最新的数据页的LSN为30,此时备节点设备120需要等待主节点设备根据LSN_LIMIT向共享存储设备130的数据文件写入LSN为31-40的数据页之后,再从共享存储设备130的数据文件中去读取LSN为35的数据页,从而完成读请求的处理。
综上所述,主节点设备在向共享存储设备回写事务提交的重做日志后,将重做日志中对应事务提交事件的日志序号发送给备节点设备,由此控制备节点设备重放相应的重做日志,以更新备节点设备内存中的数据页。同时,主节点设备根据备节点设备的反馈来限制自身向回写数据页的进度,使得备节点设备的数据始终为主节点设备提交后某一事务后的快照,不会由共享存储设备中读取到不应该可见的数据,由此保证事务特性。
需要注意的是,本申请可在软件和/或软件与硬件的组合体中被实施,例如,可采用专用集成电路(ASIC)、通用目的计算机或任何其他类似硬件设备来实现。在一个实施例中,本申请的软件程序可以通过处理器执行以实现上文所述步骤或功能。同样地,本申请的软件程序(包括相关的数据结构)可以被存储到计算机可读记录介质中,例如,RAM存储器,磁或光驱动器或软磁盘及类似设备。另外,本申请的一些步骤或功能可采用硬件来实现,例如,作为与处理器配合从而执行各个步骤或功能的电路。
另外,本申请的一部分可被应用为计算机程序产品,例如计算机程序指令,当其被计算机执行时,通过该计算机的操作,可以调用或提供根据本申请的方法和/或技术方案。而调用本申请的方法的程序指令,可能被存储在固定的或可移动的记录介质中,和/或通过广播或其他信号承载媒体中的数据流而被传输,和/或被存储在根据所述程序指令运行的计算机设备的工作存储器中。在此,根据本申请的一个实施例包括一个装置,该装置包括用于存储计算机程序指令的存储器和用于执行程序指令的处理器,其中,当该计算机程序指令被该处理器执行时,触发该装置运行基于前述根据本申请的多个实施例的方法和/或技术方案。
对于本领域技术人员而言,显然本申请不限于上述示范性实施例的细节,而且在不背离本申请的精神或基本特征的情况下,能够以其他的具体形式实现本申请。因此,无论从哪一点来看,均应将实施例看作是示范性的,而且是非限制性的,本申请的范围由所附权利要求而不是上述说明限定,因此旨在将落在权利要求的等同要件的含义和范围内的所有变化涵括在本申请内。不应将权利要求中的任何附图标记视为限制所涉及的权利要求。此外,显然“包括”一词不排除其他单元或步骤,单数不排除复数。装置权利要求中陈述的多个单元或装置也可以由一个单元或装置通过软件或者硬件来实现。第一,第二等词语用来表示名称,而并不表示任何特定的顺序。
Claims (16)
1.一种在主节点设备端用于分布式事务处理的方法,其中,该方法包括:
在向共享存储设备回写事务提交的重做日志后,将所述事务提交的重做日志的日志序号作为提交日志序号发送给备节点设备;
接收所述备节点设备在重放日志序号小于等于所述提交日志序号的重做日志后所发送的限制日志序号,其中所述限制日志序号等于所述提交日志序号;
向共享存储设备回写日志序号小于等于所述限制日志序号的数据页。
2.根据权利要求1所述的方法,其中,接收所述备节点设备在重放日志序号小于等于所述提交日志序号的重做日志后所发送的限制日志序号,包括:
接收所述备节点设备在重放变更日志后所发送的限制日志序号,其中所述变更日志包括日志序号在前一次接收到的标记日志序号至本次接收到的标记日志序号之间的重做日志,所述限制日志序号等于本次所述备节点设备本次接收到提交日志序号。
3.根据权利要求2所述的方法,其中,向共享存储设备回写日志序号小于等于所述限制日志序号的数据页,包括:
向共享存储设备回写日志序号在前一次接收到的限制日志序号至本次接收到的限制日志序号之间的数据页。
4.一种在备节点设备端用于分布式事务处理的方法,其中,该方法包括:
接收主节点设备发送的提交日志序号,其中所述提交日志序号为所述主节点设备向共享存储设备回写的事务提交的重做日志的日志序号;
重放日志序号小于等于所述提交日志序号的重做日志;
向所述主节点设备发送限制日志序号,其中所述限制日志序号用于控制向共享存储设备回写日志序号小于等于所述限制日志序号的数据页,所述限制日志序号等于所述提交日志序号。
5.根据权利要求4所述的方法,其中,重放日志序号小于等于所述提交日志序号的重做日志,包括:
由所述共享存储设备获取日志序号小于等于所述提交日志序号的重做日志;
重放所述重做日志。
6.根据权利要求5所述的方法,其中,由所述共享存储设备获取日志序号小于等于所述提交日志序号的重做日志,包括:
由所述共享存储设备获取日志序号在前一次接收到的标记日志序号至本次接收到的标记日志序号之间的重做日志。
7.根据权利要求4至6中任一所述的方法,其中,该方法还包括:
若需要删除所述备节点设备中的数据页,则删除日志序号小于等于所述限制日志序号的数据页。
8.根据权利要求7所述的方法,其中,该方法还包括:
获取读请求;
若所述备节点设备不包含所述读请求对应的数据页,则由所述共享存储设备获取所述读请求对应的数据页。
9.一种用于分布式事务处理的主节点设备,其中,该主节点设备包括:
发送装置,用于在向共享存储设备回写事务提交的重做日志后,将所述事务提交的重做日志的日志序号作为提交日志序号发送给备节点设备;
接收装置,用于接收所述备节点设备在重放日志序号小于等于所述提交日志序号的重做日志后所发送的限制日志序号,其中所述限制日志序号等于所述提交日志序号;
数据提交装置,用于向共享存储设备回写日志序号小于等于所述限制日志序号的数据页。
10.根据权利要求9所述的主节点设备,其中,所述接收装置,用于接收所述备节点设备在重放变更日志后所发送的限制日志序号,其中所述变更日志包括日志序号在前一次接收到的标记日志序号至本次接收到的标记日志序号之间的重做日志,所述限制日志序号等于本次所述备节点设备本次接收到提交日志序号。
11.根据权利要求10所述的主节点设备,其中,所述数据提交装置,用于向共享存储设备回写日志序号在前一次接收到的限制日志序号至本次接收到的限制日志序号之间的数据页。
12.一种用于分布式事务处理的备节点设备,其中,该备节点设备包括:
接收装置,用于接收主节点设备发送的提交日志序号,其中所述提交日志序号为所述主节点设备向共享存储设备回写的事务提交的重做日志的日志序号;
日志应用装置,用于重放日志序号小于等于所述提交日志序号的重做日志;
发送装置,用于向所述主节点设备发送限制日志序号,其中所述限制日志序号用于控制向共享存储设备回写日志序号小于等于所述限制日志序号的数据页,所述限制日志序号等于所述提交日志序号。
13.根据权利要求12所述的备节点设备,其中,所述日志应用装置,用于由所述共享存储设备获取日志序号小于等于所述提交日志序号的重做日志,以及重放所述重做日志。
14.根据权利要求13所述的备节点设备,其中,所述日志应用装置,用于由所述共享存储设备获取日志序号在前一次接收到的标记日志序号至本次接收到的标记日志序号之间的重做日志,以及重放所述重做日志。
15.根据权利要求12至14中任一所述的备节点设备,其中,该备节点设备还包括:
清理装置,用于在需要删除所述备节点设备中的数据页时,删除日志序号小于等于所述限制日志序号的数据页。
16.根据权利要求15中所述的设备,其中,所述接收装置,还用于获取读请求,以及在所述备节点设备不包含所述读请求对应的数据页时,由所述共享存储设备获取所述读请求对应的数据页。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510900172.9A CN106855822A (zh) | 2015-12-08 | 2015-12-08 | 用于分布式事务处理的方法及设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510900172.9A CN106855822A (zh) | 2015-12-08 | 2015-12-08 | 用于分布式事务处理的方法及设备 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN106855822A true CN106855822A (zh) | 2017-06-16 |
Family
ID=59132340
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201510900172.9A Pending CN106855822A (zh) | 2015-12-08 | 2015-12-08 | 用于分布式事务处理的方法及设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN106855822A (zh) |
Cited By (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110019066A (zh) * | 2017-09-21 | 2019-07-16 | 阿里巴巴集团控股有限公司 | 数据库处理方法及装置、系统 |
CN110196788A (zh) * | 2018-03-30 | 2019-09-03 | 腾讯科技(深圳)有限公司 | 一种数据读取方法、装置、系统及存储介质 |
CN110737716A (zh) * | 2018-07-02 | 2020-01-31 | 华为技术有限公司 | 一种数据写入的方法和装置 |
CN110895545A (zh) * | 2018-08-22 | 2020-03-20 | 阿里巴巴集团控股有限公司 | 共享数据同步方法及装置 |
CN111046024A (zh) * | 2019-12-16 | 2020-04-21 | 上海达梦数据库有限公司 | 一种共享存储数据库的数据处理方法、装置、设备及介质 |
CN111125163A (zh) * | 2018-10-30 | 2020-05-08 | 百度在线网络技术(北京)有限公司 | 用于处理数据的方法和装置 |
CN111930788A (zh) * | 2020-09-04 | 2020-11-13 | 阿里云计算有限公司 | 操作请求的处理方法、装置、设备、可读存储介质及系统 |
CN111966652A (zh) * | 2019-05-20 | 2020-11-20 | 阿里巴巴集团控股有限公司 | 共享存储同步数据的方法、装置、设备、系统和存储介质 |
CN112346913A (zh) * | 2020-12-01 | 2021-02-09 | 上海达梦数据库有限公司 | 数据恢复方法、装置、设备及存储介质 |
CN112637284A (zh) * | 2020-12-09 | 2021-04-09 | 北京金山云网络技术有限公司 | 重做日志的存储方法和装置、电子设备和存储介质 |
CN112988880A (zh) * | 2019-12-12 | 2021-06-18 | 阿里巴巴集团控股有限公司 | 数据同步方法、装置、电子设备及计算机存储介质 |
CN113868028A (zh) * | 2020-06-30 | 2021-12-31 | 华为技术有限公司 | 一种在数据节点上回放日志的方法、数据节点及系统 |
CN117555884A (zh) * | 2024-01-12 | 2024-02-13 | 腾讯科技(深圳)有限公司 | 数据页的读取方法、装置、设备及可读存储介质 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20030220935A1 (en) * | 2002-05-21 | 2003-11-27 | Vivian Stephen J. | Method of logical database snapshot for log-based replication |
CN103294479A (zh) * | 2013-06-19 | 2013-09-11 | 成都市欧冠信息技术有限责任公司 | 分布式事务处理方法与系统 |
CN103902560A (zh) * | 2012-12-25 | 2014-07-02 | 中国移动通信集团福建有限公司 | 一种分布式事务处理方法及系统 |
CN105122241A (zh) * | 2013-03-15 | 2015-12-02 | 亚马逊科技公司 | 具有数据库引擎和独立分布式存储服务的数据库系统 |
-
2015
- 2015-12-08 CN CN201510900172.9A patent/CN106855822A/zh active Pending
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20030220935A1 (en) * | 2002-05-21 | 2003-11-27 | Vivian Stephen J. | Method of logical database snapshot for log-based replication |
CN103902560A (zh) * | 2012-12-25 | 2014-07-02 | 中国移动通信集团福建有限公司 | 一种分布式事务处理方法及系统 |
CN105122241A (zh) * | 2013-03-15 | 2015-12-02 | 亚马逊科技公司 | 具有数据库引擎和独立分布式存储服务的数据库系统 |
CN103294479A (zh) * | 2013-06-19 | 2013-09-11 | 成都市欧冠信息技术有限责任公司 | 分布式事务处理方法与系统 |
Cited By (20)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110019066A (zh) * | 2017-09-21 | 2019-07-16 | 阿里巴巴集团控股有限公司 | 数据库处理方法及装置、系统 |
CN110196788B (zh) * | 2018-03-30 | 2022-05-20 | 腾讯科技(深圳)有限公司 | 一种数据读取方法、装置、系统及存储介质 |
CN110196788A (zh) * | 2018-03-30 | 2019-09-03 | 腾讯科技(深圳)有限公司 | 一种数据读取方法、装置、系统及存储介质 |
CN110737716A (zh) * | 2018-07-02 | 2020-01-31 | 华为技术有限公司 | 一种数据写入的方法和装置 |
CN110895545A (zh) * | 2018-08-22 | 2020-03-20 | 阿里巴巴集团控股有限公司 | 共享数据同步方法及装置 |
CN110895545B (zh) * | 2018-08-22 | 2023-08-15 | 阿里云计算有限公司 | 共享数据同步方法及装置 |
CN111125163A (zh) * | 2018-10-30 | 2020-05-08 | 百度在线网络技术(北京)有限公司 | 用于处理数据的方法和装置 |
CN111125163B (zh) * | 2018-10-30 | 2023-06-06 | 百度在线网络技术(北京)有限公司 | 用于处理数据的方法和装置 |
CN111966652A (zh) * | 2019-05-20 | 2020-11-20 | 阿里巴巴集团控股有限公司 | 共享存储同步数据的方法、装置、设备、系统和存储介质 |
CN112988880B (zh) * | 2019-12-12 | 2024-03-29 | 阿里巴巴集团控股有限公司 | 数据同步方法、装置、电子设备及计算机存储介质 |
CN112988880A (zh) * | 2019-12-12 | 2021-06-18 | 阿里巴巴集团控股有限公司 | 数据同步方法、装置、电子设备及计算机存储介质 |
CN111046024B (zh) * | 2019-12-16 | 2023-05-23 | 上海达梦数据库有限公司 | 一种共享存储数据库的数据处理方法、装置、设备及介质 |
CN111046024A (zh) * | 2019-12-16 | 2020-04-21 | 上海达梦数据库有限公司 | 一种共享存储数据库的数据处理方法、装置、设备及介质 |
CN113868028A (zh) * | 2020-06-30 | 2021-12-31 | 华为技术有限公司 | 一种在数据节点上回放日志的方法、数据节点及系统 |
CN111930788A (zh) * | 2020-09-04 | 2020-11-13 | 阿里云计算有限公司 | 操作请求的处理方法、装置、设备、可读存储介质及系统 |
CN112346913B (zh) * | 2020-12-01 | 2024-03-15 | 上海达梦数据库有限公司 | 数据恢复方法、装置、设备及存储介质 |
CN112346913A (zh) * | 2020-12-01 | 2021-02-09 | 上海达梦数据库有限公司 | 数据恢复方法、装置、设备及存储介质 |
CN112637284A (zh) * | 2020-12-09 | 2021-04-09 | 北京金山云网络技术有限公司 | 重做日志的存储方法和装置、电子设备和存储介质 |
CN117555884A (zh) * | 2024-01-12 | 2024-02-13 | 腾讯科技(深圳)有限公司 | 数据页的读取方法、装置、设备及可读存储介质 |
CN117555884B (zh) * | 2024-01-12 | 2024-04-26 | 腾讯科技(深圳)有限公司 | 数据页的读取方法、装置、设备及可读存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN106855822A (zh) | 用于分布式事务处理的方法及设备 | |
JP6778795B2 (ja) | データを記憶するための方法、装置及びシステム | |
JP7001843B2 (ja) | データバックアップ方法並びに、そのコンピュータプログラム及びコンピューティングデバイス | |
US20210056074A1 (en) | File System Data Access Method and File System | |
CN105190622B (zh) | 用于分布式数据库系统的快速崩溃恢复 | |
CN105190533B (zh) | 原位快照 | |
US10831613B2 (en) | Replicating a source data set to a target data store | |
CN107436725A (zh) | 一种数据写、读方法、装置及分布式对象存储集群 | |
CN110019280A (zh) | 用于分布式数据库系统的系统范围检查点避免 | |
CN110083656A (zh) | 日志记录管理 | |
CN103597482A (zh) | 在存储节点上存储数据 | |
CN106802892A (zh) | 用于主备数据一致性校验的方法和设备 | |
US20190332499A1 (en) | Implementing snapshot sets for consistency groups of storage volumes | |
CN110196680A (zh) | 数据处理方法、装置及存储介质 | |
CN110968554A (zh) | 一种基于文件链分块的区块链存储方法、存储系统及存储介质 | |
CN104580439A (zh) | 一种云存储系统中使数据均匀分布的方法 | |
CN106686095A (zh) | 一种基于纠删码技术的数据存储方法及装置 | |
CN106897338A (zh) | 一种针对数据库的数据修改请求处理方法及装置 | |
CN102023816A (zh) | 一种对象存储系统的对象存放策略和访问方法 | |
CN104536908B (zh) | 一种面向单机的海量小记录高效存储管理方法 | |
CN106407832B (zh) | 一种用于数据访问控制的方法及设备 | |
JP5556025B2 (ja) | ストレージシステム | |
CN107506466A (zh) | 一种小文件存储方法及系统 | |
CN104125285A (zh) | 一种高io吞吐量的云存储读写方法 | |
CN110196788A (zh) | 一种数据读取方法、装置、系统及存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
RJ01 | Rejection of invention patent application after publication | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20170616 |