MySQL集群在线扩容方法、装置、设备及存储介质制造方法及图纸

技术编号:29096303 阅读:22 留言:0更新日期:2021-06-30 10:06
本发明专利技术涉及数据库处理领域,公开了一种MySQL集群在线扩容方法、装置、设备及存储介质。该方法包括:获取所述MySQL集群在线扩容至N个节点的扩容指令,其中N为大于M的正整数;读取所述M个节点中每个节点管理的数据量,计算出所述M个节点对应的数据总量;根据所述数据总量,计算出所述N个节点中每个节点管理的目标数据量;根据N个所述目标数据量,对所述M个节点进行数据迁移处理,将所述M个节点扩展至所述N个节点。所述N个节点。所述N个节点。

【技术实现步骤摘要】
MySQL集群在线扩容方法、装置、设备及存储介质


[0001]本专利技术涉及数据库处理领域,尤其涉及一种MySQL集群在线扩容方法、装置、设备及存储介质。

技术介绍

[0002]MySQL作为性能卓越的单体数据库被广泛应用与各种业务。而随着数据量的不断增大,单体数据库已不再满足业务需求,一种可行的方案是由多个MySQL数据库组成一个MySQL集群,并通过水平分表的方式将一个表的数据拆分到多个表,以此来突破单个MySQL数据库的限制。Share

Nothing分布式数据库一般采用这种架构,存储层由多个MySQL单体数据库节点组成节点集群,上层通过水平分表的方式将一个表的数据按照一定的规则(通常采用hash算法)分布到集群上。
[0003]随着业务的增长,现有集群规模可能不足以支撑业务的需要,单个表的数据量过大,导致计算性能降低。这时候就需要对集群进行扩展,将表数据水平的分布到更多的节点上,减少单个表的数据量,提升计算性能。
[0004]在进行水平扩容的过程中,如何尽量减少对业务的影响,并保证数据不丢失就至关重要。因此需要一种简单、高效的在线水平扩容方案,实现扩容过程对业务透明化,同时保证数据不丢失。

技术实现思路

[0005]本专利技术的主要目的在于解决数据集群在线扩容时会对业务的产生巨大影响的技术问题。
[0006]本专利技术第一方面提供了一种MySQL集群在线扩容方法,包括步骤:
[0007]获取所述MySQL集群在线扩容至N个节点的扩容指令,其中N为大于M的正整数;
[0008]读取所述M个节点中每个节点管理的数据量,计算出所述M个节点对应的数据总量;
[0009]根据所述数据总量,计算出所述N个节点中每个节点管理的目标数据量;
[0010]根据N个所述目标数据量,对所述M个节点进行数据迁移处理,将所述M个节点扩展至所述N个节点。
[0011]可选的,在本专利技术第一方面的第一种实现方式中,所述读取所述M个节点中每个节点管理的数据量,计算出所述M个节点对应的数据总量包括:
[0012]基于预置hash函数对所述M个节点中每个节点的每行数据进行hash值计算,得到所述M个节点对应的hash值集;
[0013]统计所述hash值集中的hash值数量,得到hash值总数,以及将所述hash值总数确定为所述M个节点对应的数据总量。
[0014]可选的,在本专利技术第一方面的第二种实现方式中,所述读取所述M个节点中每个节点管理的数据量,计算出所述M个节点对应的数据总量还包括:
[0015]基于预置hash函数对所述M个节点中每个节点的每行数据进行hash值计算,得到所述M个节点对应的hash值集;
[0016]根据所述hash值集中每个hash值,生成每个所述hash值对应的数据名称,并将每个数据名称与所述数据名称对应的hash值进行合并,生成hash值名称集;
[0017]统计所述hash值名称集中的hash值数量,得到hash值总数,以及将所述hash值总数确定为所述M个节点对应的数据总量。
[0018]可选的,在本专利技术第一方面的第三种实现方式中,所述根据所述数据总量,计算出所述N个节点中每个节点管理的目标数据量包括:
[0019]将所述N个节点的节点数量确定为取余值;
[0020]根据所述取余值,对所述hash值名称集进行取余处理,得到N个取余hash值名称集;
[0021]依次统计N个取余hash值名称集中对应的取余数量,并将N个所述取余数量确定为所述N个节点中每个节点管理的目标数据量。
[0022]可选的,在本专利技术第一方面的第四种实现方式中,所述根据N个所述目标数据量,对所述M个节点进行数据迁移处理,将所述M个节点扩展至所述N个节点包括:
[0023]计算所述N个节点与所述M个节点之间的节点数量差值;
[0024]创建所述节点数量差值的新节点,并修改所述M个节点和N

M个所述新节点的节点名称;
[0025]根据所述N个节点中每个节点管理的目标数据量,将所述M个节点每个节点中超过所述目标数据量的数据移动到N

M个所述新节点中,直至满足所述N个节点中每个节点管理的数据为目标数据量。
[0026]可选的,在本专利技术第一方面的第五种实现方式中,所述根据所述N个节点中每个节点管理的目标数据量,将所述M个节点每个节点中超过所述目标数据量的数据移动到N

M个所述新节点中,直至满足所述N个节点中每个节点管理的数据为目标数据量包括:
[0027]根据所述N个节点中每个节点管理的目标数据量,将所述M个节点每个节点中超过所述目标数据量的数据标记为移动数据;
[0028]根据N个所述取余hash值名称集,将所有的所述移动数据移动至N

M个所述新节点中,将所述M个节点扩展为所述N个节点。
[0029]可选的,在本专利技术第一方面的第六种实现方式中,所述根据N个所述目标数据量,对所述M个节点进行数据迁移处理,将所述M个节点扩展至所述N个节点包括:
[0030]创建N个中转数据表,其中,N个所述中转数据表的数据容量依次为所述N个节点中每个节点的目标数据量;
[0031]根据N个所述中转数据表中的M个中转数据表,对所述M个节点中的数据进行整体划分处理,生成第一映射关系表;
[0032]对所述M个节点中未被整体划分的数据转移至N

M个中转数据表中,生成第二映射关系表;
[0033]删除所述第一映射关系表对应的M个中转数据表,将已转移数据的M个节点与N

M个中转数据表整合,确定为所述N个节点。
[0034]本专利技术第二方面提供了一种MySQL集群在线扩容装置,所述MySQL集群在线扩容装
置包括:
[0035]获取模块,用于获取所述MySQL集群在线扩容至N个节点的扩容指令,其中N为大于M的正整数;
[0036]读取模块,用于读取所述M个节点中每个节点管理的数据量,计算出所述M个节点对应的数据总量;
[0037]计算模块,用于根据所述数据总量,计算出所述N个节点中每个节点管理的目标数据量;
[0038]扩展模块,用于根据N个所述目标数据量,对所述M个节点进行数据迁移处理,将所述M个节点扩展至所述N个节点。
[0039]本专利技术第三方面提供了一种MySQL集群在线扩容设备,包括:存储器和至少一个处理器,所述存储器中存储有指令,所述存储器和所述至少一个处理器通过线路互连;所述至少一个处理器调用所述存储器中的所述指令,以使得所述MySQL集群在线扩容设备执行上述的MySQL集群在线扩容方法。
[0040]本专利技术的第四方面提供了一种计算机可读存储介质,所述计算机可读存储介质中存储有指令,当其在计算机上运行时,使得计算机执行上述的MySQL集群在线扩容方法。
本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种MySQL集群在线扩容方法,所述MySQL集群初始为M个节点,M为正整数,其特征在于,包括步骤:获取所述MySQL集群在线扩容至N个节点的扩容指令,其中N为大于M的正整数;读取所述M个节点中每个节点管理的数据量,计算出所述M个节点对应的数据总量;根据所述数据总量,计算出所述N个节点中每个节点管理的目标数据量;根据N个所述目标数据量,对所述M个节点进行数据迁移处理,将所述M个节点扩展至所述N个节点。2.根据权利要求1所述的MySQL集群在线扩容方法,其特征在于,所述读取所述M个节点中每个节点管理的数据量,计算出所述M个节点对应的数据总量包括:基于预置hash函数对所述M个节点中每个节点的每行数据进行hash值计算,得到所述M个节点对应的hash值集;统计所述hash值集中的hash值数量,得到hash值总数,以及将所述hash值总数确定为所述M个节点对应的数据总量。3.根据权利要求1所述的MySQL集群在线扩容方法,其特征在于,所述读取所述M个节点中每个节点管理的数据量,计算出所述M个节点对应的数据总量还包括:基于预置hash函数对所述M个节点中每个节点的每行数据进行hash值计算,得到所述M个节点对应的hash值集;根据所述hash值集中每个hash值,生成每个所述hash值对应的数据名称,并将每个数据名称与所述数据名称对应的hash值进行合并,生成hash值名称集;统计所述hash值名称集中的hash值数量,得到hash值总数,以及将所述hash值总数确定为所述M个节点对应的数据总量。4.根据权利要求3所述的MySQL集群在线扩容方法,其特征在于,所述根据所述数据总量,计算出所述N个节点中每个节点管理的目标数据量包括:将所述N个节点的节点数量确定为取余值;根据所述取余值,对所述hash值名称集进行取余处理,得到N个取余hash值名称集;依次统计N个取余hash值名称集中对应的取余数量,并将N个所述取余数量确定为所述N个节点中每个节点管理的目标数据量。5.根据权利要求4所述的MySQL集群在线扩容方法,其特征在于,所述根据N个所述目标数据量,对所述M个节点进行数据迁移处理,将所述M个节点扩展至所述N个节点包括:计算所述N个节点与所述M个节点之间的节点数量差值;创建所述节点数量差值的新节点,并修改所述M个节点和N

M个所述新节点的节点名称;根据所述N个节点中每个节点管理的目标数据量,将所述M个节点每个节点中超过所述目标数据量的数据移动到N

M个所述新节点中,直至满足所述N个节点中每个节点...

【专利技术属性】
技术研发人员:黄李强熊志强
申请(专利权)人:深圳市汉云科技有限公司
类型:发明
国别省市:

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

1