具体实施方式
为使本申请的目的、技术方案和优点更加清楚明白,下文中将结合附图对本申请的实施例进行详细说明。需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互任意组合。
在相同的生产环境下,离线重分布方式是先对整体数据进行迁移,然后再对迁移数据进行重新部署,虽然节省了对新增热点数据的处理时间,但需要中断指定表的现有业务;在线重分布方式允许在不中断业务处理的情况下,对整体数据进行迁移,然后再对迁移后的数据进行部署。但是,采用无论采用以上哪种重分布方式对数据进行迁移,都需要耗费大量的时间用以处理整体数据,导致数据的迁移效率低下;并且,还需要额外的存储资源以存储中间临时数据,使得存储资源造成不必要的浪费。
图1是本申请一实施例的数据迁移方法的流程示意图,该方法可应用于数据迁移装置。如图1所示,包括如下步骤。
步骤110,依据数据存储信息表中的全局事务标识值,确定增量迁移数据。
其中,全局事务标识(Global Transaction Identifiers,GTID)值用于指示业务处理的频率。例如,当某个业务被频繁执行时,该业务对应的全局事务标识值会随着业务的执行次数逐渐递增,当该业务对应的GTID值超过预设范围时,则表示该业务是热点业务。
在一些具体实现中,可通过如下方式实现步骤110:依据预设标识范围和数据存储信息表中的全局事务标识值,确定活跃数据列表,其中,活跃数据列表包括活跃数据;依据增量数据迁移决策对活跃数据进行筛选,确定增量迁移数据,其中,增量数据迁移决策是依据业务的动态处理需求确定的决策。
需要说明的是,其中的预设标识范围是可变的,在进行第一次增量数据迁移时,需要获取记录在当前分组数据库上GTID列表和GDIT最大值(即maxgtid),然后,取GTID列表中最小的GTID值(即min_gtid),作为最小追增值(即chase_min_gtid_1),则此时的预设标识范围是:大于或等于min_gtid,且,小于chase_min_gtid_1。在进行第二次增量数据迁移时,则将第一次增量数据迁移中的chase_min_gtid_1作为min_gtid,第二次增量数据迁移时的预设标识范围为大于或等于chase_min_gtid_1,且,小于chase_min_gtid_2。以此类推,在进行第i次增量数据迁移时,则采用最近一次(即第i-1次增量数据迁移)中的chase_min_gtid_i-1作为min_gtid,第i次增量数据迁移时的预设标识范围为大于或等于chase_min_gtid_i-1,且,小于chase_min_gtid_i,其中,i可以是大于1的整数。然后,将数据存储信息表中的GTID值在对应预设标识范围内的所有数据作为活跃数据列表中的活跃数据。
通过增量数据迁移决策对活跃数据进行筛选,确定增量迁移数据,使得能够将业务对应的增量迁移数据进行快速的迁移,以满足业务的动态处理需求,缩短在线数据迁移的处理时间,优化分布式数据库的系统性能。
步骤120,对增量迁移数据进行迁移。
在一些具体实现中,可通过如下方式实现步骤120:获取增量迁移数据在数据存储信息表中的源存储地址和主键键值,其中,源存储地址包括分区地址和分组地址;依据源存储地址和主键键值,将增量迁移数据由源存储地址迁移至目标存储地址。
例如,依据GDIT值,查找数据存储信息表,可获得增量迁移数据对应的主键键值和该增量迁移数据的源存储地址(即源分区地址和源分组地址),例如,当GDIT值为325时,查找数据存储信息表,可查找到增量迁移数据对应的主键键值为8,进而获得主键键值为8的增量迁移数据存储在第一分组中的第3分区中,则该增量迁移数据的源存储地址为第一分组中的第3分区。然后将第一分组中的第3分区中的该增量迁移数据取出,并发送该增量迁移数据至目标存储地址。或者,根据取出的增量迁移数据生成迁移文件,并把该迁移文件发送至目标存储地址。
在本实施例中,通过依据数据存储信息表中的全局事务标识值,确定增量迁移数据,由于全局事务标识值用于指示业务处理的频率,若数据库在对某个业务数据的处理越来越频繁,则该全局事务标识值就会增加的越快,使得该全局事务标识值对应的数据成为增量迁移数据。由于业务需求,需要对该增量迁移数据进行迁移,使得能够快速的将数据迁移至所需要的设备中,减少数据迁移的时间,提升对数据的迁移效率,提升用户体验度。
本申请实施例提供了另一种可能的实现方式,其中,在步骤110之前,还包括:依据数据存储信息表中的主键键值,将数据存储空间划分为N个分组,每个分组设有唯一的分组地址,将分组划分为M个分区,每个分区设有唯一的分区地址,其中,分区上的所有数据只存放在分区对应的一个分组上,M为大于或等于1的整数,N为大于或等于1的整数;依据主键键值、全局事务标识值、分区地址和分组地址,生成数据存储信息表。
需要说明的是,其中的主键键值是分布式数据库能够查找到存储数据的唯一标识,一般可设定为大于或等于1,且,小于或等于分布式数据库可存储的数据条数的最大值,该主键键值可作为索引值,来对分布式数据库中的数据进行查找。例如,将数据存储空间划分为4个分组,即分组g1、分组g2、分组g3和分组g4,每个分组都设有唯一的分组地址。然后,在每个分组中,可划分不同个数的分区,例如,将分组g1划分为3个分区,即分区P1、分区P2和分区P3;将分组g2划分为4个分区,即分区P4、分区P5、分区P6和分区P7;将分组g3划分为5个分区,即分区P8、分区P9、分区P10、分区P11和分区P12;将分组g4划分为6个分区,即分区P13、分区P14、分区P15、分区P16、分区P17和分区P18。每个分区设有唯一的分区地址,并且,分区上的所有数据只存放在该分区对应的一个分组上,例如,分区P1中的数据至存放在分组g1中,无法将该分区P1中的数据同时存放在两个不同的分组上。若分组g1和分组g2同时拥有分区P1中的数据,则会导致分区P1中的数据被截断,在对分区P1中的数据完成数据迁移时,会使得分区P1中的数据丢失。为了避免此现象的发生,只能将分区P1中的所有数据都存储在分组g1上,以保证数据的完整性。
本申请实施例提供了另一种可能的实现方式,其中,在步骤120之后,还包括:清空源存储地址中的数据。
在本实施例中,通过清空源存储地址中的数据,使得源存储地址能够为其他数据提供存储服务,以增加分布式数据库的存储空间,避免存储资源的浪费。
本申请实施例提供了另一种可能的实现方式,其中,在步骤120之后,还包括:依据目标存储地址,更新数据存储信息表。
例如,在数据迁移完成后,使用目标存储地址替换增量迁移数据的源存储地址,使得能够在下一次数据迁移时,快速的找到该增量迁移数据。
在本实施例中,通过更新数据存储信息表,使得能够为下一次数据迁移做准备,保证在进行下一次数据迁移时,能够快速的找到增量迁移数据,提升数据的处理效率,优化分布式数据库的系统性能。
本申请实施例提供了另一种可能的实现方式,其中,在步骤120之后,还包括:统计增量迁移数据的迁移时间;依据迁移时间和预设时间阈值,停止对增量迁移数据的迁移。
其中,迁移时间是数据迁移装置处理增量迁移数据的最大时间,预设时间阈值可以是1分钟、5分钟等时间长度,若迁移时间小于或等于5分钟时,则停止对增量迁移数据的迁移。以上对于预设时间阈值仅是举例说明,具体实现时可根据具体情况具体设定。其他未说明的预设时间阈值也在本申请的保护范围之内,在此不再赘述。
在本实施例中,通过统计增量迁移数据的迁移时间,可以确定增量迁移数据在迁移的过程中是否顺利,通过对比迁移时间和预设时间阈值,使得能够确定是否结束数据的迁移过程。保证增量迁移数据能够顺利的完成数据迁移,以满足业务的处理需求,使得能够缩短在线数据迁移的处理时间,优化分布式数据库的系统性能。
图2示出本申请又一实施例提供的数据迁移方法的流程示意图,该方法可应用于数据迁移装置。如图2所示,包括如下步骤。
步骤210,获取数据迁移策略。
其中,数据迁移策略是数据库管理员依据数据存储需求确定的策略。例如,当分布式数据库中的第一分区中的存储空间无法满足数据的存储需求,但还需要将新获得的数据存储在该第一分区中时,可以将第一分区中的一部分长期不用的数据迁移至其他分区中,从而生成数据迁移策略,以使得第一分区能够获得足够的存储空间,以存储新获得的数据。
步骤220,依据数据迁移策略,对待迁移数据进行全量迁移。
其中,待迁移数据包括第k个分区中的全部数据,k为大于或等于1,且,小于或等于M的整数。例如,待迁移数据是分布式数据库中的第一分区中的所有数据,将分布式数据库中的第一分区中的所有数据迁移至第二分区中,使得第一分区可以获得空闲的存储空间,以方便第一分区对其他急需处理的数据进行存储。
在一些具体实现中,可通过如下方式实现步骤220:依据数据迁移策略,确定待迁移数据对应的待迁移分区;将待迁移分区中的数据迁移至目标分区。
例如,数据迁移策略为数据合并策略,即需要把第一分区的数据和第二分区的数据进行合并,以生成新的数据。然后将待迁移分区(即第一分区和第二分区)中的数据迁移至目标分区(例如,第三分区)中。通过对数据进行全量迁移,使得只需要从源分组中迁移出指定的待迁移分区中的全部数据至目标分组中的目标分区中,而无需对其他未指定的数据进行数据迁移,提高了数据迁移的速度,节省数据迁移时间。
步骤230,依据数据存储信息表中的全局事务标识值,确定增量迁移数据。
步骤240,对增量迁移数据进行迁移。
需要说明的是,本实施例中的步骤230~步骤240,与上一实施例中的步骤110~步骤120相同,在此不再赘述。
在本实施例中,通过数据迁移策略对待迁移数据进行全量迁移,使得能够对指定分区中的数据进行迁移,无需跨分组,即可实现分区之间的数据迁移。依据数据存储信息表中的全局事务标识值,确定增量迁移数据,并对增量迁移数据进行迁移,保证了在业务动态处理的过程中,能够对增量迁移数据进行迁移,不影响业务的正常处理,保证业务处理的连续性,以缩短数据迁移的执行时间。并且,只需维护一张数据存储信息表,即可满足数据迁移的需求,降低了对硬件存储资源的要求,节约了用户成本,提高了产品竞争力。
在一些具体实现中,数据存储信息表中存储有模拟数据,采用本申请中的数据迁移方法对模拟数据进行处理,以及采用常规的数据迁移方法对模拟数据进行迁移,可获得不同的技术性能。
例如,通过如下方式来实现本申请中的数据迁移方法。依据主键键值,将数分布式数据库的存储空间格式化为128个不同范围的分区,分别为分区P1、分区P2、……、分区P128。并且,每个分区中可存储100万条数据。如表1所示,分区P1中的数据范围是[1,1000001),分区P2中的数据范围是[1000001,2000001),……,分区P127中的数据范围是[126000001,127000001),分区P128中的数据范围是[127000001,MAXVALUE),其中,MAXVALUE表示分布式数据库中的主键键值的最大值,可在数据库被创建时进行定义。
表1分区表
分区名称 |
划分范围 |
P1 |
[1,1000001) |
P2 |
[1000001,2000001) |
…… |
…… |
P127 |
[126000001,127000001) |
P128 |
[127000001,MAXVALUE) |
将以上128个分区分为3个分组,记为分组g1,分组g2和分组g3,每个分组拥有并管理数据存储信息表中的128个分区,并如表2所示,将有效数据存放在对应的分区中,例如,分区g1中的有效数据分区为分区P1~分区P10;分区g2中的有效数据分区为分区P11~分区P70;分区g3中的有效数据分区为分区P71~分区P128。数据库管理员通过对各个分区中的数据进行分析,依据数据存储需求制定数据迁移策略。
例如,如表3所示的合并迁移策略,即将分组g1中的待迁移分区P1~待迁移分区P10中的数据和分组g2中的待迁移分区P11~待迁移分区P70中的数据进行合并后,存放至分组g3中;或,如表4所示的拆分迁移策略,将分组g3中的待迁移分区P1~待迁移分区P10中的数据存放至分组g1中,将分组g3中的待迁移分区P11~待迁移分区P70中的数据存放至分组g2中。
在执行表3中的合并迁移策略对数据进行迁移后,统计数据的第一合并时间;在执行表4中的拆分迁移策略对数据进行迁移后,统计数据的第一拆分时间。
表2分组分区表
分区名称 |
有效数据分区 |
g1 |
P1~P10 |
g2 |
P11~P70 |
g3 |
P71~P128 |
表3合并转迁移策略
表4拆分迁移策略
然后,使用以上相同的数据,采用常规的数据迁移方法对分布式数据库中的数据进行迁移。例如,执行数据库语言:distributed by range(key)(g3 values less thanMAXVALUE),以实现表3中的数据合并,即将分组g1中的待迁移分区P1~待迁移分区P10中的数据和分组g2中的待迁移分区P11~待迁移分区P70中的数据进行合并,并统计使用该常规的数据合并方法的第二合并时间。
执行数据库语言:distributed by range(key)(g2 values less than(10000000),g1 values less than(70000000),g3 values less than MAXVALUE),以实现表4中的数据拆分,即将分组g3中的待迁移分区P1~待迁移分区P10中的数据存放至分组g1中,将分组g3中的待迁移分区P11~待迁移分区P70中的数据存放至分组g2中,并统计使用该常规的数据拆分方法的第二拆分时间。
如表5所示,将本申请中的数据迁移方法和常规的数据迁移方法的技术性能(例如,合并时间和拆分时间)进行对比可知,使用常规的数据迁移方法对数据进行拆分的第二拆分时间为3722秒,第二合并时间为1205秒;而使用本申请中的数据迁移方法对数据进行拆分的第一拆分时间为208秒,第一合并时间为238秒。第一拆分时间远小于第二拆分时间,并且第一合并时间也远小于第二合并时间,使得数据库的性能得到提升。
表5两种数据迁移方法的技术性能对比表
方案 |
合并时间(单位:秒) |
拆分时间(单位:秒) |
常规的数据迁移方法 |
1205 |
3722 |
本申请中的数据迁移方法 |
238 |
208 |
在本实施例中,通过使用本申请中的数据迁移方法对分布式数据库中的数据进行迁移,并统计获得第一拆分时间和第一合并时间,并使用常规的数据迁移方法对分布式数据库中的数据进行迁移,并统计获得第二拆分时间和第二合并时间。通过对比,使得能够直观的看到数据的处理时间得到大幅的降低,使得数据库的性能得到很大的提升,提升用户体验度。
下面结合附图,详细介绍根据本申请实施例的装置。图3示出本申请一实施例提供的数据迁移装置的结构示意图。如图3所示,数据迁移装置可以包括如下模块。
确定模块310,用于依据数据存储信息表中的全局事务标识值,确定增量迁移数据,其中,全局事务标识值是随着业务的处理单调递增的数值;迁移模块320,用于对增量迁移数据进行迁移。
在本实施例中,通过确定模块依据数据存储信息表中的全局事务标识值,确定增量迁移数据,由于全局事务标识值用于指示业务处理的频率,若数据库在对某个业务数据的处理越来越频繁,则该全局事务标识值就会增加的越快,使得该全局事务标识值对应的数据成为增量迁移数据。由于业务需求,需要使用迁移模块对该增量迁移数据进行迁移,使得能够快速的将数据迁移至所需要的设备中,减少数据迁移的时间,提升对数据的迁移效率,提升用户体验度。
值得一提的是,本实施例中所涉及到的各模块均为逻辑模块,在实际应用中,一个逻辑单元可以是一个物理单元,也可以是一个物理单元的一部分,还可以以多个物理单元的组合实现。此外,为了突出本申请的创新部分,本实施方式中并没有将与解决本申请所提出的技术问题关系不太密切的单元引入,但这并不表明本实施方式中不存在其它的单元。
图4示出本申请一实施例中的数据迁移系统的组成方框图。如图4所示,该数据迁移系统包括:应用单元410、控制单元420和业务处理单元430,其中,业务处理单元430包括N个分组,每个分组中都包括控制组件和数据处理组件,例如,分组1包括数据处理组件432-1和文件生成组件433-1,分组2包括数据处理组件432-2和文件生成组件433-2,……,分组N包括数据处理组件432-N和文件生成组件433-N。其中,N为大于或等于1的整数。
具体实现时,应用单元410可以使用元数据管理(Oracle Metadata Management,OMM)组件来实现,数据库管理员(Database Administrator,DBA)可通过OMM组件中的管理页面,依据数据存储需求制定数据迁移策略Rk,并将该数据迁移策略发送给控制单元420。该控制单元420可以使用元数据管理器(Metadata Server,MDS)来实现。MDS主要用于查询数据存储信息表中存放数据的各个分区地址和分组地址,然后对没有存储数据的空分区的分区地址进行过滤。接收并处理OMM组件发送的数据迁移策略Rk,并发送该数据迁移策略给业务处理单元430,同时,接收业务处理单元的反馈结果,再将该反馈结果转发给OMM组件,以使OMM组件更新数据迁移策略Rk。
业务处理单元430中的控制组件431用于接收MDS组件下发的决策,通过组播的方式转发给控制组件431管理的各个分组(例如,分组1、分组2、……、分组N等),并将各个分组的处理结果反馈给MDS组件。例如,分组1中的数据处理组件432-1在接收到控制组件431下发的增量数据迁移决策,首先依据该增量数据迁移决策,确定增量迁移数据,并对该增量迁移数据执行数据导出操作,然后将导出的增量迁移数据发送给分组1中的文件生成组件433-1,使得文件生成组件433-1能够依据导出的增量迁移数据,生成数据传输文件,并将该数据传输文件导入至目标存储地址,待导入操作完成后,反馈处理结果给控制组件431。
图5示出本申请实施例中的数据迁移系统的工作方法流程图。在不影响业务的情况下,首先需要处理数据存储信息表中的指定分区的数据;然后再对该指定分区中的某些活跃数据进行处理;最后,在处理完成时,更新数据存储信息表。
需要说明的是,业务处理单元430中是采用分布式数据库进行数据存储的,该分布式数据库是依据主键键值被划分为M个分区,每个分区设有唯一的分区地址,例如,分区P1、分区P2、……、PM;然后,将某几个分区划分为一个分组,例如,可划分为N个分组,每个分组设有唯一的分组地址,例如,分组g1、分组g2、……、分组gN;一个分区内的有效数据只存放在该分区对应的一个分组中。其中,N为大于或等于1的整数,M为大于或等于1的整数;然后将主键键值、全局事务标识值、各个分区地址和各个分组地址记录到数据存储信息表。
对数据进行迁移可包括三个阶段,如图5所示,包括如下步骤。
第一阶段:全量数据迁移,包括步骤501~步骤508。
步骤501,应用单元410将DBA依据数据存储需求制定的数据迁移策略,发送给控制单元420。
例如,DBA通过OMM组件中的管理页面,依据数据存储需求制定数据迁移策略Rk={Pk,gs,gd},即表示将数据存储信息表中的第k个分区Pk中的数据,从其源分组(sourcegroup,gs)迁移到目的分组(destination group,gd)。在管理页面中,只显示有效数据所在的分区标识和分组标识,而会过滤掉数据为空的分区标识或分组标识。
步骤502,控制单元420转发数据迁移策略Rk给业务处理单元430中的控制组件431。
需要说明的是,控制组件431在接收到数据迁移策略Rk后,首先会对数据迁移策略Rk进行解析,获取其中的信息,例如,待迁移数据所在的分区标识Pk,源分组gs和目的分组gd等。然后,再将解析后的信息,以组播的方式分发给各个分组,以使对应的分组中的数据处理组件能够对本分组中的数据进行迁移。
步骤503,业务处理单元430对待迁移数据进行处理,生成数据传输文件。
例如,业务处理单元430中的数据处理组件通过查询数据存储信息表,获得GTID列表和最大值(maxgtid),取GTID列表中的最小值,并将该最小值记录为最小满载ID(full_min_gtid)。数据处理组件依据full_min_gtid和GTID列表,获得导出待迁移数据。例如,可采用数据库中的筛选语句获得。然后,将该待迁移数据发送给文件生成组件,生成数据传输文件Ts.k。
步骤504,业务处理单元430将数据导出结果(即数据传输文件Ts.k)和full_min_gtid上报给控制单元420。
步骤505,控制单元420将数据导出结果上报给应用单元420。同时,执行步骤506。
步骤506,控制单元420下发数据导入决策给业务处理单元430。
步骤507,业务处理单元430中的控制组件在接收到数据导入决策后,以组播形式向gd转发该数据导入决策。gd在收到该数据导入决策后,对数据传输文件Ts.k进行解析,并将待迁移数据导入,然后,在导入完成时,向控制组件反馈数据导入结果。
步骤508,业务处理单元430中的控制组件向控制单元420反馈数据导入结果。至此,完成全量数据迁移。
第二阶段:增量数据迁移,即更新指定分区中的热点数据。包括步骤509~步骤521。
步骤509,控制单元420向业务处理单元430中的控制组件431下发增量数据迁移决策Hk={Pk,gs,gd,min_gtid}。
其中,min_gtid表示gs的GTID值,在进行第一次的增量数据迁移时,min_gtid等于full_min_gtid。
步骤510,业务处理单元430依据增量数据迁移决策Hk,对增量迁移数据进行迁移。
例如,控制组件431以组播的方式将增量数据迁移决策Hk发送给gs,gs接收到该增量数据迁移决策Hk后,记录当前分组数据库上数据存储信息表中的GTID列表和maxgtid,取GTID列表中最小的GTID值为最小追增值(即chase_min_gtid_i),其中,i可以是大于1的整数。然后,将Pk分区中GTID值大于或等于min_gtid,且,小于chase_min_gtid_i的数据作为增量迁移数据,并导出该增量迁移数据。例如,可采用数据库中的筛选语句获得。将该增量迁移数据保存至增量数据传输文件Tsql.k中。发送增量数据传输文件Tsql.k给gd,以使gd能够解析该增量数据传输文件Tsql.k,并导入增量迁移数据至gd本地数据库。gs向控制组件431反馈增量迁移数据的导出结果、导入结果和信息{gs,chase_min_gtid_i}。
步骤511,业务处理单元430向控制单元420转发增量迁移数据的导出结果、导入结果和信息{gs,chase_min_gtid_i}。
步骤512,控制单元420接收到业务处理单元430反馈的增量迁移数据的导出结果、导入结果和信息{gs,chase_min_gtid_i}后,将min_gtid更新为chase_min_gtid_i。然后,控制单元420依据业务的动态处理需求,确定是否需要再次进行增量数据的迁移,若需要重复执行步骤509~步骤511(例如,执行步骤513~步骤515)。图5中的步骤513步骤515与步骤509~步骤511的实施方法相同,在此不再赘述。
需要说明的是,对于增量数据的迁移,从第二次进行开始,在迁移的过程中,各分组都依据最近一次的chase_min_gtid_i导出对应增量迁移数据,直至不再需要进行增量数据的迁移。
步骤516,控制单元420向应用单元410上报增量迁移数据的迁移结果。
步骤517,控制单元420统计单次增量迁移数据的迁移时间,即各组件处理的最大时间Tuse,并将Tuse与预设时间阈值Tpre(例如,1分钟或15分钟等)进行对比,当Tuse小于或等于Tpre时,则进行最后一次的增量数据迁移,即执行步骤518~步骤520,
步骤518,控制单元420下发最后一次的增量数据迁移决策Hk={Pk,gs,gd,chase_min_gtid_n}给业务处理单元430。
步骤519,业务处理单元430依据最后一次的增量数据迁移决策Hk,对增量迁移数据进行迁移。
步骤520,业务处理单元430向控制单元420转发最后一次的增量迁移数据的导出结果、导入结果和信息{gs,chase_min_gtid_n}。然后,停止对增量迁移数据的迁移。
步骤521,控制单元420向应用单元410上报迁移完成消息,即已完成对增量迁移数据的迁移。
第三阶段:表定义切换过程,即清空源存储地址(包括分区地址和分组地址)中的数据。包括步骤522~步骤527。
步骤522,控制单元420下发清理决策Ck={Pk,gs}给业务处理单元430。
步骤523,业务处理单元430依据清理决策Ck,对源存储地址中的数据进行清理。
例如,业务处理单元430收到清理决策Ck后,以组播的形式将该转发给gs,gs依据该清理决策Ck将本地的数据存储信息表中的分区Pk上的数据进行清空处理,然后,gs向控制组件431反馈清理结果。
步骤524,业务处理单元430向控制单元420转发清理结果。
步骤525,控制单元420依据迁移后的目标存储地址(例如,gd的地址),更新数据存储信息表。
例如,将原先存储到分组gs中的Pk分区的数据,转发至新的分组gd,将更新后的数据存储信息表记为Dt1={Pk,gd}。
步骤526,控制单元420向应用单元410反馈清理结果,即将更新后的数据存储信息表Dt1={Pk,gd}发送给应用单元410。
步骤527,应用单元410接收并通过管理页面显示更新后的数据存储信息表Dt1={Pk,gd}。
在本实施例中,在不影响业务处理的情况下,通过全量数据迁移、增量数据迁移和表定义切换过程,使得能够对分布式数据中的变化的数据,或,增量数据进行迁移,以满足业务的处理需求,使得能够缩短在线数据迁移的处理时间,极大优化了分布式数据库的系统性能。同时,在数据迁移的过程中,只需要维护一张数据存储信息表即可,无需其他的中间临时表,避免存储空间的浪费。
图6示出本申请实施例中的数据迁移系统中对待迁移分区中的数据进行迁移的示意图。如图6所示,数据库管理员设定分类策略(R);数据库管理员将分类策略(R)下发至控制单元420,然后,控制单元420对该分类规则(R)进行解析,获得并将解析结果发送至业务处理单元430中。例如,分类策略(R)包括如下迁移规则:1)P5:g1 g5;2)P6:g2 g5;3)P7:g2g3;4)P12:g3 g5;5)P17-P18:g4 g5。其中,P5、P6、P7和P12,以及P17-P18都表示待迁移分区。
如图6所示,由于新建立了分组g5,可以为分布式数据库系统分担一些存储压力,故可根据分类规则(R)中的第一条规则,将第5个分区P5中的数据,由源分组g1迁移至目标分组g5上;根据分类规则(R)中的第2条规则,将第6个分区P6中的数据,由源分组g2迁移至目标分组g5上;根据分类规则(R)中的第3条规则,将第7个分区P7中的数据,由源分组g2迁移至目标分组g3上;根据分类规则(R)中的第4条规则,将第12个分区P12中的数据,由源分组g3迁移至目标分组g5上;根据分类规则(R)中的第5条规则,将第17个分区P17和第18个分区P18中的数据,由源分组g4迁移至目标分组g5上。
在本实施例中,通过将不同分区中的数据由源分组迁移至新建立的分组上,使得能够缓解源分组的存储压力,提升各个源分组的在线处理业务的能力,使得无需中断业务的处理,就能够自动对待迁移的数据进行迁移,加快数据的处理速度,提升分布式数据库的处理效率,提升用户体验度。
图7示出本申请实施例中的数据迁移系统中对增量迁移数据进行迁移的示意图。如图7所示,OMM组件将数据迁移策略发送给MDS组件,MDS组件在接收到数据迁移策略后,通过对该数据迁移策略的解析,获得增量数据迁移决策,即需要分别对分组g1、分组g2、分组g3和分组g4中的活跃数据列表中的活跃数据进行筛选,以获得增量迁移数据,并对该增量迁移数据进行迁移。然后,MDS组件将增量数据迁移决策分别发送至对应的分组g1、分组g2、分组g3和分组g4中。
需要说明的是,图7可以显示在OMM组件的管理页面中,以方便数据库管理员动态的获得各个分组的数据迁移情况。
如图7所示,四个分组中的最大GTID值均是308555713。分组g1中存储有GTID值为1001、1004、1002和1003等多条数据,其中,GTID值为1004的数据和GTID值为1003的数据是活跃数据,因此,分组g1的活跃数据列表包括GTID值为1004的数据和GTID值为1003的数据;并且,GTID值为1003是活跃数据列表中的最小值。因此,在获取分组g1中的增量迁移数据时,依据增量数据迁移决策,需要导出GTID值小于1003的数据对应的事务,即GTID值为1001的数据和GTID值为1002的数据。
而对于分组g2,由于该分组g2上存储的数据包括GTID值为1004、3001、2308和1003等多条数据。其中,GTID值为3001的数据、GTID值为2308的数据和GTID值为1003的数据是活跃数据,因此,分组g1的活跃数据列表包括GTID值为3001的数据、GTID值为2308的数据和GTID值为1003的数据。在获取分组g2中的增量迁移数据时,依据增量数据迁移决策(即需要导出GTID值小于1003的数据对应的事务),由于分组g2中的活跃数据列表中没有GTID值小于1003的数据,因此,从分组g2中获得的增量迁移数据为空,即分组g2中没有增量迁移数据可被迁移。
对于分组g3,由于该分组g3上存储的数据包括GTID值为8802、7045、2331和6665等多条数据。其中,GTID值为8802的数据、GTID值为7045的数据、GTID值为2331的数据、和GTID值为6665的数据是活跃数据,因此,分组g1的活跃数据列表包括GTID值为8802的数据、GTID值为7045的数据、GTID值为2331的数据、和GTID值为6665的数据。在获取分组g3中的增量迁移数据时,依据增量数据迁移决策(即需要导出GTID值小于2331的数据对应的事务),由于分组g2中的活跃数据列表中没有GTID值小于2331的数据,因此,从分组g3中获得的增量迁移数据为空,即分组g3中没有增量迁移数据可被迁移。
对于分组g4,由于该分组g4中没有存储数据,是一个空的分组,因此,该分组g4中也没有活跃数据,此时,取最大GTID值(即308555713)作为活跃数据的最小值,则依据增量数据迁移决策(即需要导出GTID值小于308555713的数据对应的事务),因此,从分组g4中获得的增量迁移数据为空,即分组g4中没有增量迁移数据可被迁移。
在本实施例中,通过依据增量数据迁移决策,并行的对不同分组中的活跃数据列表进行筛选,使得能够快速的对各个分组中的活跃数据进行处理,缩短了数据的处理时间,优化了分布式数据库的系统性能,提升了产品竞争力。并且,通过在OMM组件的管理页面中图形化的显示各个分组的数据存储情况,可以直观的查看到各个分组的数据迁移变化,简化了分布式数据库的系统复杂度,降低了运维成本。
需要明确的是,本申请并不局限于上文实施例中所描述并在图中示出的特定配置和处理。为了描述的方便和简洁,这里省略了对已知方法的详细描述,并且上述描述的系统、模块和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
图8示出能够实现根据本申请实施例的方法和装置的计算设备的示例性硬件架构的结构图。
如图8所示,计算设备800包括输入设备801、输入接口802、中央处理器803、存储器804、输出接口805、以及输出设备806。其中,输入接口802、中央处理器803、存储器804、以及输出接口805通过总线807相互连接,输入设备801和输出设备806分别通过输入接口802和输出接口805与总线807连接,进而与计算设备800的其他组件连接。
具体地,输入设备801接收来自外部的输入信息,并通过输入接口802将输入信息传送到中央处理器803;中央处理器803基于存储器804中存储的计算机可执行指令对输入信息进行处理以生成输出信息,将输出信息临时或者永久地存储在存储器804中,然后通过输出接口805将输出信息传送到输出设备806;输出设备806将输出信息输出到计算设备800的外部供用户使用。
在一个实施例中,图8所示的计算设备可以被实现为一种网络设备,该网络设备可以包括:存储器,被配置为存储程序;处理器,被配置为运行存储器中存储的程序,以执行上述实施例描述的数据迁移方法。
一般来说,本申请的多种实施例可以在硬件或专用电路、软件、逻辑或其任何组合中实现。例如,一些方面可以被实现在硬件中,而其它方面可以被实现在可以被控制器、微处理器或其它计算装置执行的固件或软件中,尽管本申请不限于此。
本申请的实施例可以通过移动装置的数据处理器执行计算机程序指令来实现,例如在处理器实体中,或者通过硬件,或者通过软件和硬件的组合。计算机程序指令可以是汇编指令、指令集架构(ISA)指令、机器指令、机器相关指令、微代码、固件指令、状态设置数据、或者以一种或多种编程语言的任意组合编写的源代码或目标代码。
本申请附图中的任何逻辑流程的框图可以表示程序步骤,或者可以表示相互连接的逻辑电路、模块和功能,或者可以表示程序步骤与逻辑电路、模块和功能的组合。计算机程序可以存储在存储器上。存储器可以具有任何适合于本地技术环境的类型并且可以使用任何适合的数据存储技术实现,例如但不限于只读存储器(ROM)、随机访问存储器(RAM)、光存储器装置和系统(数码多功能光碟DVD或CD光盘)等。计算机可读介质可以包括非瞬时性存储介质。数据处理器可以是任何适合于本地技术环境的类型,例如但不限于通用计算机、专用计算机、微处理器、数字信号处理器(DSP)、专用集成电路(ASIC)、可编程逻辑器件(FGPA)以及基于多核处理器架构的处理器。
通过示范性和非限制性的示例,上文已提供了对本申请的示范实施例的详细描述。但结合附图和权利要求来考虑,对以上实施例的多种修改和调整对本领域技术人员来说是显而易见的,但不偏离本申请的范围。因此,本申请的恰当范围将根据权利要求确定。