一种分布式数据库中数据恢复方法、相关设备和系统技术方案

技术编号:19023389 阅读:17 留言:0更新日期:2018-09-26 19:03
本发明专利技术实施例公开了分布式数据库的数据恢复方法、相关设备和系统。数据节点接收备升主指令,根据备升主指令的指示将对应的数据分片变更为主本状态,将该主本状态的数据分片和关联的副本状态的数据分片之间以增量方式进行日志同步和日志重演,使各个副本状态的数据分片追平主本状态的数据分片的数据。采用本发明专利技术实施例,通过日志缓存和增量同步能迅速的恢复数据节点上的数据。

【技术实现步骤摘要】
一种分布式数据库中数据恢复方法、相关设备和系统
本专利技术涉及数据库领域,尤其涉及一种分布式数据库中数据恢复方法、相关设备和系统。
技术介绍
在分布式数据库系统中,为了提高数据节点上数据分片的容灾能力,通常会在多个不同的数据节点上设置多个副本,在工作过程中主本和副本需要保持同步,多副本的存在是提升一个分布式数据库系统可靠性、可用性、性能以及可扩展性的必要手段。业界实现主本和副本之间的复制方式有3种:全同步复制,半同步复制,异步复制。采用全同步复制虽然能保证副本间的一致性,但影响可用性,较大限制分区容错性,并且增加请求处理时延。半同步复制技术相对异步复制,完成单条事务增加额外的等待延迟,相对全同步复制,重演会有延迟,而且从节点失效,或者主从间网络异常,会导致主点被冻结。因此对于时延要求很高的分布式数据库系统一般采用异步。异步同步的方式牺牲部分副本间的一致性,而且在故障时可能导致短暂少量的数据丢失,但有具备较好的可用性和分区容错性。在数据节点集群中某个数据节点发生故障后,元数据服务器根据发生故障的数据分片的副本,将新主本切换到其他副本节点。由于在异步复制场景下,由于消息发出后不等待接收直接返回的,如果存在网络时延、闪断等各种原因,将可能导致各个副本之间进度不一致。在分布式数据库系统中的数据节点发生故障的情况下,如何恢复和同步数据节点上数据分片的数据是目前研究的热点。
技术实现思路
本专利技术实施例所要解决的技术问题在于,提供一种分布式数据库系统中数据恢复方法,实现了在数据节点发生故障的情况下,快速的恢复和同步数据节点上的数据分片。第一方面,本专利技术实施例提供的一种分布式数据库系统中数据恢复方法,分布式数据库系统包括数据节点集群和管理节点,管理节点用于管理数据节点集群,以及存放数据节点集群的元数据。数据节点集群包括多个数据节点,每个数据节点包括多个数据分片,数据分片存储有具体的业务数据。数据分片根据冗余配置分为两种状态:副本状态和主本状态,在数据节点集群上一个主本状态的数据分片关联至少一个副本状态的数据分片,主本状态的数据分片以及关联的各个副本状态的数据分片通常设置在不同的数据节点上。例如:数据分片1为主本状态,数据分片1关联的副本状态的数据分片为数据分片1a、数据分片1b和数据分片1c,数据分片1设置在数据节点1上,数据分片1a设置在数据节点2上,数据分片1b设置在数据节点3上,数据分片1c设置在数据节点4上。下面以数据节点集群中的第一数据节点来说明数据恢复过程:管理节点可存储有第一数据节点上包括的数据分片的状态,管理节点检测到第一数据节点发生故障的情况下,确定第一数据节点上包括的一个或多个主本状态的数据分片,对于任意一个主本状态的数据分片,管理节点预先存储有数据分片和数据分片之间的映射关系,管理节点可根据上述的映射关系查询与主本状态的数据分片关联的至少一个副本状态的数据分片,以及获取每个副本状态的数据分片的DCN(DataChangeNumber,数据变更序号,简称DCN),数据分片的DCN表示数据分片上最新的日志的序号,数据分片每接收到一个事务请求,根据事务请求的操作过程生成日志,将日志存储在数据分片的环形日志队列中,以及将数据分片当前的DCN加1。管理节点从至少一个副本状态的数据分片中确定DCN最大的数据分片,根据数据分片与数据节点的映射关系确定该DCN最大的数据分片所在的第二数据节点,管理节点向第二数据节点发送备升主指令,备升主指令用于指示第二数据节点将该DCN最大的数据分片由副本状态切换为主本状态。实施上述实施例,在数据节点发生故障的情况下,确定数据节点上待恢复的主本状态的数据分片关联的至少一个副本状态的数据分片,从至少一个副本状态的数据分片中中选择DCN最大的数据分片,将该DCN最大的数据分片由副本状态切换为主本状态,同时指示指示至少一个副本状态的数据分片中其他数据分片与该DCN最大的数据分片之间进行日志同步,使各个副本状态的数据分片的日志和该DCN最大的数据分片的日志保持同步,这样能快速的对故障的数据节点上主本状态的数据分片进行数据恢复。结合第一方面的一种可能的实施方式中,管理节点接收到第二数据节点返回的数据恢复响应的情况下,数据恢复响应表示至少一个副本状态的数据分片中DCN最大的数据分片与其他数据分片的日志同步成功,管理节点根据第二数据节点的标识更新客户端的路由信息,更新路由信息后,管理节点接收到客户端针对该DCN最大的数据分片的访问请求的情况下,将访问请求转发到第二数据节点上进行处理。结合第一方面的一种可能的实施方式中,管理节点检测第一数据节点发生故障的方法包括:管理节点向第一数据节点发送心跳请求包,若在预设时长没未接收到第一数据节点返回的心跳请求包对应的心跳响应包,确定第一物理接收发生故障,管理节点将第一数据节点从当前的数据节点集群中移除。第二方面,本专利技术实施例提供的一种分布式数据库系统的数据恢复方法,包括:数据节点接收管理节点发送的备升主指令,备升主指令携带数据分片的标识,数据分片位于数据节点上且为副本状态,数据节点根据备升主指令中携带的数据分片的标识将数据分片由副本状态切换为主本状态,数据节点查询与数据分片关联的至少一个副本状态的数据分片,以及获取每个副本状态的数据分片各自对应的DCN,对于每个副本状态的DCN,数据节点根据数据分片的DCN和副本状态的数据分片的DCN确定二者之间的增量日志,向副本状态的数据分片所在的数据节点发送该增量日志,指示该数据节点接收该增量日志,将增量日志放入到环形日志队列中根据增量的日志的数据对当前的DCN递增,同时根据增量日志的顺序进行日志重演。实施上述实施例,数据节点根据管理节点的指示将副本状态的数据分片切换为主本状态,同时指示其他数据节点上的副本状态的数据分片与主本状态的数据分片进行增量同步,这样能快速的恢复故障的数据节点上的数据。结合第二方面的一种可能的实施方式中,管理节点发送的备升主指令中还携带至少一个副本状态的数据分片的DCN,数据节点可以从备升主指令中获取至少一个副本状态的数据分片的DCN。结合第二方面的一种可能的实施方式中,数据节点根据数据分片的DCN和副本状态的数据分片的DCN确定数据分片和副本状态的数据分片之间的增量日志包括:每个数据分片设置有一个环形日志队列,环形日志队列用于存放数据分片的日志,数据分片每接收一个事务操作,根据事务操作的过程生成一个日志,根据先进先出的顺序将日志访日环形日志队列中。数据节点从数据分片的环形队列中取出日志放入日志派发队列,根据数据分片的DCN和待同步的副本状态的数据分片的DCN,确定增量DCN区间,根据增量DCN区间从日志派发队列中确定增量日志,将增量日志的副本发送给该副本状态的数据分片,是该副本状态的数据分片根据接收到的日志进行日志重演。结合第二方面的一种可能的实施方式中,还包括:在日志同步过程中接收到针对主本状态的数据分片的事务请求,根据事务请求的操作过程生成日志,将日志分别放入到数据分片对应的环形日志队列,以及日志派发队列中,将数据分片的DCN加1。在第二方面的一种可能的实施方式中,数据节点接收到其他数据节点发送的日志同步指令时,根据日志同步指令中携带的至少一个日志和待同步的数据分片的标识,其中,待本文档来自技高网...

【技术保护点】
1.一种分布式数据库的数据恢复方法,其特征在于,包括:在数据节点集群中的第一数据节点发生故障的情况下,确定所述第一数据节点包括的主本状态的数据分片;查询与所述主本状态的数据分片关联的至少一个副本状态的数据分片,以及获取每个副本状态的数据分片的数据变更序号DCN;确定所述至少一个副本状态的数据分片中DCN最大的数据分片;确定所述DCN最大的数据分片所在第二数据节点,以及向所述第二数据节点发送备升主指令;其中,所述备升主指令用于指示所述第二数据节点将所述DCN最大的数据分片由副本状态切换为主本状态。

【技术特征摘要】
1.一种分布式数据库的数据恢复方法,其特征在于,包括:在数据节点集群中的第一数据节点发生故障的情况下,确定所述第一数据节点包括的主本状态的数据分片;查询与所述主本状态的数据分片关联的至少一个副本状态的数据分片,以及获取每个副本状态的数据分片的数据变更序号DCN;确定所述至少一个副本状态的数据分片中DCN最大的数据分片;确定所述DCN最大的数据分片所在第二数据节点,以及向所述第二数据节点发送备升主指令;其中,所述备升主指令用于指示所述第二数据节点将所述DCN最大的数据分片由副本状态切换为主本状态。2.如权利要求1所述的方法,其特征在于,还包括:接收所述第二数据节点返回的数据恢复响应的情况下,根据所述第二数据节点的标识更新应用客户端的路由信息;其中,所述数据恢复响应表示所述至少一个副本状态的数据分片中所述DCN最大的数据分片与其他数据分片成功进行日志同步。3.如权利要求1所述的方法,其特征在于,检测所述第一数据节点发生故障的方法包括:向所述第一数据节点发送心跳请求包;在预设时长内未接收到所述第一数据节点根据所述心跳请求包返回的心跳响应包的情况下,确定所述第一数据节点发生故障。4.一种分布式数据库的数据恢复方法,其特征在于,包括:数据节点接收管理节点发送的备升主指令;其中,所述备升主指令携带数据分片的标识,所述数据分片位于所述数据节点上且为副本状态;所述数据节点将所述数据分片由副本状态切换为主本状态;所述数据节点查询与所述数据分片关联的至少一个副本状态的数据分片,以及获取所述至少一个副本状态的数据分片各自对应的数据变更序号DCN;所述数据节点根据DCN对所述主本状态的数据分片与每个副本状态的数据分片之间的日志进行增量同步,以使每个副本状态的数据分片根据增量日志进行日志重演,以及副本状态的数据分片所在的数据节点保存接收到的增量日志。5.如权利要求4所述的方法,其特征在于,所述数据节点根据DCN对所述主本状态的数据分片与每个副本状态的数据分片之间的日志进行增量同步包括:所述数据节点将所述主本状态的数据分片关联的日志环形队列中的日志复制到日志派发队列;所述数据节点根据所述主本状态的数据分片的DCN和副本状态的数据分片的DCN在所述日志派发队列中确定增量DCN区间;所述数据节点在所述日志派发队列中确定所述增量DCN区间对应的增量日志;所述数据节点将所述增量日志发送给所述副本状态的数据分片所在的数据节点。6.如权利要求4所述的方法,其特征在于,所述获取所述至少一个副本状态的数据分片各自对应的DCN包括:从所述备升主指令中获取所述至少一个副本状态的数据分片各自对应的DCN。7.如权利要求4所述的方法,其特征在于,还包括:接收日志同步指令;其中,所述日志同步指令携带至少一个日志和待同步的数据分片的标识;根据所述至少一个日志对所述待同步的数据分片进行日志重演,将所述至少一个日志放入所述待同步的数据分片的日志环形队列中,以及根据所述至少一个日志的数量更新每个日志的DCN。8.如权利要求4所述的方法,其特征在于,还包括:接收针对所述数据分片的事务请求,根据请求生成日志,将所述日志放入到所述日志环形队列,以及将所述日志放入日志派发队列中,将所述日志环形队列中最大的DCN加1后作为所述日志的DCN。9.一种管理节点,其特征在于,包括存储器和处理器,所述存储器存储有一段程序代码,所述处理器调用所述程序代码用于以下操作:在数据节点集群中的第一数据节点发生故障的情况下,确定所述第一数据节点包括的主本状态的数据分片;查询与所述主本状态的数据分片关联的至少一个副本状态的数据分片,以及获取每个副本状态的数据分片的数据变更序号DCN;确定所述至少一个副本状态的数据分片中DCN最大的数据分片;确定所述DCN最大的数据分片所在第二数据节点,以及向所述第二数据节点发送备升主指令;其中,所述...

【专利技术属性】
技术研发人员:陶维忠李玉华
申请(专利权)人:华为软件技术有限公司
类型:发明
国别省市:江苏,32

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1