[发明专利]MySQL集群在线扩容方法、装置、设备及存储介质在审
申请号: | 202110374199.4 | 申请日: | 2021-04-07 |
公开(公告)号: | CN113051252A | 公开(公告)日: | 2021-06-29 |
发明(设计)人: | 黄李强;熊志强 | 申请(专利权)人: | 深圳市汉云科技有限公司 |
主分类号: | G06F16/21 | 分类号: | G06F16/21;G06F16/27;G06F16/28 |
代理公司: | 深圳市特讯知识产权代理事务所(普通合伙) 44653 | 代理人: | 黄彧 |
地址: | 518000 广东省深圳市南山区西丽*** | 国省代码: | 广东;44 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | mysql 集群 在线 扩容 方法 装置 设备 存储 介质 | ||
本发明涉及数据库处理领域,公开了一种MySQL集群在线扩容方法、装置、设备及存储介质。该方法包括:获取所述MySQL集群在线扩容至N个节点的扩容指令,其中N为大于M的正整数;读取所述M个节点中每个节点管理的数据量,计算出所述M个节点对应的数据总量;根据所述数据总量,计算出所述N个节点中每个节点管理的目标数据量;根据N个所述目标数据量,对所述M个节点进行数据迁移处理,将所述M个节点扩展至所述N个节点。
技术领域
本发明涉及数据库处理领域,尤其涉及一种MySQL集群在线扩容方法、装置、设备及存储介质。
背景技术
MySQL作为性能卓越的单体数据库被广泛应用与各种业务。而随着数据量的不断增大,单体数据库已不再满足业务需求,一种可行的方案是由多个MySQL数据库组成一个MySQL集群,并通过水平分表的方式将一个表的数据拆分到多个表,以此来突破单个MySQL数据库的限制。Share-Nothing分布式数据库一般采用这种架构,存储层由多个MySQL单体数据库节点组成节点集群,上层通过水平分表的方式将一个表的数据按照一定的规则(通常采用hash算法)分布到集群上。
随着业务的增长,现有集群规模可能不足以支撑业务的需要,单个表的数据量过大,导致计算性能降低。这时候就需要对集群进行扩展,将表数据水平的分布到更多的节点上,减少单个表的数据量,提升计算性能。
在进行水平扩容的过程中,如何尽量减少对业务的影响,并保证数据不丢失就至关重要。因此需要一种简单、高效的在线水平扩容方案,实现扩容过程对业务透明化,同时保证数据不丢失。
发明内容
本发明的主要目的在于解决数据集群在线扩容时会对业务的产生巨大影响的技术问题。
本发明第一方面提供了一种MySQL集群在线扩容方法,包括步骤:
获取所述MySQL集群在线扩容至N个节点的扩容指令,其中N为大于M的正整数;
读取所述M个节点中每个节点管理的数据量,计算出所述M个节点对应的数据总量;
根据所述数据总量,计算出所述N个节点中每个节点管理的目标数据量;
根据N个所述目标数据量,对所述M个节点进行数据迁移处理,将所述M个节点扩展至所述N个节点。
可选的,在本发明第一方面的第一种实现方式中,所述读取所述M个节点中每个节点管理的数据量,计算出所述M个节点对应的数据总量包括:
基于预置hash函数对所述M个节点中每个节点的每行数据进行hash值计算,得到所述M个节点对应的hash值集;
统计所述hash值集中的hash值数量,得到hash值总数,以及将所述hash值总数确定为所述M个节点对应的数据总量。
可选的,在本发明第一方面的第二种实现方式中,所述读取所述M个节点中每个节点管理的数据量,计算出所述M个节点对应的数据总量还包括:
基于预置hash函数对所述M个节点中每个节点的每行数据进行hash值计算,得到所述M个节点对应的hash值集;
根据所述hash值集中每个hash值,生成每个所述hash值对应的数据名称,并将每个数据名称与所述数据名称对应的hash值进行合并,生成hash值名称集;
统计所述hash值名称集中的hash值数量,得到hash值总数,以及将所述hash值总数确定为所述M个节点对应的数据总量。
可选的,在本发明第一方面的第三种实现方式中,所述根据所述数据总量,计算出所述N个节点中每个节点管理的目标数据量包括:
将所述N个节点的节点数量确定为取余值;
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于深圳市汉云科技有限公司,未经深圳市汉云科技有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/202110374199.4/2.html,转载请声明来源钻瓜专利网。