一种支持多hashmap数据库集群系统不停机的扩容方法

文档序号:6640779阅读:689来源:国知局
一种支持多hash map数据库集群系统不停机的扩容方法
【专利摘要】本发明创造提供一种支持多hash map数据库集群系统不停机的扩容方法,包括以下步骤:S1.集群中的原表都绑定到现有的hash map上,现有的hash map命名为old hash map;S2.进行集群扩容时,执行产生新hash map的命令,集群产生新的hash map,并把该hash map设定为current hash map;S3.集群扩容后新创建的表自动绑定到current hash map上;S4.对原表和新表的任何操作将以current hash map为当前操作的hash map,基于old hash map的老表的原有的hash特性将丢失,需要按照current hash map进行数据动态重分布后参与和新表的运算。S5.迁移部分数据到新节点上,迁移完成后该表即可绑定到current hash map上。这种设计性能不衰减,数据过渡自然。
【专利说明】一种支持多数据库集群系统不停机的扩容方法

【技术领域】
[0001]本发明创造涉及分布式数据库领域,具体涉及一种支持多匕也III叩数据库集群系统不停机的扩容方法。

【背景技术】
[0002]在客户的业务场景中,当前集群满足不了用户的业务需求而需要对集群进行扩容时,需要在给定的时间窗口完成集群的扩容。传统意义的集群扩容主要技术为数据的搬移,通过将原有集群节点上的部分数据重分布到新加入的节点来完成扩容过程。根据数据量的大小,数据重分布的耗时在几小时到几天不等,并且在扩容过程中集群不允许0见与00[操作,仅允许查询操作,这就为集群用户带来很大不便,特别是实时系统用户不允许集群停机时间过长。


【发明内容】

[0003]本发明创造要解决的是扩容过程不允许用户执行0见与001操作的问题。
[0004]为解决上述技术问题,本发明创造采用的技术方案是:一种支持多匕也111叩数据库集群系统不停机的扩容方法,包括以下步骤:
[0005]81.集群中的原表都绑定到现有的爪叩上,现有的爪叩命名为01(1 118811
III 即;
[0006]82.进行集群扩容时,执行产生新1121811 111叩的命令,集群产生新的匕也111叩,并把该 118811 111?)设定为 0111*1*6111: 118811 111?);
[0007]83.集群扩容后新创建的表自动绑定到118811 111叩上;
[0008]84.对原表的任何操作将均使用01(1卜&也数据运算均在原有节点进行。对新表的任何操作将均使用118811 数据运算在所有的节点进行。对原表和新表的任何操作将以0111^6111:匕也111叩为当前操作的匕也111叩,基于¢)1(1匕也111叩的老表的原有的匕也特性将丢失,需要按照0111^6111:匕也111叩进行数据动态重分布后参与和新表的运算。
[0009]85.当数据自然老化后,基于01(1 118811 0?)的原表的数据将从集群中移除,当数据无法老化时,为了提高性能,迀移部分数据到新节点上,迀移完成后该表即可绑定到0111-1-6111: 118811 111?)上。
[0010]进一步地,步骤52包括以下步骤:
[0011]821.发起生成111叩的命令;
[0012]822.根据匕也桶数以及集群总节点数生成包含匕也匕7和110(161(1对应的11&81111181);
[0013]823.集群新生成的匕也111叩设定为0111^6111:匕也111叩,作为集群的缺省11&811
111叩0
[0014]进一步地,步骤322中生成匕也111叩的公式为每个节点分配的匕也匕7的总数=(集群hash桶数[65536]/物理节点总数)。
[0015]进一步地,每个节点分配的hash map的范围从0-65535中平均获取连续的一段hash keyο
[0016]进一步地,步骤S5包括以下步骤:
[0017]S51.接受原表动态重分布操作的命令;
[0018]S52.获得集群old hash map和扩容时新产生的current hash map ;
[0019]S53.在集群所有节点上创建中间临时表;
[0020]S54.集群原表按照current hash map动态重分布数据到所有节点上的中间临时表中;
[0021]S55.删除集群原表,中间临时表重命名为原表,并绑定在current hash map上。
[0022]本发明创造具有的优点和积极效果是:
[0023]性能不衰减:由于老的集群节点存储旧数据,对于原表的查询操作,原表的DML操作均在原集群节点上进行,性能与原有性能相当。新表的操作由于在集群扩容后的所有节点上,因此操作性能将得到提升。
[0024]数据过渡自然:老集群数据依据老化原则自然老化,集群扩容后新表将创建到所有的节点上,在老表的数据没有自然老化前,只基于老表,只基于新表,以及老表和新表的混合操作都自然支持。

【专利附图】

【附图说明】
[0025]图1是集群扩容后产生current hash map的流程图;
[0026]图2是原表数据重分布到新节点操作的流程图。

【具体实施方式】
[0027]—种支持多hash map数据库集群系统不停机的扩容方法,包括以下步骤:
[0028]S1.集群中的原表都绑定到现有的hash map上,现有的hash map命名为old hashmap ;
[0029]S2.进行集群扩容时,执行产生新hash map的命令,集群产生新的hash map,并把该 hash map 设定为 current hash map ;
[0030]S3.集群扩容后新创建的表自动绑定到current hash map上;
[0031]S4.对原表的任何操作将均使用old hash map,数据运算均在原有节点进行。对新表的任何操作将均使用current hash map,数据运算在所有的节点进行。对原表和新表的任何操作将以current hash map为当前操作的hash map,基于old hash map的老表的原有的hash特性将丢失,需要按照current hash map进行数据动态重分布后参与和新表的运算;
[0032]S5.当数据自然老化后,基于old hash map的原表的数据将从集群中移除,当数据无法老化时,为了提高性能,迀移部分数据到新节点上,迀移完成后该表即可绑定到current hash map 上。
[0033]步骤S2包括以下步骤:
[0034]S21.发起生成hash map的命令;
[0035]822.根据1^811桶数以及集群总节点数生成包含1^811匕7和110(161(1对应的卜&也11181);
[0036]823.集群新生成的113811 111叩设定为118811 111叩,作为集群的缺省卜&也
111叩0
[0037]步骤322中生成1121811 111叩的公式为每个节点分配的匕也匕7的总数=(集群11&811桶数[65536=/物理节点总数)。
[0038]每个节点分配的匕也111叩的范围从0-65535中平均获取连续的一段匕也匕丫。
[0039]步骤35包括以下步骤:
[0040]851.接受原表动态重分布操作的命令;
[0041]852.获得集群 01(1 118811 III叩和扩容时新产生的118811 111叩;
[0042]853.在集群所有节点上创建中间临时表;
[0043]854.集群原表按照118811 111叩动态重分布数据到所有节点上的中间临时表中;
[0044]855.删除集群原表,中间临时表重命名为原表,并绑定在118811 111叩上。
[0045]以上对本发明创造的实施例进行了详细说明,但所述内容仅为本发明创造的较佳实施例,不能被认为用于限定本发明的实施范围。凡依本发明创造范围所作的均等变化与改进等,均应仍归属于本专利涵盖范围之内。
【权利要求】
1.一种支持多hash map数据库集群系统不停机的扩容方法,其特征在于:包括以下步骤: S1.集群中的原表都绑定到现有的hashmap上,现有的hash map命名为old hashmap ; S2.进行集群扩容时,执行产生新hashmap的命令,集群产生新的hash map,并把该hash map 设定为 current hash map ; S3.集群扩容后新创建的表自动绑定到currenthash map上; S4.对原表的任何操作将均使用oldhash map,数据运算均在原有节点进行。对新表的任何操作将均使用current hash map,数据运算在所有的节点进行。对原表和新表的任何操作将以current hash map为当前操作的hash map,基于old hash map的老表的原有的hash特性将丢失,需要按照current hash map进行数据动态重分布后参与和新表的运算。 S5.当数据自然老化后,基于oldhash map的原表的数据将从集群中移除,当数据无法老化时,为了提高性能,迀移部分数据到新节点上,迀移完成后该表即可绑定到currenthash map 上。
2.根据权利要求1所述的一种支持多hashmap数据库集群系统不停机的扩容方法,其特征在于:步骤S2包括以下步骤: S21.发起生成hashmap的命令; S22.根据hash桶数以及集群总节点数生成包含hashkey和nodeid对应的hash map ; S23.集群新生成的hashmap设定为current hash map,作为集群的缺省hash map。
3.根据权利要求2所述的一种支持多hashmap数据库集群系统不停机的扩容方法,其特征在于:步骤S22中生成hash map的公式为每个节点分配的hash key的总数=(集群hash桶数[65536]/物理节点总数)。
4.根据权利要求3所述的一种支持多hashmap数据库集群系统不停机的扩容方法,其特征在于:每个节点分配的hash map的范围从0-65535中平均获取连续的一段hash key。
5.根据权利要求1所述的一种支持多hashmap数据库集群系统不停机的扩容方法,其特征在于:步骤S5包括以下步骤: S51.接受原表动态重分布操作的命令; S52.获得集群oldhash map和扩容时新产生的current hash map ; S53.在集群所有节点上创建中间临时表; S54.集群原表按照currenthash map动态重分布数据到所有节点上的中间临时表中; S55.删除集群原表,中间临时表重命名为原表,并绑定在currenthash map上。
【文档编号】G06F17/30GK104484469SQ201410847870
【公开日】2015年4月1日 申请日期:2014年12月31日 优先权日:2014年12月31日
【发明者】张绍勇, 孔德生, 武新, 崔维力 申请人:天津南大通用数据技术股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1