点对点数据复制方法、设备和系统以及主节点切换方法、设备和系统的制作方法_3

文档序号:9756879阅读:来源:国知局
即,Connl::Table Space I,Table Space 2;因此,如图4c所示,连接I被映射至表空间I和表空间2 ;
[0181]506.配置用户节点2;
[0182]507.创建所述主节点与用户节点2之间的连接,以下简称为Conn2;因此,连接2的创建如图4c所示;
[0183]508.配置所述主节点中的关系,S卩,Conn2::Table Space 3;因此,如图4c所示,连接2被映射至表空间3;
[0184]509.创建用户节点I与用户节点2之间的两个连接,以下分别简称为Conn3和Conn4;因此,连接3和连接4的创建如图4c所示;
[0185]510.配置两个用户节点各自的关系,即,Conn3:: Table Space 3,Conn4:: TableSpace I ,Table Space 2。因此,如图4c所示,连接3被映射至表空间3,连接4被映射至表空间I和表空间2。因此,用户节点2能将从表空间3获得的数据通过连接3复制到用户节点1,用户节点I能将从表空间I和表空间2获得的数据通过连接4复制到用户节点2。
[0186]值得注意的是,步骤503至505和步骤506至508之间没有特定的执行顺序,例如,步骤506至508可先于步骤503至505执行,反之亦然。
[0187]根据上述流程,获得图4所示拓扑结构。以图4所示拓扑结构为例,下面将描述本发明实施例提供的点对点复制方法。
[0188]对于数据库来说,事务通常在两次提交之间完成工作。也就是说,当所述DB执行一次提交时,事务结束。因此,事务的顺序可通过跟踪其提交来保持。在本发明实施例提供的点对点复制方法中,所述提交附带一个基于时间递增的唯一标识符,称为提交序号(CSN)。例如,CSN=I,2,3,……,N,其中,N为主节点中写操作的顺序,S卩,当主节点第一次进行写操作时,生成的提交重做记录附带的CSN为I;当主节点第N次进行写操作时,生成的提交重做记录附带的CSN为N。这里,所述写操作可以为“更新”、“插入”、“删除”等数据修改操作。
[0189]—个事务可生成多个重做记录。基于多种操作,重做记录有多种类型,S卩,重做记录可以为“插入重做”或“更新重做”或“提交重做”。当提交事务时,将为该事务生成一种类型提交的重做记录。即使事务可以在多个不同的表空间上进行,提交操作在节点层面定制。与所述提交操作对应的重做记录称为提交重做记录,它包括为该提交操作生成的CSN,其中,所述CSN指示该节点中该提交操作的顺序。具体地,依次生成在该节点范围内的全局CSN并且分配给一个提交操作,不管所述事务在哪个表空间上进行。因此,通过检查所述提交重做记录中的CSN,就可知道事务提交的顺序。为保持数据完整性,所有提交重做记录的重播顺序与其CSN在节点中的顺序相同。
[0190]图6为本发明实施例提供的用于实现点对点数据复制方法的单主机复制拓扑结构的另一实例。如图6所示,主节点连接至用户节点1、用户节点2、用户节点3、用户节点4。在图6所示的单主机复制拓扑结构中,所述主节点将主节点的提交重做记录分成四部分,例如,部分I提交重做记录,部分2提交重做记录,部分3提交重做记录,部分4提交重做记录,并且所述主节点将各部分提交重做记录同步至一个用户节点,由该用户节点同步至其他用户节点。例如,如图6所示,所述主节点将部分I提交重做记录同步至用户节点I,将部分2提交重做记录同步至用户节点2,将部分3提交重做记录同步至用户节点3,将部分4提交重做记录同步至用户节点4,各部分提交重做记录在不同的用户节点上并行重播,并且用户节点I获得的部分I提交重做记录、用户节点2获得的部分2提交重做记录、用户节点3获得的部分3提交重做记录、用户节点4获得的部分4提交重做记录都在所述四个用户节点中同步。这里,所述主节点进行的分区可基于记录中的物理存储的逻辑,即,基于表空间、设备档案文件、页面、分区等物理实体。
[0191]图7为本发明实施例提供的一种主节点同步操作的实例的流程示意图。如图7所示,所述主节点的同步操作包括:
[0192]701.所述主节点上发生一次操作;
[0193]702.所述主节点为此次操作生成重做记录;
[0194]703.所述主节点判断所述重做记录是否为提交重做记录,如果是,流程执行步骤704,如果否,流程执行步骤705。
[0195]704.所述主节点为所述提交重做记录生成CSN,然后流程执行步骤705;
[0196]705.所述主节点推送生成的重做记录至相关的用户节点,其中,相关的用户节点由所述主节点基于配置的映射关系确定。
[0197]以根据图5创建的映射关系为例,如果写操作发生在表空间I或表空间2上,所述主节点推送所述提交重做记录至Connl,即,推送所述提交重做记录至用户节点I;如果写操作发生在表空间3上,所述主节点推送所述提交重做记录至Conn2,即,推送所述提交重做记录至用户节点2。
[0198]在所述主节点推送所述提交重做记录至对应的连接后,用户节点接收所述提交重做记录,并从接收到的提交重做记录中获得所述提交重做记录附带的CSN。图8为本发明实施例提供的一种订阅节点操作的实例的流程示意图。如图8所示,所述用户节点的同步操作包括:
[0199]801.所述用户节点从主节点接收重做记录;
[0200]802.所述用户节点判断接收到的重做记录是否为提交重做记录,如果是,流程执行步骤803,如果否,流程执行步骤706 ;
[0201 ] 803.当所述重做记录为提交重做记录时,所述用户节点检查所述用户节点自己的CSN是否等于“从所述提交重做记录中获得的CSN-1”,如果是,流程执行步骤804,如果否,流程执行步骤805;
[0202]804.所述用户节点将所述用户节点自己的CSN增加I,即,更新后的CSN等于从所述提交重做记录中获得的CSN,并且生成CSN变更事件;然后,流程执行步骤806;
[0203]805.所述用户节点等待其他提交重做记录,等待CSN变更事件;
[0204]具体地,当所述用户节点自己的CSN与从所述提交重做记录中获得的CSN的差值不为I时,所述用户节点将不会重播所述提交重做记录,并将一直等待所述用户节点自己的CSN变为比从所述提交重做记录中获得的CSN小I。具体地,所述用户节点等到接收到所有需要的提交,其中,所述用户节点以一种非常简单的方式确定所述需要的提交。假设所述用户节点已经接收到一个附带CSN100的提交重做记录,重播该提交重做记录,并更新所述用户节点自己的CSN至100。现在,如果所述用户节点接收另一个附带CSN105的提交重做记录,所述用户节点进行以下检查以判断它是否能重播该提交重做记录从所述提交重做记录中获得的CSN” - “所述用户节点的CSN” = I。本例中,“从所述提交重做记录中获得的CSN” - “所述用户节点的CSN” = 105-100 = 5,因此,所述用户节点不能重播该提交重做记录,并且需要等待分别附带CSNlOl、CSN102、CSN103、CSN104的多个提交重做记录才能重播附带CSN105的提交重做记录。这里,所述附带CSN101、CSN102、CSN103、CSN104的多个提交重做记录称为“需要的提交重做记录”。图8示出了在接收到所有需要的提交重做记录之后重播提交重做记录的相关细节,具体描述如下。
[0205]806.所述用户节点执行所述重做记录,S卩,所述用户节点重播所述重做记录;然后流程执行步骤807;
[0206]807.所述用户推送所述重做记录至其他用户。
[0207]以根据图5创建的映射关系为例,如果写操作发生在表空间I或表空间2上,所述主节点推送所述提交重做记录至Connl,用户节点I重播所述提交重做记录,然后推送所述提交重做记录至用户节点2;如果写操作发生在表空间3上,所述主节点推送所述提交重做记录至Conn2,用户节点2重播所述提交重做记录,然后推送所述提交重做记录至用户节点I。
[0208]图9为本发明实施例提供的一种用户节点操作的另一实例的流程示意图。如图9所示,所述用户节点的同步操作包括:
[0209]901.所述用户节点接收CSN变更事件;
[0210]902.所述用户节点读取所存储的提交重做记录;
[0211]903.所述用户节点检查所述用户节点自己的CSN是否等于“从所述提交重做记录中获得的CSN-1”,如果是,流程执行步骤904,如果否,流程执行步骤905;
[0212]904.所述用户节点将所述用户节点自己的CSN增加1,即,更新后的CSN等于从所述提交重做记录中获得的CSN,并且生成CSN变更事件;然后,流程执行步骤906;
[0213]905.所述用户节点等待其他提交重做记录,等待CSN变更事件;
[0214]906.所述用户节点执行所述重做记录,S卩,所述用户节点重播所述重做记录;然后流程执行步骤907;
[0215]907.所述用户推送所述重做记录至其他用户。
[0216]以根据图5创建的映射关系为例,如果写操作发生在表空间I或表空间2上,所述主节点推送所述提交重做记录至Connl,用户节点I重播所述提交重做记录,然后推送所述提交重做记录至用户节点2;如果写操作发生在表空间3上,所述主节点推送所述提交重做记录至Conn2,用户节点2重播所述提交重做记录,然后推送所述提交重做记录至用户节点I。
[0217]根据本发明实施例提供的点对点数据复制方法,主节点将写操作发生在所述主节点上时生成的提交重做记录分割成多个提交重做记录,并将所述多个提交重做记录推送至不同用户,其中,每个所述提交重做记录由所述主节点推送至唯一一个用户,然后由接收到所述提交重做记录的所述唯一一个用户推送至其他用户节点,从而减少了主节点与用户节点之间的传输,并且因此缓解了复制集群中主节点的复制瓶颈问题。
[0218]此外,与图1和图2所示的现有技术相比,本发明实施例提供的点对点数据复制方法还可实现以下有益效果和优点I),2),3),4),5)。
[0219]I)在多用户单主机复制中,主机性能得到极大提升。例如,对于两用户集群,主机性能提升约50 %。
[0220]2)在很多情况下,多主机方案可转化为确定的高性能单主机方案。例如,在某种情况下,一个集群有20%的写负载和80%的读负载。理想的拓扑结构为I个写节点和4个读节点。但实际上,由于将数据分配给4个用户的开销,未充分利用的主机(单个写节点)接近50%。这就导致被迫使用多主机方案(2个主机和4个用户)。但使用P2P方案可减少此种开销,这一方案可保留单主机。
[0221 ] 3)减少网络时延,在图10描述的简单场景中,时延可减少50 % ;具体地,如图1O所示,主节点侧的路由器与用户节点侧的路由器之间的传输速率为100Mbps,两个用户节点之间的传输速率为lGbps,因此,与主节点和用户节点之间的复制导致的时延相比,两个用户节点之间的复制导致的时延可以忽略不计。根据本发明实施例提供的点对点数据复制方法,主机的数据只需传输至各用户节点一次(部分数据传输至一个用户节点,其余数据传输至另一用户节点),而根据现有技术中的点对点数据复制方法,主机的数据需传输至用户节点两次,因此时延可减少50 %。
[0222]4)在包括主节点和多个用户节点的集群中,数据可用性会提升。总是大于或等于单主机串行复制。对于某些关键数据,还可完成多级优先级排序。
[0223]为了更清楚地说明此项有益效果,以一具体实例说明如下。图11为现有技术中一个数据可用性问题的实例的示意图。在如图11所示的场景中,所述主节点正在复制“4个单元的数据”至用户节点I和用户节点2.用户节点I已经消耗了3个单元的数据,包括单元1、单元2、单元3,而用户节点2已经消耗了 2个单元的数据,包括单元I和单元2。当一个节点中存在一份数据副本的情况为100%可用性时,如果两个节点中存在副本则为200%,以此类推,不同单元的数据的可用性为:单元I的可用性= 300%,单元2的可用性= 300%,单元3的可用性= 200%,单元4的可用性=100%。因此,当主节点在此刻宕机,“单元4”会丢失。可见,现有技术中存在严重的“数据可用性”问题。在任意给定的时间点,如果多个用户节点随着主节点滞后,滞后总是在相似数据中发生。因此,在这种情况下,在包括主节点和多个用户节点的集群中,数据可用性小于200%。
[0224]然而,本发明实施例提供的点对点数据复制方法可确保网络数据具有更高的可用性。
[0225]5)所述点对点集群方案在不使用高成本的两阶段提交的情况下提供了 ACID特性。
[0226]进一步地,本发明实施例提供的点对点数据复制方法中,当所述集群中添加新的用户节点时,重配置所述新的用户节点、所述主节点和所有其他相关用户节点,以反映该情况。所述重配置完成后,在最后一个提交重做结果被清空后,所述主节点开始同步事务日志至相关用户节点。
[0227]进一步地,在本发明实施例提供的点对点数据复制方法中,当主机崩溃或掉网时,在一段时间内允许该集群再同步。由于所述集群作为一个整体比任何单个节点包括更多的数据,因此该步骤是必选的。为了避免永久等待完成该同步,在系统中预配置对端节点之间数据同步的时间段。该时间段内的对端节点数据同步称为同步阶段I。在同步对端节点数据后,或者在对端节点之间数据同步的预配置时间段截止后,所述同步阶段I完成。
[0228]然后,选择拥有最大CSN的用户节点为主节点。不同集群管理拓扑结构中的主节点的选择细节可以不同。例如,可以有两种集群管理拓扑结构。在一种拓扑结构中(可称为拓扑结构I),存在一个集中式集群管理器节点。所述集中式集群管理器节点到集群中的所有其他节点之间存在网络连接。通过这些网络连接,所述集群管理器获得各个节点的CSN,然后使拥有最大CSN的节点作为主节点。在另一种拓扑结构中(可称为拓扑结构2),不存在集中式集群管理器节点,但各个数据节点拥有所有其他节点的信息。因此,在该拓扑结构中,所有节点都知道哪个节点拥有最大的CSN。
[0229]然后,所述新的主节点下发拉取请求至所有用户节点,以使所有用户节点推送数据至所述新的主节点,因此,所述集群中的所有数据都能被所述新的主节点获得。该时间段称为同步阶段II。在该时间段内,所有用户节点都试图推送各自的数据至所述新的主节点。在所述同步阶段II结束时,所述新的主节点和拥有与所述主节点相同CSN的所有用户节点都是正常运行的。然后,主机根据配置重新分配连接映射,并且所述集群正常运行。
[0230]具体地,图12为本发明实施例提供的当主节点宕机时的一种点对点复制方法的流程示意图。如图12所示,当主节点宕机时,执行以下步骤:
[0231]1201.所有用户节点检测到主节点宕机;具体地,所有用户节点可通过多种不同的方法检测到主节点宕机,例如,用户节点可在接收到一条表明主节点宕机的通知时检测到主节点宕机,其中,所述通知可由主节点传输,也可由用于监控主节点状态的设备传输;再如,当用户传输心跳消息等消息后没有收到心跳响应消息等响应消息时,则用户节点可检测到主节点宕机;
[0232]1202.所有用户节点在彼此之间进行数据同步,并且等待同步阶段I的预配置时间段超时;
[0233]1203.在同步阶段I完成后,所有用户节点基于用户节点的最大CSN选择一个新的主节点;
[0234]1204.所述新的主节点下发拉取请求至所有用户节点;
[0235]1205.所有用户节点仅传输数据至所述新的主节点,不在彼此之间进行同步(同步阶段II);
[0236]1206.当同步阶段II的预配置时间段截止,或所有用户节点都已完成同步阶段II时,主节点和与主节点拥有相同CSN的所有用户节点都正常运行,主机重新分配连接映射。
[0237]在所有步骤1201至1206执行过程中,包括主节点和多个用户节点的集群宕机,没有节点能为任何客户端服务。在步骤1206之后,包括新的主节点和与主节点拥有相同CSN的所有用户节点的集群恢复工作。
[0238]根据本发明实施例提供的点对点数据复制方法,当主节点宕机时,用户节点皆有能力创建一个同步窗口,从而使得包括多个用户节点的集群迅速恢复工作。
[0239]进一步地,本发明另一实施例提供的点对点数据复制方法中,不需要配置主节点和用户节点。主节点和用户节点智能,能够确定在彼此之间的同步分配。
[0240]在基本的实现方式中,无论包括主节点和多个用户节点的集群何时添加节点(主节点或用户节点),主节点和多个用户节点都必须由用户配置,以区分哪个表空间属于哪个节点。类似地,当添加表空间时,用户应配置主节点和多个用户节点至所述表空间所属的节点。
[0241 ]在当前实施例中,主节点智能,能够在创建新的表空间时自动分配节点至表空间。该操作可通过任何策略完成,这里给出几个例子。
[0242]1.轮循调度方式。主节点统计各个用户节点附带的表空间的数量,然后基于该计数分配新的表空间。
[0243]2.负载均衡方式。主节点追踪流向各个用户节点的重做流量。基于此,主节点选择最少负载的用户节点并且分配表空间至该用户节点。
[0244]类似地,当集群中添加新的用户节点,主节点可自动移动几个表空间的所有权至所述新的用户节点。主节点可使用任何策略,这里给出几个例子。
[0245]1.从各个现有用户节点移动相等数量的表空间,以使表空间分配完成后,各个用户节点拥有大约同等数量的表空间所有权。
[0246]2.从最靠近所述新的用户节点的复制用户节点移动表空间所有权,其中,最靠近所述新的用户节点的用户节点可基于路有追踪通过网络数据包跳统计轻松确定。
[0247]根据本发明实施例提供的点对点数据复制方法,在添加新节点时,主节点灵活地分配物理实体并开始复制到所述物理实体。
[0248]本发明实施例提供的点对点数据复制方法适用于包括一个或多个主节点和用户节点的任何场景。图13为本发明实施例提供的一种点对点数据复制方法的适用场景的实例的结构示意图。如图13所示,在呼叫中心方案的此种场景中,自动呼叫分配(ACD)系统分配呼叫至各个呼叫代理。通常,呼叫代理指应答其呼叫的用户数据库。为了获得最佳性能,需要呼叫代理与用户数据库的一个副本相关联。有时呼叫代理也需要写入用户数据库,并且该写操作需要复制到所有用户数据库。如图13所示,单主机集群可用于该场景,S卩,当呼叫代理需要写入用户数据库时,该呼叫代理写入至与所有用户节点连接的主节点,然后发生在主节点上的该写操作可根据本发明实施例提供的点对点数据复制方法复制到用户节点。因此,与现有技术相比,如果使用多主机集群,整个集群的性能降低;如果使用单主机集群,所述单主机将由于为不同用户节点进行多次数据复制而导致过载、集群的时延增加。然
当前第3页1 2 3 4 5 6 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1