一种分布式数据库的管理方法及系统的制作方法
【专利摘要】本发明涉及数据库技术领域,尤其涉及一种分布式数据库的管理方法及系统,包括:确定第i数据分片在分布式数据库中对应的第m数据存储节点,所述分布式数据库包含L个数据存储节点,一个数据分片将L个数据存储节点中的一个数据存储节点作为主数据存储节点,其它L?1个数据存储节点作为备份数据存储节点;将第i数据分片存储至第m数据存储节点;将第i数据分片备份至第i数据分片的L?1个备份数据存储节点;根据第i数据分片对应的第m数据存储节点,更新分布式数据库中的拓扑信息并发送至分布式数据库中的所有数据存储节点。该方法使得L个数据存储节点之间相互备份,极大地提高了数据备份效率,节约了数据库资源。
【专利说明】
一种分布式数据库的管理方法及系统
技术领域
[0001] 本发明涉及数据库技术领域,尤其涉及一种分布式数据库的管理方法及系统。
【背景技术】
[0002] 随着办公自动化和电子商务的飞速发展,企业对信息系统的依赖性越来越高,数 据库作为信息系统的核心担当着重要的角色。
[0003] 尤其在一些对数据可靠性要求很高的行业如银行、证券、电信等,如果发生意外停 机或数据丢失其损失会十分惨重。为此数据库管理员应针对具体的业务要求制定详细的数 据库备份与灾难恢复策略。
[0004] 对于数据库备份的方式有很多,在现有技术中,主要采用的还是主备库的形式进 行备份的,其中主库主要用于对于事务的读写等操作,而备库主要用于备份主库的数据以 及分担部分交易,参照图1,为现有技术中的主备库形式的数据库备份方法,其中主库1指的 是主数据库,备库1指的是对主库1的数据进行完全备份的数据库,同样地,主库2指的是主 数据库,备库2指的是对主库2的数据进行完全备份的数据库,在正常情况下,对数据库数据 的事务性操作只在主库1和主库2上进行,只有当主库出现故障,才会切换到备库上进行事 务性操作,例如主库1出现故障,则将当前备库1切换为主库,然后继续使用。
[0005] 对于现有技术中的主备库进行数据库备份的方式,主要存在以下几个缺陷:第一, 浪费数据库资源,对于N个数据库,则需要N个数据库来进行备份,占用过多数据库资源,如 果对于每个数据库需要做M个备份,则共需要M*N个数据库才能实现对N个数据库的备份,进 一步导致严重占用过多数据库资源;第二,大多时候备库是不做使用的,或者只是用于分担 对主库的非事务一致性读交易,在实际应用中约束较多,难以保证各个数据库节点负载一 致,不能作为一种通用的负载均衡方案。
[0006] 综上所述,现有技术中的主备库的数据库备份方式比较浪费数据库资源,且无法 保证多个备份数据库之间的负载均衡。
【发明内容】
[0007] 本发明提供一种分布式数据库的管理方法及系统,用以解决现有技术中存在的主 备库的数据库备份方式比较浪费数据库资源,且无法保证多个备份数据库之间的负载均衡 的技术问题。
[0008] -方面,本发明实施例提供一种分布式数据库的管理方法,包括:
[0009] 确定第i数据分片在分布式数据库中对应的第m数据存储节点,所述分布式数据库 包含L个数据存储节点,一个数据分片将所述L个数据存储节点中的一个数据存储节点作为 主数据存储节点,将其它L-1个数据存储节点作为备份数据存储节点,L为大于1的整数;
[0010] 将所述第i数据分片存储至所述第m数据存储节点;
[0011] 将所述第i数据分片备份至所述第i数据分片的L-1个备份数据存储节点;
[0012] 根据所述第i数据分片对应的第m数据存储节点,更新所述分布式数据库中的拓扑 信息,并将更新后的所述拓扑信息发送至所述分布式数据库中的所有数据存储节点;所述 拓扑信息用于表示数据分片与主数据存储节点之间的对应关系。
[0013]本发明实施例提供的方法,在做数据存储时,确定第i数据分片在分布式数据库中 对应的第m数据存储节点,所述分布式数据库包含L个数据存储节点,一个数据分片将所述L 个数据存储节点中的一个数据存储节点作为主数据存储节点,将其它L-1个数据存储节点 作为备份数据存储节点,L为大于1的整数;将所述第i数据分片存储至所述第m数据存储节 点;将所述第i数据分片备份至所述第i数据分片的L-1个备份数据存储节点;根据所述第i 数据分片对应的第m数据存储节点,更新所述分布式数据库中的拓扑信息,并将更新后的所 述拓扑信息发送至所述分布式数据库中的所有数据存储节点;所述拓扑信息用于表示数据 分片与主数据存储节点之间的对应关系。该方法将L个数据存储节点中的一个存储节点作 为一个数据片的主存储节点,其它L-1个数据存储节点作为备份存储节点,从而可以使得L 个数据库之间相互做备份,因而不管有多少个数据分片,只需要使用L个数据存储节点就可 以实现对每个数据分片做L-1次备份,并且每个数据存储节点都既可以作为主存储节点,又 可以做备份存储节点,同时也保证了L个数据存储节点之间的负载均衡,因而该方法极大地 提高了数据备份效率,节约了数据库资源。
[0014] 可选地,所述方法还包括:
[0015] 根据所述拓扑信息和接收到的第i数据分片修改信息,在所述第m数据存储节点中 修改所述第i数据分片;
[0016] 根据所述第i数据分片修改信息对所述第i数据分片修改后,生成第一数据分片同 步f目息;
[0017] 将所述第一数据分片同步信息发送至所述第i数据分片的L-1个备份数据存储节 点,以使所述第i数据分片的L-1个备份数据存储节点根据所述第一数据分片同步信息进行 更新。
[0018] 可选地,还包括:
[0019] 若所述第m数据存储节点接收到第二数据分片同步信息,则根据所述第二数据分 片同步信息,确定所述第m数据存储节点中待同步的数据分片;
[0020] 根据所述第二数据分片同步信息,在所述第m数据存储节点中对所述待同步的数 据分片进行更新。
[0021] 可选地,所述方法还包括:
[0022] 若所述分布式数据库中的一个数据存储节点发生故障,则确定将所述故障数据存 储节点作为主存储数据节点的所有数据分片;
[0023]针对所述所有数据分片中的每一个,将所述数据分片的一个备份数据存储节点作 为所述数据分片的主存储数据节点;
[0024] 更新所述拓扑信息,并将更新后的所述拓扑信息发送至所述分布式数据库中的所 有正常数据存储节点。
[0025] 可选地,所述将所述数据分片的一个正常的备数据存储节点作为所述数据分片的 主存储数据节点,包括:
[0026] 根据所述数据分片的所有备份数据存储节点,确定候选数据存储节点,所述候选 数据存储节点为完全备份所述数据分片的备份数据存储节点;
[0027]从所述候选数据存储节点中选择一个,作为所述数据分片的主存储数据节点。 [0028]可选地,所述将更新后的所述拓扑信息发送至所述分布式数据库中的所有正常数 据存储节点之后,还包括:
[0029] 若所述分布式数据库存在备份分布式数据库,则将更新后的所述拓扑信息发送至 所述备份分布式数据库,以使所述备份分布式数据库将更新后的所述拓扑信息发送至所述 备份分布式数据库中的所有数据存储节点进行更新。
[0030] 可选地,所述方法还包括:
[0031 ]若所述分布式数据库发生故障,则判断是否有数据正在写入所述备份分布式数据 库;
[0032] 若确定没有数据正在写入所述备份分布式数据库,则将所述备份分布式数据库切 换为主分布式数据库;
[0033] 若确定有数据正在写入所述备份分布式数据库,则等待设定时长后,将所述备份 分布式数据库切换为主分布式数据库。
[0034]另一方面,本发明实施例提供一种分布式数据库的管理系统,包括:
[0035]确定单元,用于确定第i数据分片在分布式数据库中对应的第m数据存储节点,所 述分布式数据库包含L个数据存储节点,一个数据分片将所述L个数据存储节点中的一个数 据存储节点作为主数据存储节点,将其它L-1个数据存储节点作为备份数据存储节点,L为 大于1的整数;
[0036] 存储单元,用于将所述第i数据分片存储至所述第m数据存储节点;
[0037] 备份单元,用于将所述第i数据分片备份至所述第i数据分片的L-1个备份数据存 储节点;
[0038]更新单元,用于根据所述第i数据分片对应的第m数据存储节点,更新所述分布式 数据库中的拓扑信息,并将更新后的所述拓扑信息发送至所述分布式数据库中的所有数据 存储节点;所述拓扑信息用于表示数据分片与主数据存储节点之间的对应关系。
[0039] 可选地,所述更新单元还用于:
[0040] 根据所述拓扑信息和接收到的第i数据分片修改信息,在所述第m数据存储节点中 修改所述第i数据分片;
[0041] 根据所述第i数据分片修改信息对所述第i数据分片修改后,生成第一数据分片同 步f目息;
[0042]将所述第一数据分片同步信息发送至所述第i数据分片的L-1个备份数据存储节 点,以使所述第i数据分片的L-1个备份数据存储节点根据所述第一数据分片同步信息进行 更新。
[0043] 可选地,所述更新单元还用于:
[0044] 若所述第m数据存储节点接收到第二数据分片同步信息,则根据所述第二数据分 片同步信息,确定所述第m数据存储节点中待同步的数据分片;
[0045] 根据所述第二数据分片同步信息,在所述第m数据存储节点中对所述待同步的数 据分片进行更新。
[0046] 可选地,所述系统还包括故障处理单元,用于:
[0047]若所述分布式数据库中的一个数据存储节点发生故障,则确定将所述故障数据存 储节点作为主存储数据节点的所有数据分片;
[0048] 针对所述所有数据分片中的每一个,将所述数据分片的一个备份数据存储节点作 为所述数据分片的主存储数据节点;
[0049] 更新所述拓扑信息,并将更新后的所述拓扑信息发送至所述分布式数据库中的所 有正常数据存储节点。
[0050] 可选地,所述故障处理单元还用于:
[0051] 根据所述数据分片的所有备份数据存储节点,确定候选数据存储节点,所述候选 数据存储节点为完全备份所述数据分片的备份数据存储节点;
[0052] 从所述候选数据存储节点中选择一个,作为所述数据分片的主存储数据节点。 [0053] 可选地,所述故障处理单元,还用于:
[0054] 若所述分布式数据库存在备份分布式数据库,则将更新后的所述拓扑信息发送至 所述备份分布式数据库,以使所述备份分布式数据库将更新后的所述拓扑信息发送至所述 备份分布式数据库中的所有数据存储节点进行更新。
[0055] 可选地,所述故障处理单元,还用于:
[0056] 若所述分布式数据库发生故障,则判断是否有数据正在写入所述备份分布式数据 库;
[0057] 若确定没有数据正在写入所述备份分布式数据库,则将所述备份分布式数据库切 换为主分布式数据库;
[0058]若确定有数据正在写入所述备份分布式数据库,则等待设定时长后,将所述备份 分布式数据库切换为主分布式数据库。
【附图说明】
[0059] 为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使 用的附图作简要介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本 领域的普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其 他的附图。
[0060] 图1为现有技术中的主备式数据库备份方式示意图;
[0061 ]图2为本发明实施例提供的一种分布式数据库的管理方法流程图;
[0062] 图3为本发明实施例提供的一种分布式数据库示意图;
[0063] 图4(a)为本发明实施例提供的一种分布式数据库集群示意图;
[0064] 图4(b)为本发明实施例提供的一种分布式数据库集群示意图;
[0065] 图5(a)为本发明实施例提供的一种分布式数据库主备集群示意图;
[0066] 图5(b)为本发明实施例提供的一种分布式数据库主备集群示意图;
[0067] 图6为本发明实施例提供的一种分布式数据库的管理方法详细流程图;
[0068] 图7为本发明实施例提供的一种分布式数据库的管理系统示意图;
[0069] 图8为本发明实施例提供的一种分布式数据库的管理系统示意图。
【具体实施方式】
[0070] 为了使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明作进 一步地详细描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施 例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的 所有其它实施例,都属于本发明保护的范围。
[0071] 下面结合说明书附图对本发明实施例作进一步详细描述。
[0072] 如图2所示,本发明实施例提供的一种分布式数据库的管理方法,包括:
[0073]步骤201、确定第i数据分片在分布式数据库中对应的第m数据存储节点,所述分布 式数据库包含L个数据存储节点,一个数据分片将所述L个数据存储节点中的一个数据存储 节点作为主数据存储节点,将其它L-1个数据存储节点作为备份数据存储节点,L为大于1的 整数;
[0074]步骤202、将所述第i数据分片存储至所述第m数据存储节点;
[0075] 步骤203、将所述第i数据分片备份至所述第i数据分片的L-1个备份数据存储节 占.
[0076] 步骤204、根据所述第i数据分片对应的第m数据存储节点,更新所述分布式数据库 中的拓扑信息,并将更新后的所述拓扑信息发送至所述分布式数据库中的所有数据存储节 点;所述拓扑信息用于表示数据分片与主数据存储节点之间的对应关系。
[0077] 本发明实施例中,数据分片是指将完整的数据按一定规律拆分成多个部分,每个 部分称为一个数据分片,例如,一种典型的数据分片划分方法为,将数据表中的某个字段按 一定大小区间规则区分为多个数据分片。
[0078] 在本发明实施例中,每个数据分片都由1个数据存储节点负责管理,称之为主存储 节点,并在L-1个数据存储节点做备份,称之为备份存储节点,外部对数据分片的访问只发 生主数据存储节点上。其中,数据存储节点指的是一个数据库,也可以是一个数据存储单 元,L是一个预先设定的大于1的整数,例如L取5,就表示每个数据分片存储在一个主数据存 储节点,然后在另外4个数据存储节点上做数据的备份,即每个数据分片都做4个备份。
[0079] 下面举例说明本发明实施例中的分布式数据库的结构,参照图3,为本发明实施例 提供的一种分布式数据库示意图,其中,以L = 3为例进行说明。每个数据分片都将3个数据 存储节点中的一个作为主数据存储节点,然后在另外2个数据存储节点上做数据分片的备 份。
[0080] 在图3中,数据分片1将数据存储节点1作为主数据存储节点,将数据存储节点2和 数据存储节点3作为备份数据存储节点;数据分片2将数据存储节点2作为主数据存储节点, 将数据存储节点1和数据存储节点3作为备份数据存储节点;数据分片3将数据存储节点3作 为主数据存储节点,将数据存储节点1和数据存储节点2作为备份数据存储节点。并且对于 数据分片的修改操作只能由数据分片的主数据存储节点才可以实施,例如,如果需要修改 数据分片1的数据,那么只能通过数据存储节点1来进行修改,在修改完成之后,可以通过 "数据分布"功能,将修改后的数据分片1或者是将实施的修改信息(其中包含了做了哪些修 改操作)发布给除数据存储节点1之外的所有数据存储节点,即发布给数据存储节点2和数 据存储节点3,然后由数据存储节点2和数据存储节点3对自身存储的数据分片1进行更新, 使得与数据存储节点1中的数据分片1保持数据一致。
[0081 ]另外,对于一个数据存储节点中的备份数据分片,则可以通过数据存储节点中的 "数据订阅"功能接收其它数据存储节点发布过来的同步信息来进行更新,其中,备份数据 分片指的是数据存储节点中将其它数据存储节点作为主数据存储节点的数据分片,例如, 以数据存储节点1为例,其中数据分片1将数据存储节点1作为主数据存储节点,而数据存储 节点1中的数据分片2是将数据存储节点2作为主数据存储节点,而数据存储节点1只是对数 据分片2进行备份,因此,数据分片2是数据存储节点1的备份数据分片,对于数据存储节点 1,如果数据存储节点1接收到数据存储节点2发布过来的数据分片2的同步信息,则根据同 步信息对数据存储节点1中的数据分片2进行修改。同样地,数据存储节点1中的数据分片3 也是数据存储节点1的备份数据分片。
[0082] 基于上述描述,结合图3,本发明实施例中提供的分布式数据包含L个数据存储节 点,其中每个数据存储节点可以存储多个数据分片,并且一个数据分片只将L个数据存储节 点中的一个作为主数据存储节点,其它的L-1个数据存储节点作为备份数据存储节点,对于 一个数据分片的修改操作,只能发生在主数据存储节点上,在主数据存储节点对数据分片 进行修改后,需要将修改信息发布到其它L-1个数据存储节点中,以使得其它L-1个数据存 储节点对修改后的数据分片进行同步,每个数据存储节点可以接收其它L-1个数据存储节 点发布过来的同步信息,根据同步信息对数据分片进行相应修改。
[0083] 从本发明实施例提供的分布式数据库的存储结构可以看出,该数据备份方法,实 现了使用L个数据存储节点就可以对每个数据分片做L-1个备份,相较于【背景技术】中提到的 主备式数据库备份方法,可以大大减少备份数据库的数量,以图1为例,如果需要对两个数 据库(即主库1和主库2)进行备份,则需要增加两个数据库(即增加备库1和备库2),然后分 别使用备库1对主库1进行备份,使用备库2对主库2进行备份;而如果使用本发明的方法,当 需要对主库1和主库2进行备份时,可以不需要增加数据库,直接对主库1和主库2进行相互 备份,即使用主库2对主库1中的数据进行备份,然后使用主库1对主库2中的数据进行备份, 从而大大减少了备份数据库的数量。在该方法中,由于每个数据库被用作主数据库的同时, 也被用作备份数据库,因而对容量提出了更高的要求,但是结合实际应用,发现对于容量的 增加的成本是非常方便和低成本的,因而本发明实施例的方法相较于【背景技术】中的主备式 数据库备份方法,具有高效、低成本、高效率等优势。
[0084]下面对上述步骤201~步骤204中的分布式数据库的管理方法做详细说明。
[0085]当需要将数据分片进行存储时,在上述步骤201中,确定第i数据分片在分布式数 据库中对应的第m数据存储节点,并将所述第m数据存储节点作为所述第i数据分片的主数 据存储节点,其中,所述分布式数据库包含L个数据存储节点,一个数据分片将所述L个数据 存储节点中的一个数据存储节点作为主数据存储节点,将其它L-1个数据存储节点作为备 份数据存储节点,L为大于1的整数,因此,所述第i数据分片是所有数据片中的任一数据分 片,第m数据存储节点是L个数据存储节点中的一个数据存储节点。至于第i数据分片对应的 第m数据存储节点是L个数据存储节点中的哪一个,可以根据实际应用需要而设定,例如可 以对数据存储节点进行分类,建立数据分片与数据存储节点之间的对应规则,从而可以确 定一个数据分片对应的数据存储节点。
[0086]在确定了一个第i数据分片在分布式数据库中对应的第m数据存储节点之后,通过 上述步骤202,将所述第i数据分片存储至所述第m数据存储节点,以及通过在上述步骤203 中,将所述第i数据分片备份至所述第i数据分片的L-1个备份数据存储节点,即由第m数据 存储节点在将第i数据分片存储之后,发布同步信息到其它L-1个数据存储节点,其它L-1个 数据存储节点接收到同步信息之后,分别存储所述第i数据分片。例如,参照图3,当将数据 分片1存储至数据存储节点1之后(数据存储节点1即为数据分片1的主数据存储节点),由数 据存储节点1将数据分片1发布至数据存储节点2和数据存储节点3,数据存储节点2和数据 存储节点3分别接收到到数据分片1之后,分别进行备份,因此在数据存储节点2和数据存储 节点3中也分别存储了数据分片1,并且对于数据分片1的后续修改等操作只能在数据存储 节点1中进行,因为数据存储节点1是数据分片1的主数据存储节点,而对于数据存储节点2 和数据存储节点3中的数据分片1,只能进行读操作,不可进行写操作。
[0087] 在上述步骤204中,在将第i数据分片存储至第m数据存储节点之后,需要更新分布 式数据库中的拓扑信息,并将更新后的所述拓扑信息发送至所述分布式数据库中的所有数 据存储节点,使得所有的数据存储节点得到更新之后的拓扑信息,其中,所述拓扑信息用于 表示数据分片与主数据存储节点之间的对应关系。
[0088] 参照图3所示的数据分片与数据存储节点之间的关系,得到的拓扑信息至少包含 如表1所述的信息,如表1所示,为拓扑信息表。
[0090] ~表1拓扑信息表
[0091] 再比如,有5个数据存储节点,其中数据分片1~数据分片10将数据存储节点1作为 主数据存储节点,数据分片11~数据分片16将数据存储节点2作为主数据存储节点,数据分 片17~数据分片26将数据存储节点3作为主数据存储节点,数据分片27~数据分片35将数 据存储节点4作为主数据存储节点,数据分片36~数据分片50将数据存储节点5作为主数据 存储节点,则对应的拓扑信息如表2所示:
[0094] 表2拓扑信息表
[0095]至此,完成了一个数据分片存储到某个数据存储节点的全部过程,并且在数据分 片存储的同时,也实现了数据分片的备份,即将L个数据存储节点中的一个数据存储节点作 为主数据存储节点,将数据分片进行存储,同时将数据分片发送多其它L-1个数据存储节点 进行备份。
[0096] 在对某个数据分片进行存储之后,如果后面需要修改该数据分片,则是通过该数 据分片的主数据存储节点进行操作,以第i数据分片为例,可选地,所述方法还包括:根据所 述拓扑信息和接收到的第i数据分片修改信息,在所述第m数据存储节点中修改所述第i数 据分片;根据所述第i数据分片修改信息对所述第i数据分片修改后,生成第一数据分片同 步信息;将所述第一数据分片同步信息发送至所述第i数据分片的L-1个备份数据存储节 点,以使所述第i数据分片的L-1个备份数据存储节点根据所述第一数据分片同步信息进行 更新。
[0097] 即首先根据拓扑信息确定要修改的第i数据分片对应的主数据存储节点为第m数 据存储节点,然后根据接收到的第i数据分片修改信息在第m数据存储节点中修改所述第i 数据分片,在对第i数据分片修改后,生成第一数据分片同步信息,其中第一数据分片同步 信息中包含修改的数据分片的相关信息,将所述第一数据分片同步信息发送至所述第i数 据分片的L-1个备份数据存储节点,第i数据分片的L-1个备份数据存储节点在接收到所述 第一数据分片同步信息,分别对存储的第i数据分片进行更新,从而完成了数据分片的更新 和所有数据存储节点之间的数据同步。
[0098] 相对应地,如果一个数据存储节点接收到数据分片同步信息,则进行相应的更新, 具体地,若所述第m数据存储节点接收到第二数据分片同步信息,则根据所述第二数据分片 同步信息,确定所述第m数据存储节点中待同步的数据分片;根据所述第二数据分片同步信 息,在所述第m数据存储节点中对所述待同步的数据分片进行更新。
[0099] 即第m数据存储节点如果接收到第二数据分片同步信息,则根据所述第二数据分 片同步信息,确定所述第m数据存储节点中待同步的数据分片,然后根据所述第二数据分片 同步信息,对所述待同步的数据分片进行更新。
[0100] 通过上述方法,可以实现对一个数据存储节点中的数据分片的修改,同时对其它 的数据存储节点进行同步更新,保证了所有的数据存储节点所存储的数据分片全都是相同 的。
[0101] 在分布式数据库中,当其中某个存储节点发生故障或者整个数据库发生故障,如 何设置合理的处理方法是至关重要的,下面对本发明实施例提供的数据库发生故障时的处 理方法进行相应的说明。
[0102] 可选地,所述方法还包括:若所述分布式数据库中的一个数据存储节点发生故障, 则确定将所述故障数据存储节点作为主存储数据节点的所有数据分片;针对所述所有数据 分片中的每一个,将所述数据分片的一个备份数据存储节点作为所述数据分片的主存储数 据节点;更新所述拓扑信息,并将更新后的所述拓扑信息发送至所述分布式数据库中的所 有正常数据存储节点。
[0103] 在本发明实施例中,任意一个数据存储节点中都存储了所有的数据分片,因此当 一个数据存储节点发生故障,成为故障数据存储节点时,数据是不会丢失的,因而在其它数 据存储节点中都有数据的完整备份。对于某个数据存储节点,其中存储的数据分片分为两 种类型,第一种类型是将该数据存储节点作为主数据存储节点的数据分片,可以称之为主 数据分片,第二种类型是将该数据存储节点作为备份数据存储节点的数据分片,可以称之 为备份数据分片。对于一个故障数据存储节点,需要进行的操作是:根据拓扑信息,确定其 中的主数据分片,然后需要为这些主数据分片重新指定主存储节点,因为数据的修改等操 作只发生在主数据存储节点上。
[0104] 对于故障数据存储节点中的主数据分片,可以将主数据分片的一个备份数据存储 节点作为所述数据分片的主存储数据节点,可选地,可通过下述方式来确定:根据所述数据 分片(即故障数据存储节点中的主数据分片)的所有备份数据存储节点,确定候选数据存储 节点,所述候选数据存储节点为完全备份所述数据分片的备份数据存储节点;从所述候选 数据存储节点中选择一个,作为所述数据分片的主存储数据节点。
[0105] 其中,一个备份数据存储节点完全备份了故障存储数据节点中的主数据分片,指 的是在备份数据存储节点中的数据分片与故障存储数据节点中的主数据分片完全相同。
[0106] 举例来说,参照图3,假设数据存储节点1发生了故障,成为故障数据存储节点,现 在需要为其中的数据分片1重新选择一个数据存储节点作为数据分片1的主数据存储节点, 如果数据存储节点2和数据存储节点3中的备份数据分片1与数据存储节点1中的数据分片1 完全相同,则可以将数据存储节点2和数据存储节点3都确定为候选数据存储节点;但是考 虑到另外一种情形,假设数据存储节点1已经完成了对数据分片1的修改,然后发送第一数 据分片同步信息到数据存储节点2和数据存储节点3中,使得数据存储节点2和数据存储节 点3对数据分片1进行更新,如果数据存储节点2已经完成了对数据分片1的同步,但此时数 据存储节点3还没有完成对数据分片1的同步,此时在选择候选数据存储节点时,只能够将 数据存储节点2作为候选数据存储节点,即只能将数据存储节点2作为数据分片1的新的主 数据存储节点。当然,在实际应用中,在一个数据存储节点发生故障,选择候选数据存储节 点时,可以等待一段时间,等待每个备份数据存储节点的数据写入操作都完成之后,再来选 择主数据存储节点,或者是设定一个等待写入时间,在设定的等待写入时间过后,再来选择 主数据存储节点。
[0107] 通过上述方法,可以实现当一个数据存储节点发生故障时,可以将其中的主数据 分片重新指定主数据存储节点,并且在指定主数据存储节点之后,还需要更新拓扑信息,然 后将拓扑信息发送到其它的所有数据存储节点。
[0108] 以上是对一个分布式数据进行管理的方法,在实际应用中,可能还需要对一个分 布式数据库进行备份,即形成主分布式数据库和备份分布式数据库的结构,其中备份分布 式数据库中的存储结构与主分布式数据库中的存储结构完全相同,也采用本发明实施例中 的分布式数据库的管理方法进行数据管理。
[0109]因而,在对主分布式数据库中的故障数据存储节点中的主数据分片指定了主数据 存储节点节点,以及将更新后的拓扑信息发送至分布式数据库中的所有正常数据存储节点 之后,若分布式数据库存在备份分布式数据库,则将更新后的所述拓扑信息发送至所述备 份分布式数据库,以使所述备份分布式数据库将更新后的所述拓扑信息发送至所述备份分 布式数据库中的所有数据存储节点进行更新。
[0110]从而保证了主分布式数据库与备份分布式数据库之间的数据同步,并且可选地, 若主分布式数据库发生故障,则判断是否有数据正在写入所述备份分布式数据库;若确定 没有数据正在写入所述备份分布式数据库,则将所述备份分布式数据库切换为主分布式数 据库;若确定有数据正在写入所述备份分布式数据库,则等待设定时长后,将所述备份分布 式数据库切换为主分布式数据库。
[0111] 该方式实现了在主分布式数据库发生故障后,可以切换至备份分布式数据库,从 而保证备份分布式数据库可以及时切换为主分布式数据库进行使用,保证数据的正常操 作。
[0112] 本发明实施例提供的方法,在做数据存储时,确定第i数据分片在分布式数据库中 对应的第m数据存储节点,所述分布式数据库包含L个数据存储节点,一个数据分片将所述L 个数据存储节点中的一个数据存储节点作为主数据存储节点,将其它L-1个数据存储节点 作为备份数据存储节点,L为大于1的整数;将所述第i数据分片存储至所述第m数据存储节 点;将所述第i数据分片备份至所述第i数据分片的L-1个备份数据存储节点;根据所述第i 数据分片对应的第m数据存储节点,更新所述分布式数据库中的拓扑信息,并将更新后的所 述拓扑信息发送至所述分布式数据库中的所有数据存储节点;所述拓扑信息用于表示数据 分片与主数据存储节点之间的对应关系。该方法将L个数据存储节点中的一个存储节点作 为一个数据片的主存储节点,其它L-1个数据存储节点作为备份存储节点,从而可以使得L 个数据库之间相互做备份,因而不管有多少个数据分片,只需要使用L个数据存储节点就可 以实现对每个数据分片做L-1次备份,并且每个数据存储节点都既可以作为主存储节点,又 可以做备份存储节点,同时也保证了L个数据存储节点之间的负载均衡,因而该方法极大地 提高了数据备份效率,节约了数据库资源。
[0113] 下面结合图4(a)和图5(a),给出实际应用中的一种分布式数据库管理的实现方 式,参照图4(a)和图5(a),其中图4(a)为本发明实施例提供的一种分布式数据库集群示意 图,图5(a)为本发明实施例提供的一种分布式数据库主备集群示意图。在图4(a)中,一个分 布式数据库集群包含以下几个模块:接入与计算模块、数据存储模块及数据节点信息管理 模块,并且在数据存储模块中包含L个数据存储节点。
[0114] 数据存储节点:用于存储数据分片,当它负责的数据分片需要修改时或修改后,必 须将修改信息发布。数据存储节点有3个功能模块组成:
[0115] 1)、数据存储;
[0116] 2 )、接收数据修改信息,并存储,可以通过"数据订阅"功能来实现;
[0117] 3)、如果本数据存储节点负责的数据分片,需要修改时或修改后,将修改信息通过 "数据发布"功能进行发布。
[0118] 接入与计算模块:用于外部应用程序接入和分布式数据计算的模块。主要功能如 下:
[0119] 1)、接受外部应用的请求;
[0120] 2)、根据数据分片与数据存储节点的分布情况,将请求分发给各数据存储节点并 发处理,根据存储节点的应答信息反馈外部应用。
[0121]数据节点信息管理:主要管理数据分片与数据节点的关系(简称为拓扑关系),主 要功能如下:
[0122] 1 )、维护拓扑关系,即确定每个数据存储负责哪些数据分片;
[0123] 2)、与接入与计算模块通信,保证各接入与计算模块使用最新的拓扑关系;
[0124] 3)、与数据存储节点通信,确保每个数据存储节点必须发布且仅发布其负责的数 据分片修改信息。
[0125] 基于图4(a)所示的分布式数据库集群,可以对分布式数据库集群进行备份,得到 备份分布式数据库集群,如图5(a)所示,是具有主备关系的2个分布式数据库集群。其中,分 布式数据库集群的主备关系中要求:
[0126] 1)、数据存储节点数量一致,数据存储节点一一对应;
[0127] 2)、备份分布式数据库集群需要和主分布式数据库集群保持一致的拓扑关系(数 据发布与订阅关系),另外,备份分布式数据库集群中的每个数据存储节点还需要从它在主 分布式数据库集群中的对应数据存储点订阅数据;
[0128] 3)、主备分布式数据库集群中的数据节点信息,负责拓扑信息的相互同步。主备分 布式数据库集群下,主分布式数据库集群负责发布拓扑信息,备分布式数据库集群负责接 收拓扑信息并在本地生效,备分布式数据库集群不向主发布拓扑信息,主分布式数据库集 群不接收备分布式数据库集群的拓扑信息。
[0129] 下面对实际应用中基于图4(a)和图5(a)所示的主备分布式数据库集群结构的容 灾情况的处理流程做说明。
[0130] 第一种情形、数据接入与计算模块中的某个接入与计算节点发生故障
[0131] 当数据接入与计算模块中的某个接入与计算节点发生故障时,处理较为简单,关 闭故障的接入与计算节点即可,由应用负载均衡连接到其他可用的接入与计算节点。
[0132] 第二种情形、数据存储节点发生故障
[0133] 处理流程如下:
[0134] 1)、"数据节点信息管理模块"根据拓扑关系获取存在故障的数据存储节点中的主 数据分片信息,修改拓扑信息,在拓扑信息中标志对故障的数据存储节点中的主数据分片 不可访问;
[0135] 2)、"数据节点信息管理模块"将修改后的拓扑信息依次发布给:数据接入与计算 模块、所有的数据存储节点、备份分布式数据库集群的"数据节点信息管理模块",这三者需 要依次发布,特别是在所有数据接入与计算模块接收完拓扑信息后,才能向所有的数据存 储节点发布信息。通过该步骤,使得外部访问操作不会对存在故障的数据分片产生数据修 改;
[0136] 3)、"数据节点信息管理模块"选择一个具有故障的数据存储节点中的主数据分片 的备份的数据存储节点作为管理者节点,这样形成新的拓扑信息;
[0137] 4)、"数据节点信息管理模块"将新的拓扑信息发布给主分布式数据库集群中的所 有数据存储节点,这样的目的是让,选中的数据存储节点知晓负责了新的数据分片,即以后 需要发布对该数据分片修改;
[0138] 5)、"数据节点信息管理模块"将拓扑信息发布给备份分布式数据库集群的"数据 节点信息管理模块",备份分布式数据库集群接收到该信息后,将拓扑信息发布给备份分布 式数据库集群的数据存储节点;
[0139] 6)、"数据节点信息管理模块"将拓扑信息发布给接入与计算模块,这样外部对原 故障的数据分片的访问,能够通过接入与计算模块访问到调整后的数据存储节点。
[0140]通过上述步骤,即完成了数据存储节点的故障处理。
[0141]当然,在实际应用中,一个分布式的数据库的结构还可以其它形式,如图4(b)所 示,为本发明实施例提供的一种分布式数据库集群示意图,在一个分布式数据库中,包含多 个数据存储节点,并且以L为单位,组成多个相互备份的备份组,例如,参照图4(b),其中数 据存储节点1、数据存储节点2和数据存储节点3组成一个备份组,可以称之为第一备份组, 数据存储节点4、数据存储节点5和数据存储节点6组成一个备份组,可以称之为第二备份 组,在第一备份组中的3个数据存储节点是相互备份的,其具体的数据分片存储方法,更新 方法以及容灾方法,与上述描述的图4(a)中的数据分片存储方法,更新方法以及容灾方法 相同,在此不再赘述,图4(b)中的分布式数据库与图4(a)中的分布式数据库的区别在于,图 4(b)中的分布式数据库中包含有多个备份组,每个备份组类似于图4(a)中的一个分布式数 据库,因而方便更加合理的对多种类型的数据分片按照其类型存储至相应的备份组中,从 而方便实际应用中的数据库的管理。
[0142] 与图4(b)的分布式数据库对应的备份数据库如图5(b)所示,其中,图5(b)为本发 明实施例提供的一种分布式数据库主备集群示意图,下面针对图5(b)所示的分布式数据库 主备集群,来说明当某个数据存储节点发生故障时,如何进行节点故障处理,假设是分布式 数据库主集群中的数据存储节点1发生故障:
[0143] 步骤1、数据节点信息管理模块隔离故障数据存储节点和数据分片。
[0144] 数据节点信息管理模块更新拓扑信息,将拓扑信息中的故障数据存储节点设置为 不可用。
[0145] 步骤2、数据节点信息管理模块通知相关方。
[0146]数据节点信息管理模块通知分布式数据库主集群中接入与计算模块中的所有接 入与计算节点和对应的数据存储节点(即分布式数据库主集群中的数据存储节点1和数据 存储节点2)和分布式数据库备集群,告知故障数据存储节点不可用。
[0147]步骤3、数据节点信息管理模块重建拓扑信息。
[0148]数据节点信息管理模块更新拓扑信息,为故障数据存储节点中的主分数据片选择 一个数据存储节点作为主数据存储节点。
[0149]步骤4、数据节点信息管理模块将更新后的拓扑信息通知数据存储节点。
[0150]数据节点信息管理模块通知相关数据存储节点更新拓扑信息,负载新的数据分 片。
[0151]步骤5、数据节点信息管理模块将新的拓扑信息通知分布式数据库备集群。
[0152]数据节点信息管理模块通知分布式数据库备集群的"数据节点信息管理模块"生 效新的拓扑信息,分布式数据库备集群需要将拓扑信息发布给分布式数据库备集群中的相 关数据存储节点和接入与计算模块中的所有接入与计算节点。
[0153]步骤6、数据节点信息管理模块将新的拓扑信息通知分布式数据库主集群中接入 与计算模块中的所有接入与计算节点。
[0154]将新的拓扑信息通知分布式数据库主集群中接入与计算模块中的所有接入与计 算节点。
[0155] 下面对本发明实施例提供的一种分布式数据库的管理方法做详细描述,如图6所 示,包括:
[0156] 步骤601、确定第i数据分片在分布式数据库中对应的第m数据存储节点,所述分布 式数据库包含L个数据存储节点,一个数据分片将所述L个数据存储节点中的一个数据存储 节点作为主数据存储节点,将其它L-1个数据存储节点作为备份数据存储节点,L为大于1的 整数;
[0157] 步骤602、将所述第i数据分片存储至所述第m数据存储节点;
[0158] 步骤603、根据所述第i数据分片对应的第m数据存储节点,更新所述分布式数据库 中的拓扑信息,并将更新后的所述拓扑信息发送至所述分布式数据库中的所有数据存储节 点;所述拓扑信息用于表示数据分片与主数据存储节点之间的对应关系;
[0159] 步骤604、根据所述拓扑信息和接收到的第i数据分片修改信息,在所述第m数据存 储节点中修改所述第i数据分片;
[0160] 步骤605、根据所述第i数据分片修改信息对所述第i数据分片修改后,生成第一数 据分片同步信息;
[0161] 步骤606、将所述第一数据分片同步信息发送至所述第i数据分片的L-1个备份数 据存储节点,以使所述第i数据分片的L-1个备份数据存储节点根据所述第一数据分片同步 信息进行更新;
[0162] 步骤607、若所述第m数据存储节点接收到第二数据分片同步信息,则根据所述第 二数据分片同步信息,确定所述第m数据存储节点中待同步的数据分片;
[0163] 步骤608、根据所述第二数据分片同步信息,在所述第m数据存储节点中对所述待 同步的数据分片进行更新;
[0164] 步骤609、若所述分布式数据库中的一个数据存储节点发生故障,则确定将所述故 障数据存储节点作为主存储数据节点的所有数据分片;
[0165] 步骤610、针对所述所有数据分片中的每一个,将所述数据分片的一个备份数据存 储节点作为所述数据分片的主存储数据节点;
[0166] 步骤611、更新所述拓扑信息,并将更新后的所述拓扑信息发送至所述分布式数据 库中的所有正常数据存储节点;
[0167] 步骤612、若所述分布式数据库存在备份分布式数据库,则将更新后的所述拓扑信 息发送至所述备份分布式数据库,以使所述备份分布式数据库将更新后的所述拓扑信息发 送至所述备份分布式数据库中的所有数据存储节点进行更新。
[0168] 其中,需要说明的是,上述步骤601~步骤603,步骤604~步骤606,步骤607~步骤 608,步骤609~步骤612,相互之间没有严格的时序关系,上述步骤601~步骤603主要实现 对数据分片的存储,步骤604~步骤606主要实现对数据分片的修改,步骤607~步骤608主 要实现根据接收到的其它数据存储节点发送的数据分布同步信息对本数据存储节点中的 数据分片进行同步更新,步骤步骤609~步骤612主要实现当数据分片发生故障后的更新操 作。
[0169] 本发明实施例提供的方法,在做数据存储时,确定第i数据分片在分布式数据库中 对应的第m数据存储节点,所述分布式数据库包含L个数据存储节点,一个数据分片将所述L 个数据存储节点中的一个数据存储节点作为主数据存储节点,将其它L-1个数据存储节点 作为备份数据存储节点,L为大于1的整数;将所述第i数据分片存储至所述第m数据存储节 点;将所述第i数据分片备份至所述第i数据分片的L-1个备份数据存储节点;根据所述第i 数据分片对应的第m数据存储节点,更新所述分布式数据库中的拓扑信息,并将更新后的所 述拓扑信息发送至所述分布式数据库中的所有数据存储节点;所述拓扑信息用于表示数据 分片与主数据存储节点之间的对应关系。该方法将L个数据存储节点中的一个存储节点作 为一个数据片的主存储节点,其它L-1个数据存储节点作为备份存储节点,从而可以使得L 个数据库之间相互做备份,因而不管有多少个数据分片,只需要使用L个数据存储节点就可 以实现对每个数据分片做L-1次备份,并且每个数据存储节点都既可以作为主存储节点,又 可以做备份存储节点,同时也保证了L个数据存储节点之间的负载均衡,因而该方法极大地 提高了数据备份效率,节约了数据库资源。
[0170]基于相同的技术构思,本发明实施例还提供一种分布式数据库的管理系统,如图7 所示,包括:
[0171]确定单元701,用于确定第i数据分片在分布式数据库中对应的第m数据存储节点, 所述分布式数据库包含L个数据存储节点,一个数据分片将所述L个数据存储节点中的一个 数据存储节点作为主数据存储节点,将其它L-1个数据存储节点作为备份数据存储节点,L 为大于1的整数;
[0172]存储单元702,用于将所述第i数据分片存储至所述第m数据存储节点;
[0173]备份单元703,用于将所述第i数据分片备份至所述第i数据分片的L-1个备份数据 存储节点;
[0174] 更新单元704,用于根据所述第i数据分片对应的第m数据存储节点,更新所述分布 式数据库中的拓扑信息,并将更新后的所述拓扑信息发送至所述分布式数据库中的所有数 据存储节点;所述拓扑信息用于表示数据分片与主数据存储节点之间的对应关系。
[0175] 可选地,所述更新单元704还用于:
[0176] 根据所述拓扑信息和接收到的第i数据分片修改信息,在所述第m数据存储节点中 修改所述第i数据分片;
[0177] 根据所述第i数据分片修改信息对所述第i数据分片修改后,生成第一数据分片同 步f目息;
[0178]将所述第一数据分片同步信息发送至所述第i数据分片的L-1个备份数据存储节 点,以使所述第i数据分片的L-1个备份数据存储节点根据所述第一数据分片同步信息进行 更新。
[0179] 可选地,所述更新单元704还用于:
[0180] 若所述第m数据存储节点接收到第二数据分片同步信息,则根据所述第二数据分 片同步信息,确定所述第m数据存储节点中待同步的数据分片;
[0181] 根据所述第二数据分片同步信息,在所述第m数据存储节点中对所述待同步的数 据分片进行更新。
[0182] 可选地,所述系统还包括故障处理单元705,用于:
[0183] 若所述分布式数据库中的一个数据存储节点发生故障,则确定将所述故障数据存 储节点作为主存储数据节点的所有数据分片;
[0184] 针对所述所有数据分片中的每一个,将所述数据分片的一个备份数据存储节点作 为所述数据分片的主存储数据节点;
[0185] 更新所述拓扑信息,并将更新后的所述拓扑信息发送至所述分布式数据库中的所 有正常数据存储节点。
[0186] 可选地,所述故障处理单元705还用于:
[0187] 根据所述数据分片的所有备份数据存储节点,确定候选数据存储节点,所述候选 数据存储节点为完全备份所述数据分片的备份数据存储节点;
[0188] 从所述候选数据存储节点中选择一个,作为所述数据分片的主存储数据节点。
[0189] 可选地,所述故障处理单元705,还用于:
[0190]若所述分布式数据库存在备份分布式数据库,则将更新后的所述拓扑信息发送至 所述备份分布式数据库,以使所述备份分布式数据库将更新后的所述拓扑信息发送至所述 备份分布式数据库中的所有数据存储节点进行更新。
[0191] 可选地,所述故障处理单元705,还用于:
[0192] 若所述分布式数据库发生故障,则判断是否有数据正在写入所述备份分布式数据 库;
[0193] 若确定没有数据正在写入所述备份分布式数据库,则将所述备份分布式数据库切 换为主分布式数据库;
[0194] 若确定有数据正在写入所述备份分布式数据库,则等待设定时长后,将所述备份 分布式数据库切换为主分布式数据库。
[0195] 本发明实施例,在做数据存储时,确定第i数据分片在分布式数据库中对应的第m 数据存储节点,所述分布式数据库包含L个数据存储节点,一个数据分片将所述L个数据存 储节点中的一个数据存储节点作为主数据存储节点,将其它L-1个数据存储节点作为备份 数据存储节点,L为大于1的整数;将所述第i数据分片存储至所述第m数据存储节点;将所述 第i数据分片备份至所述第i数据分片的L-1个备份数据存储节点;根据所述第i数据分片对 应的第m数据存储节点,更新所述分布式数据库中的拓扑信息,并将更新后的所述拓扑信息 发送至所述分布式数据库中的所有数据存储节点;所述拓扑信息用于表示数据分片与主数 据存储节点之间的对应关系。本发明实施例将L个数据存储节点中的一个存储节点作为一 个数据片的主存储节点,其它L-1个数据存储节点作为备份存储节点,从而可以使得L个数 据库之间相互做备份,因而不管有多少个数据分片,只需要使用L个数据存储节点就可以实 现对每个数据分片做L-1次备份,并且每个数据存储节点都既可以作为主存储节点,又可以 做备份存储节点,同时也保证了L个数据存储节点之间的负载均衡,因而该方法极大地提高 了数据备份效率,节约了数据库资源。
[0196] 参照图8,为本发明实施例提供的一种分布式数据库的管理系统示意图,在实际应 用中,一个分布式数据库的管理系统可以包含接入与计算模块801、数据存储模块802及数 据节点信息管理模块803。
[0197] 其中,接入与计算模块801可以完成确定单元701的功能,数据存储模块802可用于 存储单元702、备份单元703的功能,数据节点信息管理模块803可用于更新单元704、故障处 理单元705的功能,当然,并不限于上述使用方式,也可以是接入与计算模块801、数据存储 模块802及数据节点信息管理模块803分别完成确定单元701、存储单元702、备份单元703、 更新单元704及故障处理单元705的部分功能。
[0198] 本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程 图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流 程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序 指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产 生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实 现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的系统。
[0199] 这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特 定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指 令系统的制造品,该指令系统实现在流程图一个流程或多个流程和/或方框图一个方框或 多个方框中指定的功能。
[0200] 这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计 算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或 其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一 个方框或多个方框中指定的功能的步骤。
[0201] 尽管已描述了本发明的优选实施例,但本领域内的技术人员一旦得知了基本创造 性概念,则可对这些实施例做出另外的变更和修改。所以,所附权利要求意欲解释为包括优 选实施例以及落入本发明范围的所有变更和修改。
[0202] 显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精 神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围 之内,则本发明也意图包含这些改动和变型在内。
【主权项】
1. 一种分布式数据库的管理方法,其特征在于,包括: 确定第i数据分片在分布式数据库中对应的第m数据存储节点,所述分布式数据库包含 L个数据存储节点,一个数据分片将所述L个数据存储节点中的一个数据存储节点作为主数 据存储节点,将其它L-I个数据存储节点作为备份数据存储节点,L为大于1的整数; 将所述第i数据分片存储至所述第m数据存储节点; 将所述第i数据分片备份至所述第i数据分片的L-I个备份数据存储节点; 根据所述第i数据分片对应的第m数据存储节点,更新所述分布式数据库中的拓扑信 息,并将更新后的所述拓扑信息发送至所述分布式数据库中的所有数据存储节点;所述拓 扑信息用于表示数据分片与主数据存储节点之间的对应关系。2. 如权利要求1所述的方法,其特征在于,所述方法还包括: 根据所述拓扑信息和接收到的第i数据分片修改信息,在所述第m数据存储节点中修改 所述第i数据分片; 根据所述第i数据分片修改信息对所述第i数据分片修改后,生成第一数据分片同步信 息; 将所述第一数据分片同步信息发送至所述第i数据分片的L-I个备份数据存储节点,以 使所述第i数据分片的L-I个备份数据存储节点根据所述第一数据分片同步信息进行更新。3. 如权利要求1所述的方法,其特征在于,还包括: 若所述第m数据存储节点接收到第二数据分片同步信息,则根据所述第二数据分片同 步信息,确定所述第m数据存储节点中待同步的数据分片; 根据所述第二数据分片同步信息,在所述第m数据存储节点中对所述待同步的数据分 片进行更新。4. 如权利要求1至3任一项所述的方法,其特征在于,所述方法还包括: 若所述分布式数据库中的一个数据存储节点发生故障,则确定将所述故障数据存储节 点作为主存储数据节点的所有数据分片; 针对所述所有数据分片中的每一个,将所述数据分片的一个备份数据存储节点作为所 述数据分片的主存储数据节点; 更新所述拓扑信息,并将更新后的所述拓扑信息发送至所述分布式数据库中的所有正 常数据存储节点。5. 如权利要求4所述的方法,其特征在于,所述将所述数据分片的一个正常的备数据存 储节点作为所述数据分片的主存储数据节点,包括: 根据所述数据分片的所有备份数据存储节点,确定候选数据存储节点,所述候选数据 存储节点为完全备份所述数据分片的备份数据存储节点; 从所述候选数据存储节点中选择一个,作为所述数据分片的主存储数据节点。6. 如权利要求4所述的方法,其特征在于,所述将更新后的所述拓扑信息发送至所述分 布式数据库中的所有正常数据存储节点之后,还包括: 若所述分布式数据库存在备份分布式数据库,则将更新后的所述拓扑信息发送至所述 备份分布式数据库,以使所述备份分布式数据库将更新后的所述拓扑信息发送至所述备份 分布式数据库中的所有数据存储节点进行更新。7. 如权利要求6所述的方法,其特征在于,所述方法还包括: 若所述分布式数据库发生故障,则判断是否有数据正在写入所述备份分布式数据库; 若确定没有数据正在写入所述备份分布式数据库,则将所述备份分布式数据库切换为 主分布式数据库; 若确定有数据正在写入所述备份分布式数据库,则等待设定时长后,将所述备份分布 式数据库切换为主分布式数据库。8. -种分布式数据库的管理系统,其特征在于,包括: 确定单元,用于确定第i数据分片在分布式数据库中对应的第m数据存储节点,所述分 布式数据库包含L个数据存储节点,一个数据分片将所述L个数据存储节点中的一个数据存 储节点作为主数据存储节点,将其它L-I个数据存储节点作为备份数据存储节点,L为大于1 的整数; 存储单元,用于将所述第i数据分片存储至所述第m数据存储节点; 备份单元,用于将所述第i数据分片备份至所述第i数据分片的L-I个备份数据存储节 占 . 更新单元,用于根据所述第i数据分片对应的第m数据存储节点,更新所述分布式数据 库中的拓扑信息,并将更新后的所述拓扑信息发送至所述分布式数据库中的所有数据存储 节点;所述拓扑信息用于表示数据分片与主数据存储节点之间的对应关系。9. 如权利要求8所述的系统,其特征在于,所述更新单元还用于: 根据所述拓扑信息和接收到的第i数据分片修改信息,在所述第m数据存储节点中修改 所述第i数据分片; 根据所述第i数据分片修改信息对所述第i数据分片修改后,生成第一数据分片同步信 息; 将所述第一数据分片同步信息发送至所述第i数据分片的L-I个备份数据存储节点,以 使所述第i数据分片的L-I个备份数据存储节点根据所述第一数据分片同步信息进行更新。10. 如权利要求8所述的系统,其特征在于,所述更新单元还用于: 若所述第m数据存储节点接收到第二数据分片同步信息,则根据所述第二数据分片同 步信息,确定所述第m数据存储节点中待同步的数据分片; 根据所述第二数据分片同步信息,在所述第m数据存储节点中对所述待同步的数据分 片进行更新。11. 如权利要求8至10任一项所述的系统,其特征在于,所述系统还包括故障处理单元, 用于: 若所述分布式数据库中的一个数据存储节点发生故障,则确定将所述故障数据存储节 点作为主存储数据节点的所有数据分片; 针对所述所有数据分片中的每一个,将所述数据分片的一个备份数据存储节点作为所 述数据分片的主存储数据节点; 更新所述拓扑信息,并将更新后的所述拓扑信息发送至所述分布式数据库中的所有正 常数据存储节点。12. 如权利要求11所述的系统,其特征在于,所述故障处理单元还用于: 根据所述数据分片的所有备份数据存储节点,确定候选数据存储节点,所述候选数据 存储节点为完全备份所述数据分片的备份数据存储节点; 从所述候选数据存储节点中选择一个,作为所述数据分片的主存储数据节点。13. 如权利要求11所述的系统,其特征在于,所述故障处理单元,还用于: 若所述分布式数据库存在备份分布式数据库,则将更新后的所述拓扑信息发送至所述 备份分布式数据库,以使所述备份分布式数据库将更新后的所述拓扑信息发送至所述备份 分布式数据库中的所有数据存储节点进行更新。14. 如权利要求13所述的系统,其特征在于,所述故障处理单元,还用于: 若所述分布式数据库发生故障,则判断是否有数据正在写入所述备份分布式数据库; 若确定没有数据正在写入所述备份分布式数据库,则将所述备份分布式数据库切换为 主分布式数据库; 若确定有数据正在写入所述备份分布式数据库,则等待设定时长后,将所述备份分布 式数据库切换为主分布式数据库。
【文档编号】G06F11/14GK105930498SQ201610298361
【公开日】2016年9月7日
【申请日】2016年5月6日
【发明人】周家晶, 苗浩, 程朝, 王松磊, 董红亮, 冀乃庚
【申请人】中国银联股份有限公司