基于RDMA和硬件事务性内存支持的数据复制容错方法转让专利

申请号 : CN201610018490.7

文献号 : CN105938446B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 陈海波陈榕臧斌宇魏星达

申请人 : 上海交通大学

摘要 :

本发明提供了一种基于RDMA和HTM支持的数据复制容错方法,包括如下步骤:步骤1:在数据库事务提交时将事务修改的数据提交为一个中间的版本,使得其他执行中的事务可以检测到未完成备份的数据;步骤2:通过RDMA进行数据备份,数据备份完成后再将其修改的数据的版本修改为一个合法的版本;步骤3:在数据库事务的执行过程中,通过检测是否操作到中间版本的数据来保证这次事务执行的正确性。与现有的技术相比,本发明可以实现基于HTM和RDMA的并发控制方法,并提供相应的系统容错支持,同时不损失HTM和RDMA带来的并发控制的性能优势。

权利要求 :

1.一种基于RDMA和硬件事务性内存支持的数据复制容错方法,其特征在于,包括如下步骤:步骤1:将数据库执行事务前的所有数据记录为初始版本数据;

步骤2:将数据库事务提交时的事务修改数据作为中间版本数据;

步骤3:将事务修改数据复制至相应的备份服务器进行备份;

步骤4:将经过备份的事务修改数据作为合法版本数据;

步骤5:执行事务时,若读取到某一中间版本数据,则将该中间版本数据记录至对应的一个读集合中;

步骤6:检查事务是否能提交时,若读集合中包含有中间版本数据,则中断执行对应的事务;

步骤7:定期检查备份服务器的日志,并恢复在主服务器中执行过的操作;

步骤8:当存在主服务器宕机时,则新的主服务器恢复原主服务器执行过的操作,并接受用户请求。

2.根据权利要求1所述的基于RDMA和硬件事务性内存支持的数据复制容错方法,其特征在于,所述步骤1包括:在数据库执行事务前,将所有数据设为初始版本数据,即将初始版本数据的版本号设为0。

3.根据权利要求1所述的基于RDMA和硬件事务性内存支持的数据复制容错方法,其特征在于,所述步骤2包括:在数据库利用硬件事务性内存提交数据的时候,将事务修改数据设为一个中间版本数据,即相对于初始版本数据,所述中间版本数据的版本号自增1。

4.根据权利要求1所述的基于RDMA和硬件事务性内存支持的数据复制容错方法,其特征在于,所述步骤3包括:将事务修改数据复制至相应的备份服务器中,即通过RDMA写操作将事务修改数据写到备份机服务器的日志中。

5.根据权利要求1所述的基于RDMA和硬件事务性内存支持的数据复制容错方法,其特征在于,所述步骤4包括:将经过备份的事务修改数据设置为合法版本数据,即相对于中间版本数据,所述合法版本数据的版本号自增1。

6.根据权利要求3所述的基于RDMA和硬件事务性内存支持的数据复制容错方法,其特征在于,所述步骤5包括:在事务的执行过程中,当读到一个中间版本数据,则将该数据记录到一个读集合中;其中,所述中间版本数据的版本号为奇数,且每个事务维护一个读集合。

7.根据权利要求6所述的基于RDMA和硬件事务性内存支持的数据复制容错方法,其特征在于,所述步骤6包括:在检查事务能否提交的过程中,读取读集合中数据的版本,若读集合中包含有中间版本数据,即存在版本号为奇数的数据,则中断执行对应对的事务。

8.根据权利要求1所述的基于RDMA和硬件事务性内存支持的数据复制容错方法,其特征在于,所述步骤7包括:当在检查备份服务器的日志时发现存在数据操作,则将相应的操作应用于所述备份服务器复制的数据上。

9.根据权利要求1所述的基于RDMA和硬件事务性内存支持的数据复制容错方法,其特征在于,所述步骤8包括:在备份服务器开始恢复数据时,从所有原主服务器的备份服务器的日志中读取数据的修改操作,并在新的主服务器中执行所述修改操作。

10.根据权利要求1所述的基于RDMA和硬件事务性内存支持的数据复制容错方法,其特征在于,使用硬件事务性内存将数据提交为一个中间状态,同时事务提交时检测是否读到一个中间状态的数据,这样对未完成备份的数据不需要进行上锁操作。

说明书 :

基于RDMA和硬件事务性内存支持的数据复制容错方法

技术领域

[0001] 本发明涉及分布式计算和多核计算技术领域,具体地,涉及一种基于RDMA和HTM支持的数据复制容错方法。

背景技术

[0002] 分布式内存计算为处理超大规模的并发事务提供了便利,而提供可用性是分布式系统一般需求;通常系统的可用性可以通过数据的备份来完成。当事务在某个主机器完成后,事务的修改会被备份到备份机器中。这样当某些主机器不工作的时候,备份机器可以代替主机器来完成请求。
[0003] 现有使用新的硬件技术 ,比如硬件事务性内存HTM(Hardware TransactionalMemory),和远程内存直接访问RDMA(Remote Direct Memory Access)来加速分布式事务处理的系统。这些系统相比传统的并发控制方法具有非常好的性能,然而这些系统没有提供容错支持,从而目前这些系统不支持可用性。
[0004] 硬件事务性内存HTM是一种硬件特性,直接由处理器提供执行程序时对共享内存数据的并发控制,具有非常低的开销。远程内存直接访问RDMA是新的网络通信技术,直接由网卡来对远端机器的内存进行操作,拥有非常高的吞吐量和低延迟的特性。虽然这两个技术一起使用的时候可以非常高效的执行数据库事务,然而却加大了系统容错的难度。
[0005] 这类系统通常使用HTM来提交事务对本地机器的修改,这样可以拥有非常好的性能,却同时给系统容错带来了困难。因为通常采用数据备份或写日志来完成容错,如果等到数据用HTM提交完再作这些操作,则有数据在这些操作完成前可能会被远端机器用RDMA操作读到,因此当主机器不工作的时候,备份机器可能没有办法恢复主机器的数据,而这些数据却可能被某些其他服务器读到,从而违反了数据库事务的一致性。如果在事务提交前备份数据,则需要复杂的协议来检测未提交的数据,这会带来非常大的开销。所以之前利用HTM和RDMA的数据库事务系统都没有提供事务数据的备份。

发明内容

[0006] 针对现有技术中的缺陷,本发明的目的是提供一种基于RDMA和HTM支持的数据复制容错方法。
[0007] 根据本发明提供的基于RDMA和HTM支持的数据复制容错方法,包括如下步骤:
[0008] 步骤1:将数据库执行事务前的所有数据记录为初始版本数据;
[0009] 步骤2:将数据库事务提交时的事务修改数据作为中间版本数据;
[0010] 步骤3:将事务修改数据复制至相应的备份服务器进行备份;
[0011] 步骤4:将经过备份的事务修改数据作为合法版本数据;
[0012] 步骤5:执行事务时,若读取到某一中间版本数据,则将该中间版本数据记录至对应的一个读集合中;
[0013] 步骤6:检查事务是否能提交时时,若读集合中包含有中间版本数据,则中断执行对应的事务;
[0014] 步骤7:定期检查备份服务器的日志,并恢复在主服务器中执行过的操作;
[0015] 步骤8:当存在主服务器宕机时,则新的主服务器恢复原主服务器执行过的操作,并接受用户请求。
[0016] 优选地,所述步骤1包括:在数据库执行事务前,将所有数据设为初始版本数据,即将初始版本数据的版本号设为0。
[0017] 优选地,所述步骤2包括:在数据库利用HTM提交数据的时候,将事务修改数据设为一个中间版本数据,即相对于初始版本数据,所述中间版本数据的版本号自增1。
[0018] 优选地,所述步骤3包括:将事务修改数据复制至相应的备份服务器中,即通过RDMA写操作将事务修改数据写到备份机服务器的日志中。
[0019] 优选地,所述步骤4包括:将经过备份的事务修改数据设置为合法版本数据,即相对于中间版本数据,所述合法版本数据的版本号自增1。
[0020] 优选地,所述步骤5包括:在事务的执行过程中,当读到一个中间版本数据,则将该数据记录到一个读集合中;其中,所述中间版本数据的版本号为奇数,且每个事务维护一个读集合。
[0021] 优选地,所述步骤6包括:在检查事务能否提交的过程中,读取读集合中数据的版本,若读集合中包含有中间版本数据,即存在版本号为奇数的数据,则中断执行对应对的事务。
[0022] 优选地,所述步骤7包括:当在检查备份服务器的日志时发现存在数据操作,则将相应的操作应用于所述备份服务器复制的数据上。
[0023] 优选地,所述步骤8包括:在备份服务器开始恢复数据时,从所有原主服务器的备份服务器的日志中读取数据的修改操作,并在新的主服务器中执行所述修改操作。
[0024] 优选地,使用HTM将数据提交为一个中间状态,同时事务提交时检测是否读到一个中间状态的数据,这样对未完成备份的数据不需要进行上锁操作。与现有技术相比,本发明具有如下的有益效果:
[0025] 1、本发明提供的基于RDMA和HTM支持的数据复制容错方法,利用HTM提交事务本身就需要修改数据的版本号的特性,将版本变为一个中间版本,从而避免了性能开销很大的上锁操作。
[0026] 2、本发明提供的基于RDMA和HTM支持的数据复制容错方法的数据备份操作在事务提交操作之后,使得备份的操作基本不会影响事务并发控制的性能。
[0027] 3、本发明提供的基于RDMA和HTM支持的数据复制容错方法避免了很多事务执行时候的中断重试,事务执行的时候可以读到一个没有完成备份的数据,然而事务可以不用中断继续执行,只要事务提交的时候数据已经完成备份就可以通过验证;这样使得数据备份和事务执行可以并发的进行而不影响正确性。

附图说明

[0028] 通过阅读参照以下附图对非限制性实施例所作的详细描述,本发明的其它特征、目的和优点将会变得更明显:
[0029] 图1为本发明提供的基于RDMA和HTM支持的数据复制容错方法的流程图;
[0030] 图2为本发明提供的基于RDMA和HTM支持的数据复制容错方法的拓扑图。

具体实施方式

[0031] 下面结合具体实施例对本发明进行详细说明。以下实施例将有助于本领域的技术人员进一步理解本发明,但不以任何形式限制本发明。应当指出的是,对本领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干变形和改进。这些都属于本发明的保护范围。
[0032] 根据本发明提供的基于RDMA和HTM支持的数据复制容错方法,该方法先在数据库事务提交时将事务修改的数据提交为一个中间的版本,使得其他执行中的事务可以检测到未完成备份的数据,然后通过RDMA进行数据备份,数据备份完成后再将其修改的数据的版本修改为一个合法的版本;在数据库事务的执行过程中,通过检测是否操作到中间版本的数据来保证这次事务执行的正确性;在机器宕机时,数据可以从备份机器中恢复;具体地,包括以下步骤:
[0033] 步骤1:在数据库执行事务前将所有数据的版本设为一个初始版本;
[0034] 步骤2:在事务利用HTM提交事务的时候将所修改的数据的版本变为一个中间版本;
[0035] 步骤3:将事务所修改的数据复制到数据的备份机器中;
[0036] 步骤4:将事务所修改的数据的版本变为一个合法的版本;
[0037] 步骤5:在事务的执行过程中,如果读到一个中间版本的数据,则记录这个数据到一个读集合中;
[0038] 步骤6:在事务的检查过程中,如果读集合中仍然有数据的版本是中间版本,则中断这个事务的执行;
[0039] 步骤7:备份服务器定期检查其日志,并恢复主服务器中执行过的操作;
[0040] 步骤8:在有主服务器宕机后,被选为新的主服务器的原备份机器从恢复主服务器的事务的操作,随后开始接受用户请求。
[0041] 所述步骤1包括:在数据库执行事务前将所有数据的版本设为一个初始版本,将初始版本设为0。
[0042] 所述步骤2包括:在事务利用HTM提交的时候将所修改的数据的版本变为一个中间版本,特别的将数据的版本变为之前的版本加上1。
[0043] 所述步骤3包括,将事务所修改的数据复制到数据的备份机器中,使用RDMA写操作将所有数据的操作写到他们的备份机器的日志中。
[0044] 所述步骤4包括,将事务所修改的数据变为一个合法的版本,即再将其版本在其之前版本上加上1。
[0045] 所述步骤5包括,在事务的执行过程中,如果读到一个中间版本的数据,则记录这个数据到一个读集合中,中间版本即数据的版本是一个奇数,每个事务维护一个读集合。
[0046] 所述步骤6包括,在事务的检查过程中,再次读取读集合中数据的版本,如果其中仍然有版本号为基数的数据,则中断事务的执行。
[0047] 所述步骤7包括,在备份服务器检查日志发现有数据操作时,将相应的操作应用在其复制的数据上。
[0048] 所述步骤8包括,在备份服务器开始恢复数据的时候,从所有原主服务器的备份服务器的日志中中读取数据的修改的操作,在本地机器执行这些操作。
[0049] 具体地,如图1所示,为本发明数据库事务数据备份的具体流程,下面以一个数据有两个备份为例,结合图1对一下数据备份步骤进行详细描述:
[0050] 在步骤S1中,执行事务逻辑,如果有读写版本号为奇数的数据,则将这个数据记录到事务的读集合中;
[0051] 在步骤S2中,事务提交时再次读取读集合中的数据,并检查是否这些数据中仍然有奇数版本的数据,如果是则返回执行步骤S1重新执行事务;
[0052] 在步骤S3中,事务提交,事务将所有修改的数据的版本号修改为当前版本号加上一;
[0053] 在步骤S4中,事务将所修改的数据使用RDMA操作备份到备份机器中,如图2所示,主服务器A会将事务的修改通过RDMA网络将数据写到备份服务器C的日志中;
[0054] 在步骤S5中,事务将所有修改的数据版本号修改为当前版本加1,事务提交完成。
[0055] 更进一步地,如图2所示,本发明假设拥有多个服务器,它们通过RDMA网络请求;其中一部分服务器作为主服务器接受用户请求,执行用户指定的事务;一部分服务器作为备份服务器储存主服务器数据,他们复制其对应的主服务器上的数据;当主服务器宕机的时候对应的备份服务器会恢复主服务器的数据接并代替原主服务器接受用户的请求。
[0056] 以上对本发明的具体实施例进行了描述。需要理解的是,本发明并不局限于上述特定实施方式,本领域技术人员可以在权利要求的范围内做出各种变形或修改,这并不影响本发明的实质内容。