分布式存储系统数据修复的方法和装置的制造方法_3

文档序号:9787436阅读:来源:国知局
分片的当前主副本与原主副本之间进行数据同步的方法的流程示意图。如图3所示,该方法至少包括步骤S302、步骤S304以及步骤S306。
[0125]步骤S302,获取目标分片的当前主副本的第一日志记录以及目标分片的原主副本的第二日志记录。
[0126]步骤S304,比较第一日志记录和第二日志记录,判断是否能够确定出两者的数据同步点,若是,则继续执行步骤S306。
[0127]步骤S306,根据数据同步点,在目标分片的当前主副本与目标分片的原主副本间进行数据同步。
[0128]在前文介绍,目标分片的主副本用于接收并响应数据请求,从副本用于同步该主副本的数据操作。通常,主副本通过异步方式向从副本同步数据操作,例如,当一条写请求在对应的主副本写成功后,会立刻返回给客户端成功,然后主副本通过异步的方式将新的数据同步到对应的从副本,这样的方式减少了客户端多个节点写成功等待的时间。然而,在某些情况下会造成写丢失,如当主副本接受一条写请求,写入并返回给客户端成功后不幸宕掉,此时刚才的写还未同步给其对应的从副本,而从副本在发现主副本挂掉并重新选主后,新的主副本则永久丢失了之前老的主副本向用户确认的写。
[0129]为解决这一问题,本发明实施例提供了一种可选地实施步骤S306的方案,在该方案中,可以根据数据同步点,确定存在于第一日志记录、且未存在于第二日志记录的第一日志记录增量,以及未存在于第一日志记录、且存在于第二日志记录的第二日志记录增量,如图4所示。随后,在目标分片的原主副本中执行第一日志记录增量对应的操作,以及在目标分片的当前主副本中执行第二日志记录增量对应的操作,从而实现目标分片的当前主副本与目标分片的原主副本间的数据同步。
[0130]进一步,若目标分片的原主副本所在节点故障时间较长,而日志记录又有存储限制,在目标分片的原主副本所在节点故障的这段时间内,目标分片的当前主副本的第一日志记录已经进行了刷新,使得在比较第一日志记录和第二日志记录后,未能够确定出两者的数据同步点,如图5所示。此时,本发明实施例可以根据业务特性进行相应的数据修复,下面举例进行详细介绍。
[0131]如果业务要求副本强一致,则需要将当前主副本的数据和binlog—起拷贝到刚恢复的原主副本上。即,可以获取目标分片的当前主副本上的所有数据,随后将目标分片的原主副本上的数据替换为获取的所有数据,以及将目标分片的原主副本的第二日志记录替换为第一日志记录,并在目标分片的原主副本中执行第一日志记录对应的操作。
[0132]如果业务的数据是每天灌固定的一批key,不同的value,则可以只拷贝binlog以达到尽快恢复副本的状态,至于副本间可能的不一致,当业务重新灌一次数据之后可以刷新。即,可以将目标分片的原主副本的第二日志记录替换为第一日志记录,并在目标分片的原主副本中执行第一日志记录对应的操作,以达到尽快恢复副本的状态。
[0133]进一步,在本发明实施例中,在修复目标分片的原主副本的数据之后,可以将目标分片的原主副本,以目标分片的当前主副本的从副本的身份加入分布式存储系统。
[0134]此外,由于目标分片的当前主副本与当前从副本是严格一致的,在目标分片的当前从副本与目标分片的原主副本之间进行数据同步时,可以参照在目标分片的当前主副本与目标分片的原主副本之间进行数据同步的方案,即可以利用日志记录,在目标分片的当前从副本与目标分片的原主副本之间进行数据同步,可以参照上文图3所示的方案,此处不再赘述。
[0135]情况二,若确定目标分片的原从副本所在节点为故障节点,则在进行数据修复时,可以将目标分片的当前主副本的数据同步至目标分片的原从副本。另外,为了尽可能实现负载均衡,若目标分片的当前主副本负载过高,则可以优选利用目标分片的当前从副本进行数据恢复。在实施时,可以利用日志记录,在目标分片的当前主副本与目标分片的原从副本之间进行数据同步。
[0136]图6示出了根据本发明一个实施例的利用日志记录在目标分片的当前主副本与原从副本之间进行数据同步的方法的流程示意图。如图6所示,该方法至少包括步骤S602、步骤S604以及步骤S606。
[0137]步骤S602,获取目标分片的当前主副本的第一日志记录以及目标分片的原从副本的第三日志记录。
[0138]步骤S604,比较第一日志记录和第三日志记录,确定出两者的数据同步点。
[0139]步骤S606,根据数据同步点,在目标分片的当前主副本与目标分片的原从副本间进行数据同步。
[0140]在该步骤中,可以根据数据同步点,确定存在于第一日志记录、且未存在于第三日志记录的日志记录增量,如图7所示。随后,在目标分片的原从副本中执行该日志记录增量对应的操作,从而实现目标分片的当前主副本与目标分片的原从副本间的数据同步。
[0141]基于上文各个实施例提供的分布式存储系统数据修复的方法,基于同一发明构思,本发明实施例还提供了一种分布式存储系统数据修复的装置。
[0142]图8示出了根据本发明一个实施例的分布式存储系统数据修复的装置的结构示意图。如图8所示,该装置800至少可以包括监测模块810、进程重启模块820以及数据修复模块830。
[0143]现介绍本发明实施例的分布式存储系统数据修复的装置800的各组成或器件的功能以及各部分间的连接关系:
[0144]监测模块810,适于监测目标分片的副本所在节点是否出现故障,其中,目标分片具有用于接收并响应数据请求的主副本和用于同步该主副本的数据操作的从副本,主副本和从副本位于分布式存储系统的不同节点;
[0145]进程重启模块820,与监测模块810相耦接,适于若监测到目标分片的副本所在节点出现故障,重新启动与目标分片的副本对应的进程;以及
[0146]数据修复模块830,与进程重启模块820相耦接,适于修复故障节点上目标分片的副本的数据。
[0147]在本发明一实施例中,监测模块810还适于:
[0148]监测目标分片的副本的在线数量;以及
[0149]当监测到目标分片的副本的在线数量与预设数量不一致时,确定目标分片的副本所在节点出现故障。
[0150]在本发明一实施例中,监测模块810还适于:
[0151 ]获取分布式存储系统的meta信息,其中,meta信息中记录了分布式存储系统中各分片的副本的在线状态;
[0152]在meta信息中查找目标分片的副本的在线状态;以及
[0153]根据目标分片的副本的在线状态,确定目标分片的副本的在线数量。
[0154]在本发明一实施例中,若meta信息存储在分布式存储系统的一个或多个节点,当一个或多个节点中的任意一个节点上的分片的副本的在线状态发生变化时,对应修改该任意一个节点的meta信息,并广播给一个或多个节点中的其它节点,同步修改该其它节点上的meta信息;
[0155]监测模块810还适于:
[0156]从一个或多个节点处获取meta信息。
[0157]在本发明一实施例中,meta信息中还记录了分布式存储系统中各分片的副本存储在哪个节点,如图9所示,图8展示的装置还可以包括故障节点确定模块840,与进程重启模块820以及数据修复模块830相耦接,适于:
[0158]在meta信息中查找目标分片的副本所在节点;以及
[0159]根据目标分片的副本所在节点以及副本的在线状态,确定故障节点。
[0160]在本发明一实施例中,若故障节点确定模块840确定目标分片的原主副本所在节点为故障节点,数据修复模块830还适于:
[0161]在目标分片的当前主副本与目标分片的原主副本之间进行数据同步;或者
[0162]在目标分片的当前从副本与目标分片的原主副本之间进行数据同步。
[0163]在本发明一实施例中,数据修复模块830还适于:
[0164]获取目标分片的当前主副本的第一日志记录以及目标分片的原主副本的第二日志记录;
[0165]比较第一日志记录和第二日志记录,判断是否能够确定出两者的数据同步点;以及
[0166]若确定出数据同步点,则根据数据同步点,在目标分片的当前主副本与目标分片的原主副本间进行数据同步。
[0167]在本发明一实施例中,数据修复模块830还适于:
[0168]根据数据同步点,确定存在于第一日志记录、且未存在于第二日志记录的第一日志记录增量,以及未存在于第一日志记录、且存在于第二日志记录的第二日志记录增量;以及
[0169]在目标分片的原主副本中执行第一日志记录增量对应的操作,以及在目标分片的当前主副本中执行第二日志记录增量对应的操作。
[0170]在本发明一实施例中,数据修复模块830还适于:
[0171]若未确定出数据同步点,则获取目标分片的当前主副本上的所有数据;以及
[0172]将目标分片的原主副本上的数据替换为获取的所有数据,以及将目标分片的原主副本的第二日志记录替换为第一日志记录,并在目标分片的原主副本中执行第一日志记录对应的操作。
[0173]在本发明一实施例中,数据修复模块830还适于:
[0174]若未确定出数据同步点,则将目标分片的原主副本的第二日志记录替换为第一日志记录,并在目标分片的原主副本中执行第一日志记录对应的操作。
[0175]在本发明一实施例中,如图9所示,图8展示的装置还可以包括加入模块850,与数据修复模块830相耦合,适于在数据修复模块830修复目标分片的原主副本的数据之后,将目标分片的原主副本,以目标分片的当前主副本的从副本的身份加入分布式存储系统。
[0176]在本发明一实施例中,若故障节点确定模块840确定目标分片的原从副本所在节点为故障节点,数据修复模块830还适于:
[0177]将目标分片的当前主副本的数据同步至目标分片的原从副本。
[0178]在本发明一实施例中,监测模块810还适于:
[0179]以广播的方式向分布式存储系统的各节点发送查找目标分片的副本的请求,请求中携带有目标分片的副本的标识;
[0180]接收各节点返回的响应信息;以及
[0181 ]根据响应信息确定目标分片的副本的在线数量。
[0182]在本发明一实施例中,监测模块810还适于:
[0183]当目标分片包括多个时,按照指定的顺序,依次对多个目标分片的副本的在线数量进行监测。
[0184]根据上述任意一个优选实施例或多个优选实施例的组合,本发明实施例能够达到如下有益效果:
[0185]
当前第3页1 2 3 4 5 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1