一种分片方案在线变更的方法、装置和电子设备与流程

未命名 10-09 阅读:101 评论:0


1.本发明涉及计算机技术领域,具体涉及一种分片方案在线变更的方法、装置和电子设备。


背景技术:

2.目前,很多分布数据关系型数据系统还没有在线修改分片方案的解决方案。具体来讲,当业务变更或者业务规模改变,往往需要扩缩分片数,调整分片方案等;现有技术需要停机,离线人工处理;会影响正常业务操作。基于此,本发明提出了一种在线变更的方案,其可以做到业务无感知,不停业务,也不阻塞业务。


技术实现要素:

3.本技术提供一种分片方案在线变更的方法、装置和电子设备,以解决现有技术中的上述技术问题。
4.根据本技术的一方面,一种实施例提供了一种分片方案在线变更的方法,包括:
5.使用新分片方案创建原表的镜像表,并创建所述镜像表到原表的触发器,其中,所述新分片方案是不同于原数据库采用的分片方案。
6.重新分布所述原表的现有数据到镜像表;
7.切换业务到所述镜像表,并更新原数据信息。
8.一种实施例中,所述使用新分片方案创建原表的镜像表,并创建所述镜像表到原表的触发器包括:
9.使用所述新分片方案创建与原表相同的镜像表;
10.所述镜像表作为一个新表增加原数据信息中;
11.在所述原表上创建所述触发器,所述原表新的行数据写操作在镜像表上回放,保持所述镜像表与所述原表的新数据同步。
12.一种实施例中,所述重新分布所述原表的现有数据到镜像表包括:
13.选定合适的主键或者唯一键作为拆分字段;
14.根据所述拆分字段将数据拆分成n个区间,其中,n与指定的重分布并发数相同,n是正整数;
15.n个线程同时进行重分布数据处理,其中,一个重分布线程对应一个数据区间。
16.一种实施例中,每个所述重分布线程包括:
17.开启事务;
18.根据选定的拆分键扫描原表数据,每次扫描一个批次大小;
19.对每行数据按照新分片方案路由插入到所述镜像表;
20.提交事务;
21.开始下一个批次的扫描,循环执行,直到区间末尾。
22.一种实施例中,对数据重分布阶段的所有所述原表的binlog在镜像表上回放,直
到复制追平。
23.一种实施例中,所述切换业务到所述镜像表,并更新原数据信息包括:
24.获取表的元数据锁;
25.开始表切换,并删除所述镜像表的触发器;
26.切换完成后,释放所述元数据锁。
27.一种实施例中,分片方案在线变更的方法还包括预检测及参数校验;和/或,
28.分片方案在线变更的方法还包括在重分布完成后,进行数据一致性检测;
29.其中,所述预检测及参数校验中,所述预检测包括检测是否符合在线变更的前置条件,所述参数校验包括检测输入参数的合理性;
30.其中,所述数据一致性检测包括:
31.使用重分布阶段选定的拆分字段,把原表分成大区间;
32.计算区间内所有行数据crc32值之和sumcrc32;
33.比较所述原表和所述镜像表的sumcrc32,确定一个区间在两边的数据是否一致;如果所有区间都一致,即两表数据一致;如果存在区间不一致,进一步对不一致区间进行拆分,比较所有子区间是否一致,循环拆分直到区间小于预设大小,并定位到具体的不一致行,其中,如果存在不一致区间,但在子区间或者行级比较中一致,仍视为一致,其中,如果定位到不一致的行,重复检测,若多次检测仍然不一致,视为两表数据不一致,则禁止存在数据不一致的情况进入到表切换,并更新元数据信息流程,等待人工处理。
34.根据本技术的一方面,一种实施例提供了一种分片方案在线变更的装置,包括:
35.元数据处理模块,用于处理表元数据信息、元数据锁和元数据持久化;
36.数据重分布模块,用于复制原表的现有数据到镜像表;和
37.业务切换模块,用于切换业务到所述镜像表,并更新原数据信息,以使用新分片方案。
38.根据本技术的一方面,一种实施例提供了一种电子设备,包括:
39.存储器;和
40.处理器;
41.其中,所述存储器用于存储一条或多条计算机指令;所述一条或多条计算机指令被所述处理器执行以实现如上任意一项所述分片方案在线变更的方法。
42.根据本技术的一方面,一种实施例提供了一种可读存储介质,所述可读存储介质上存储有计算机指令;其中,所述计算机指令被处理器执行时,实现如上任意一项所述分片方案在线变更的方法。
43.本技术的上述实施例,可实现分片方案自动变更,大大降低人工运维成本。还可在线不停机变更分片方案,更加满足当代业务特征的需求;在线变更方案可以实现业务不停、业务不阻塞、业务无感知的效果,不会影响正常业务的操作。总的来说,本发明的分片方案在线变更的技术方案,在不影响业务的情况下更改表的分片方案,能大大降低运维成本和分布式数据使用效率,缩短分片变更窗口,效果较佳。
附图说明
44.为了更清楚地说明本发明具体实施方式或现有技术中的技术方案,下面将对具体
实施方式或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施方式,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
45.图1是一种实施例中分片方案在线变更的方法之流程图;
46.图2是一种实施例中分片方案在线变更的装置之结构示意图。
具体实施方式
47.需要说明的是,在不冲突的情况下,本技术中的实施例及实施例中的特征可以相互组合。下面将参考附图并结合实施例来详细说明本技术。
48.为了使本技术领域的人员更好地理解本技术方案,下面将结合本技术实施例中的附图,对本技术实施例中的技术方案进行清楚、完整地描述。显然,所描述的实施例仅仅是本技术一部分的实施例,而不是全部的实施例。基于本技术中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本技术保护的范围。
49.需要说明的是,本技术中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本技术的实施例。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
50.应该理解的是,当元件(诸如层、膜、区域、或衬底)描述为在另一元件“上”时,该元件可直接在该另一元件上,或者也可存在中间元件。而且,本技术中,当描述有元件“连接”至另一元件时,该元件可“直接连接”至该另一元件,或者通过第三元件“连接”至该另一元件。
51.实施例一:
52.请参考图1,一种实施例提供了一种分片方案在线变更的方法,包括以下步骤:
53.s1.预检测及参数校验,其中,所述预检测包括检测是否符合在线变更的前置条件,所述参数校验包括检测输入参数的合理性。进一步的,关于前置条件,前置条件包括外键、触发器和唯一索引中的一种或多种。这些都能通过查询表元数据信息得到。关于输入参数,输入参数包括数据重分布并发数和暂停窗口中的一种或两种。其中,并发越高重分布越快,但对系统资源的消耗也更高;可以设定业务高峰期为暂停窗口,避免分片方案在线变更任务抢占业务资源。
54.s2.使用新分片方案创建原表的镜像表,并创建所述镜像表到原表的触发器,可保持镜像表与原表的新数据同步。优选的,所述触发器包括insert触发器、update触发器和delete触发器中的一种或多种。其中,所述新分片方案是不同于原数据库采用的分片方案,所述新分片方案是与变更后的业务相适应的另一种分片方案,该新分片方案可选自现有技术的分片方案。
55.s3.重新分布所述原表的现有数据到镜像表。主要把原表现有数据通过复制方式重新分布到镜像表,实现旧数据的迁移。
56.s4.数据一致性检测。为了数据安全考虑,在完成重分布后,检测原表和镜像表数据一致性。
57.s5.切换业务到所述镜像表,并更新原数据信息,即使用所述新分片方案。
58.下面详细阐述各个步骤,以便于全面且准确理解本分片方案在线变更的方法之技术方案。
59.一种实施例中,步骤s2包括以下子步骤:
60.s21.使用所述新分片方案创建与原表相同的镜像表,把镜像表作为一个新表增加原数据信息中。
61.s22.所述镜像表作为一个新表增加原数据信息中。
62.s23.在原表上创建iud触发器(即insert触发器、update触发器和delete触发器),所述原表新的行数据写操作在所述镜像表上回放,保持所述镜像表与所述原表的新数据同步。
63.步骤s2中,由于设计库表元数据更新操作,需要获取元数据互斥锁,表dml、ddl操作会阻塞,由于时间很短,用户几乎无感知。
64.一种实施例中,步骤s3包括以下子步骤:
65.s31.选定合适的主键或者唯一键作为拆分字段。优选的,可以指定一定的选择优先级,例如:主键》唯一键,数字类型》字符串类型,重复率低》重复率高等。
66.s32.根据所述拆分字段将数据拆分成n个区间,其中,n与指定的重分布并发数相同,n是正整数。
67.s33.n个线程同时进行重分布数据处理,其中,一个重分布线程对应一个数据区间。可操作的是,每个所述重分布线程包括以下步骤:
68.s331.开启事务。
69.s332.根据选定的拆分键扫描原表数据,每次扫描一个批次大小。例如,可在任务开始时指定,如:10000。
70.s333.对每行数据按照新分片方案路由插入到所述镜像表。
71.s334.提交事务。
72.s335.开始下一个批次的扫描,循环执行,直到区间末尾。
73.上述步骤中,当所有重分布线程执行结束后,即完成了整个重分布。
74.一种实施例中,步骤s4包括以下步骤:
75.s41.使用重分布阶段选定的拆分字段,把原表分成大区间。例如:50w行一个区间。
76.s42.计算区间内所有行数据crc32值(循环冗余校验码)之和sumcrc32。
77.s43.比较所述原表和所述镜像表的sumcrc32,确定一个区间在两边的数据是否一致;如果所有区间都一致,即默认两表数据一致;如果存在区间不一致,需要进一步对不一致区间进行拆分,比较所有子区间是否一致,循环拆分直到区间小于预设大小,并定位到具体的不一致行,其中,如果存在不一致区间,但在子区间或者行级比较中一致,仍视为一致,其中,如果定位到不一致的行,为了确定不是读到用户业务写入的中间状态,需要重复检测,若多次检测仍然不一致,视为两表(原表和镜像表)的数据不一致,则禁止存在数据不一致的情况进入到表切换,也即存在数据不一致的情况将不进入到表切换,之后并更新元数据信息流程,等待人工处理。关于人工处理,例如:人工修复后,可继续执行或者直接取消重
试。
78.一种实施例中,触发器方式来同步增量数据,可以改成binlog同步方式。具体的,对数据重分布阶段的所有原表的binlog在镜像表上回放,直到复制追平,再做表切换。
79.一种实施例中,步骤s5包括以下子步骤:
80.s51.获取表的元数据锁。其中,需要先请求表的元数据锁,中间需要等待分布式数据库中变更表当前ddl、dml结束,阻塞表上新的ddl、、dml请求,直到旧的ddl、dml都运行完,即获取到元数据锁。
81.s52.之后开始进行表切换,并删除所述镜像表的触发器。
82.s53.切换完成后,释放所述元数据锁。
83.步骤s5中,由于只是表级别锁,且切换时间在秒级别,还可以控制表切换在业务低谷期进行,对业务基本没有影响。
84.本发明的分片方案在线变更的方法,运维人员可以通过一条ddl或者一条运维命令,就能在不停机,不影响业务的情况下更改表的分片方案,能大大降低运维成本和分布式数据使用效率,缩短分片变更窗口。
85.实施例二:
86.请参考图2,基于同一发明构思,本技术的一种实施例提供了一种分片方案在线变更的装置,包括:
87.1.元数据处理模块201
88.元数据处理模块201用于处理表元数据信息、元数据锁和元数据持久化等相关操作。其中,元数据处理模块201会使用新分片方案创建原表的镜像表,并创建所述镜像表到原表的触发器,具体的操作步骤参见实施例一。关于元数据处理模块201,可以如下理解,一种实施例中,其包括处理模块,所述处理模块用于使用新分片方案创建原表的镜像表,并创建所述镜像表到原表的触发器;具体的操作步骤参见实施例一。
89.2.数据重分布模块202
90.数据重分布模块202用于复制原表的现有数据到镜像表,也即复制旧数据以进行迁移处理。换句话说,数据重分布模块202可重新分布所述原表的现有数据到镜像表。
91.3.数据一致性检测模块203
92.在数据重分布后,数据一致性检测模块203主要负责检测新表数据一致性,确保数据一致性,避免出现数据丢失的错误情况出现。
93.4.业务切换模块204(图中未表示)
94.业务切换模块204用于切换业务到所述镜像表,并更新原数据信息,以使用新分片方案。
95.一种实施例中,分片方案在线变更的装置还包括预处理模块200,其用于预检测及参数校验。其中,所述预检测包括检测是否符合在线变更的前置条件,所述参数校验包括检测输入参数的合理性。可选的,前置条件包括外键、触发器和唯一索引中的一种或多种。可选的,输入参数包括数据重分布并发数和暂停窗口中的一种或两种。
96.其中,本分片方案在线变更的装置之各个模块与上述实施例中分片方案在线变更的方法之各个步骤存在一一对应的关系,不再赘述。
97.实施例三:
98.基于同一发明构思,本技术的一种实施例提供了一种电子设备,包括:存储器和处理器;其中,所述存储器用于存储一条或多条计算机指令;所述一条或多条计算机指令被所述处理器执行上述各个实施例中任意一项所述分片方案在线变更的方法。
99.其中,上述的一条或多条计算机指令即可形成为程序。
100.实施例四:
101.基于同一发明构思,本技术的一种实施例提供了一种可读存储介质,所述可读存储介质上存储有计算机指令;其中,所述计算机指令被处理器执行时,实现上述各个实施例中任意一项所述分片方案在线变更的方法。
102.其中,上述的一条或多条计算机指令即可形成为程序。
103.上述程序可以运行在处理器中,或者也可以存储在存储器中(或称为计算机可读介质),计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(pram)、静态随机存取存储器(sram)、动态随机存取存储器(dram)、其他类型的随机存取存储器(ram)、只读存储器(rom)、电可擦除可编程只读存储器(eeprom)、快闪记忆体或其他内存技术、只读光盘只读存储器(cd-rom)、数字多功能光盘(dvd)或其他光学存储、磁盒式磁带,磁带磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括暂存电脑可读媒体(transitory media),如调制的数据信号和载波。
104.这些计算机程序也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤,对应与不同的步骤可以通过不同的模块来实现。
105.以上对本发明的具体实施例进行了详细描述,但其只是作为范例,本发明并不限制于以上描述的具体实施例。对于本领域技术人员而言,任何对本发明进行的等同修改和替代也都在本发明的范畴之中。因此,在不脱离本发明的精神和范围下所作的均等变换和修改,都应涵盖在本发明的范围内。

技术特征:
1.一种分片方案在线变更的方法,其特征在于,包括:使用新分片方案创建原表的镜像表,并创建所述镜像表到原表的触发器,其中,所述新分片方案是不同于原数据库采用的分片方案;重新分布所述原表的现有数据到镜像表;切换业务到所述镜像表,并更新原数据信息。2.根据权利要求1所述的一种分片方案在线变更的方法,其特征在于,所述使用新分片方案创建原表的镜像表,并创建所述镜像表到原表的触发器包括:使用所述新分片方案创建与原表相同的镜像表;所述镜像表作为一个新表增加原数据信息中;在所述原表上创建所述触发器,所述原表新的行数据写操作在镜像表上回放,保持所述镜像表与所述原表的新数据同步。3.根据权利要求1所述的一种分片方案在线变更的方法,其特征在于,所述重新分布所述原表的现有数据到镜像表包括:选定合适的主键或者唯一键作为拆分字段;根据所述拆分字段将数据拆分成n个区间,其中,n与指定的重分布并发数相同,n是正整数;n个线程同时进行重分布数据处理,其中,一个重分布线程对应一个数据区间。4.根据权利要求3所述的一种分片方案在线变更的方法,其特征在于,每个所述重分布线程包括:开启事务;根据选定的拆分键扫描原表数据,每次扫描一个批次大小;对每行数据按照新分片方案路由插入到所述镜像表;提交事务;开始下一个批次的扫描,循环执行,直到区间末尾。5.根据权利要求1所述的一种分片方案在线变更的方法,其特征在于,对数据重分布阶段的所有所述原表的binlog在镜像表上回放,直到复制追平。6.根据权利要求1所述的一种分片方案在线变更的方法,其特征在于,所述切换业务到所述镜像表,并更新原数据信息包括:获取表的元数据锁;开始表切换,并删除所述镜像表的触发器;切换完成后,释放所述元数据锁。7.根据权利要求1-6中任意一项所述的一种分片方案在线变更的方法,其特征在于,还包括预检测及参数校验;和/或,还包括在重分布完成后,进行数据一致性检测;其中,所述预检测及参数校验中,所述预检测包括检测是否符合在线变更的前置条件,所述参数校验包括检测输入参数的合理性;其中,所述数据一致性检测包括:使用重分布阶段选定的拆分字段,把原表分成大区间;计算区间内所有行数据crc32值之和sumcrc32;
比较所述原表和所述镜像表的sumcrc32,确定一个区间在两边的数据是否一致;如果所有区间都一致,即两表数据一致;如果存在区间不一致,进一步对不一致区间进行拆分,比较所有子区间是否一致,循环拆分直到区间小于预设大小,并定位到具体的不一致行,其中,如果存在不一致区间,但在子区间或者行级比较中一致,仍视为一致,其中,如果定位到不一致的行,重复检测,若多次检测仍然不一致,视为两表数据不一致,则禁止存在数据不一致的情况进入到表切换,并更新元数据信息流程,等待人工处理。8.一种分片方案在线变更的装置,其特征在于,包括:元数据处理模块,用于处理表元数据信息、元数据锁和元数据持久化;数据重分布模块,用于复制原表的现有数据到镜像表;和业务切换模块,用于切换业务到所述镜像表,并更新原数据信息,以使用新分片方案。9.一种电子设备,其特征在于,包括:存储器;和处理器;其中,所述存储器用于存储一条或多条计算机指令;所述一条或多条计算机指令被所述处理器执行以实现权利要求1至7中任意一项所述分片方案在线变更的方法。10.一种可读存储介质,其特征在于,所述可读存储介质上存储有计算机指令;其中,所述计算机指令被处理器执行时,实现权利要求1至7中任意一项所述分片方案在线变更的方法。

技术总结
本发明涉及计算机技术领域,公开了一种分片方案在线变更的方法、装置和电子设备。关于分片方案在线变更的方法:使用新分片方案创建原表的镜像表,并创建所述镜像表到原表的触发器;重新分布所述原表的现有数据到镜像表;切换业务到所述镜像表,并更新原数据信息。关于分片方案在线变更的装置:元数据处理模块用于处理表元数据信息、元数据锁和元数据持久化;数据重分布模块用于复制原表的现有数据到镜像表;业务切换模块用于切换业务到所述镜像表,并更新原数据信息,以使用新分片方案。本申请的技术方案,在不影响业务的情况下更改表的分片方案,能大大降低运维成本和分布式数据使用效率,缩短分片变更窗口,效果较佳。效果较佳。效果较佳。


技术研发人员:金官丁
受保护的技术使用者:上海热璞网络科技有限公司
技术研发日:2023.07.03
技术公布日:2023/10/7
版权声明

本文仅代表作者观点,不代表航空之家立场。
本文系作者授权航家号发表,未经原创作者书面授权,任何单位或个人不得引用、复制、转载、摘编、链接或以其他任何方式复制发表。任何单位或个人在获得书面授权使用航空之家内容时,须注明作者及来源 “航空之家”。如非法使用航空之家的部分或全部内容的,航空之家将依法追究其法律责任。(航空之家官方QQ:2926969996)

飞行汽车 https://www.autovtol.com/

分享:

扫一扫在手机阅读、分享本文

相关推荐