CN114416691A - 数据迁移方法、装置、电子设备及可读存储介质 - Google Patents
数据迁移方法、装置、电子设备及可读存储介质 Download PDFInfo
- Publication number
- CN114416691A CN114416691A CN202111613282.9A CN202111613282A CN114416691A CN 114416691 A CN114416691 A CN 114416691A CN 202111613282 A CN202111613282 A CN 202111613282A CN 114416691 A CN114416691 A CN 114416691A
- Authority
- CN
- China
- Prior art keywords
- data table
- data
- records
- migrated
- threads
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/21—Design, administration or maintenance of databases
- G06F16/214—Database migration support
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/22—Indexing; Data structures therefor; Storage structures
- G06F16/2282—Tablespace storage structures; Management thereof
Landscapes
- Engineering & Computer Science (AREA)
- Databases & Information Systems (AREA)
- Theoretical Computer Science (AREA)
- Data Mining & Analysis (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本申请提供了一种数据迁移方法、装置、电子设备及可读存储介质,涉及计算机技术领域。该方法包括:获得至少一个待迁移数据表中各待迁移数据表的数据表信息,其中,数据表信息包括占用空间大小及记录条数;基于均衡分配的方式,根据预设线程数量、各待迁移数据表的占用空间大小及记录条数,确定出多个导出文件块,其中,多个导出文件块的数量为预设线程数量的整数倍,每个导出文件块中的数据记录的条数为整数;通过并发的预设线程数量个线程,对多个导出文件块对应的数据记录进行迁移。如此,通过使用并发均衡处理策略,充分利用数据库的并发性能,可大幅提升数据迁移效率,减少大量迁移时间。
Description
技术领域
本申请涉及计算机技术领域,具体而言,涉及一种数据迁移方法、装置、电子设备及可读存储介质。
背景技术
随着系统运行时间越来越长,数据库的数据量日益庞大,当需要进行数据迁移时,耗费的时间很长。经测试一个容量在100G的数据库,即使在主流的高效数据库环境下,做一次单一迁移花费的时间往往也在10小时左右。在对服务器维护时间有着高度敏感限制的运行环境中,快速高效的迁移策略尤为重要。因此,如何快速迁移数据成为本领域技术人员亟需解决的技术问题。
发明内容
本申请实施例提供了一种数据迁移方法、装置、电子设备及可读存储介质,其能够提升数据迁移效率。
本申请的实施例可以这样实现:
第一方面,本申请实施例提供一种数据迁移方法,包括:
获得至少一个待迁移数据表中各待迁移数据表的数据表信息,其中,所述数据表信息包括占用空间大小及记录条数;
基于均衡分配的方式,根据预设线程数量、各待迁移数据表的占用空间大小及记录条数,确定出多个导出文件块,其中,所述多个导出文件块的数量为所述预设线程数量的整数倍,每个所述导出文件块中的数据记录的条数为整数;
通过并发的所述预设线程数量个线程,对所述多个导出文件块对应的数据记录进行迁移。
第二方面,本申请实施例提供一种数据迁移装置,包括:
信息获得模块,用于获得至少一个待迁移数据表中各待迁移数据表的数据表信息,其中,所述数据表信息包括占用空间大小及记录条数;
处理模块,用于基于均衡分配的方式,根据预设线程数量、各待迁移数据表的占用空间大小及记录条数,确定出多个导出文件块,其中,所述多个导出文件块的数量为所述预设线程数量的整数倍,每个所述导出文件块中的数据记录的条数为整数;
迁移模块,用于通过并发的所述预设线程数量个线程,对所述多个导出文件块对应的数据记录进行迁移。
第三方面,本申请实施例提供一种电子设备,包括处理器和存储器,所述存储器存储有能够被所述处理器执行的机器可执行指令,所述处理器可执行所述机器可执行指令以实现前述实施方式中任意一项所述的数据迁移方法。
第四方面,本申请实施例提供一种可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现如前述实施方式中任意一项所述的数据迁移方法。
本申请实施例提供的数据迁移方法、装置、电子设备及可读存储介质,基于均衡分配的方式,根据预设线程数量、各待迁移数据表的占用空间大小及记录条数,将上述待迁移数据表中的数据记录分为多个导出文件块,导出文件块的数量为预设线程数量的整数倍,每个导出文件块中的数据记录的条数为整数;然后通过并发的预设线程数量个线程,对该多个导出文件块各自对应的数据记录进行迁移。如此,可均衡、自动化地确定出每个导出文件块对应的数据记录,无需人工操作,进而利用线程对该多个导出文件块进行并发迁移,从而通过利用数据库的并发性能提升数据迁移效率,可节省大量迁移时间。
附图说明
为了更清楚地说明本申请实施例的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,应当理解,以下附图仅示出了本申请的某些实施例,因此不应被看作是对范围的限定,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他相关的附图。
图1为本申请实施例提供的电子设备的方框示意图;
图2为本申请实施例提供的数据迁移方法的流程示意图;
图3为图2中步骤S120包括的子步骤的流程示意图;
图4为图3中子步骤S121包括的子步骤的流程示意图;
图5为本申请实施例提供的数据迁移示意图;
图6为本申请实施例提供的数据迁移装置的方框示意图。
图标:100-电子设备;110-存储器;120-处理器;130-通信单元;200-数据迁移装置;210-信息获得模块;220-处理模块;230-迁移模块。
具体实施方式
为使本申请实施例的目的、技术方案和优点更加清楚,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本申请一部分实施例,而不是全部的实施例。通常在此处附图中描述和示出的本申请实施例的组件可以以各种不同的配置来布置和设计。
因此,以下对在附图中提供的本申请的实施例的详细描述并非旨在限制要求保护的本申请的范围,而是仅仅表示本申请的选定实施例。基于本申请的实施例,本领域技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本申请保护的范围。
需要说明的是,术语“第一”和“第二”等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
现有的数据迁移方案,包括以下两种。第一种:利用硬件对源数据库做镜像,利用镜像数据库进行中继从而迁移数据库;第二种:将单一数据库的迁移文件拆分成小块数据进行迁移。
利用镜像数据库进行迁移,成本耗费过高,并且随着数据库容量成倍增长,迁移成本也会随之日益增长。
将单一数据库迁移文件分块迁移,需要人为手动干预文件块大小,例如,人为手动地将某几个数据表作为一个块,再手动将另外几个数据表作为一个块等。并且,在数据库动态增长时,依然是人为根据先前的导出情况,手动将数据表分到几个块中,不能做到自动化处理。比如,在进行一次导出时,工作人员会结合上次各个块的导出时长情况以及人为估计出的数据库在上次导出到本次导出这段时间内的增长情况,再次手动将需要导出的数据表分配到几个块中。
针对该情况,本申请实施例提供了一种数据迁移方法、装置、电子设备及可读存储介质,能够灵活自适应地将需要迁移的数据表中的数据记录均衡地拆分到多个导出文件中,并通过并发的多个线程对该导出文件块进行数据迁移,如此无需人为干预文件块大小,同时可以利用多线程对基于均衡分配方式确定出的多个导出文件块进行迁移,可提高数据迁移速度,节省迁移时间,并且节省大量硬件迁移成本。
下面结合附图,对本申请的一些实施方式作详细说明。在不冲突的情况下,下述的实施例及实施例中的特征可以相互组合。
请参照图1,图1为本申请实施例提供的电子设备100的方框示意图。所述电子设备100可以是,但不限于,电脑、服务器等。所述电子设备100可以包括存储器110、处理器120及通信单元130。所述存储器110、处理器120以及通信单元130各元件相互之间直接或间接地电性连接,以实现数据的传输或交互。例如,这些元件相互之间可通过一条或多条通讯总线或信号线实现电性连接。
其中,存储器110用于存储程序或者数据。所述存储器110可以是,但不限于,随机存取存储器(Random Access Memory,RAM),只读存储器(Read Only Memory,ROM),可编程只读存储器(Programmable Read-Only Memory,PROM),可擦除只读存储器(ErasableProgrammable Read-Only Memory,EPROM),电可擦除只读存储器(Electric ErasableProgrammable Read-Only Memory,EEPROM)等。
处理器120用于读/写存储器110中存储的数据或程序,并执行相应地功能。比如,存储器110中存储有数据迁移装置200,所述数据迁移装置200包括至少一个可以软件或固件(firmware)的形式存储于所述存储器110中的软件功能模块。所述处理器120通过运行存储在存储器110内的软件程序以及模块,如本申请实施例中的数据迁移装置200,从而执行各种功能应用以及数据处理,即实现本申请实施例中的数据迁移方法。
通信单元130用于通过网络建立所述电子设备100与其它通信终端之间的通信连接,并用于通过所述网络收发数据。
应当理解的是,图1所示的结构仅为电子设备100的结构示意图,所述电子设备100还可包括比图1中所示更多或者更少的组件,或者具有与图1所示不同的配置。图1中所示的各组件可以采用硬件、软件或其组合实现。
请参照图2,图2为本申请实施例提供的数据迁移方法的流程示意图。所述方法可以应用于上述电子设备100。下面对数据迁移方法的具体流程进行详细阐述。该方法可以包括步骤S110~步骤S130。
步骤S110,获得至少一个待迁移数据表中各待迁移数据表的数据表信息。
在本实施例中,待迁移数据表为需要进行迁移的数据表,也即数据迁移针对的对象。可以通过接收输入操作确定待迁移数据表,也可以根据特定规则确定出待迁移数据表,还可以通过其他方式确定待迁移数据表,在此不进行具体限定。
所述待迁移数据表的数量可以为至少一个,具体可以由实际情况确定。在确定出待迁移数据表的情况下,可获得各待迁移数据表的数据表信息。一个待迁移数据表的数据表信息可以包括数据表名、占用空间大小及记录条数等。其中,数据表信息中的占用空大小,表示所对应的数据表被存储时占用的空间大小;数据表信息中的记录条数,表示所对应的数据表中一共包括的数据记录的条数。
步骤S120,基于均衡分配的方式,根据预设线程数量、各待迁移数据表的占用空间大小及记录条数,确定出多个导出文件块。
在确定出待迁移数据表并获得各待迁移数据表的数据表信息的情况下,可基于均衡分配的方式,根据预设线程数量、各待迁移数据表的占用空间大小及记录条数,将确定出的待迁移数据表中所包括的数据记录,均衡地分配到多个导出文件块中。其中,确定出的多个导出文件块的数量为所述预设线程数量的整数倍,如此便于使用所述预设线程数量的并发线程进行数据迁移,提高数据迁移效率。每个所述导出文件块中的数据记录的条数为整数,便于保证数据记录的完整性。
其中,所述预设线程数量可以是根据数据要迁移至的目标数据库允许并发的最大线程数量进行设定的。所述预设线程数量可以小于或等于目标数据库允许并发的最大线程数量。所述预设线程数量可以大于等于2。所述预设线程数量可以是人为配置的。
步骤S130,通过并发的所述预设线程数量个线程,对所述多个导出文件块对应的数据记录进行迁移。
在自动化确定出多个导出文件块的情况下,可利用目标数据库的并发的所述预设线程数量个线程,对所述多个导出文件块对应的数据记录进行迁移。
本申请实施例是基于均衡分配的方式,根据预设线程数量、各待迁移数据表的占用空间大小及记录条数,自动化地确定出多个导出文件块,进而利用并发的多线程对该多个导出文件块进行数据迁移,由此可以减少人工干预的时间,同时避免由于人工干预时设置的各个导出文件块的大小相差较大导致的导出时间长的情况。本申请实施例还可以灵活自适应数据库增长,无需在数据库增长时人为结合历史导出情况及预估的数据库增长情况来人工干预文件块大小。
可选地,在本实施例中,在确定出待迁移数据表的情况下,可以获得该待迁移数据表的数据表名,然后基于各待迁移数据表的数据表名,从待迁移数据表所在的元数据库中,获得各待迁移数据表的占用空间大小及记录条数等。如此,可获得各待迁移数据表的数据表信息。
作为一种可能的实现方式,可以将待迁移数据表的数据表名存入TableNameList,然后对该TableNameList进行遍历,从源数据库中检索并得到每个待迁移数据表的占用空间大小、记录条数等,以得到每个待迁移数据表的数据表信息。
在获得各待迁移数据表的数据表信息的情况下,可以通过图3所示方式确定出多个导出文件块。所述多个导出文件块中包括第一文件块和/或第二文件块。请参照图3,图3为图2中步骤S120包括的子步骤的流程示意图。在本实施例中,步骤S120可以包括子步骤S121~子步骤S123。
子步骤S121,确定出所述至少一个待迁移数据表中的第一数据表和/或第二数据表。
在本实施例中,可以将确定出的待迁移数据表分为第一数据表及第二数据表。其中,每个所述第一数据表的占用空间大小大于每个所述第二数据表的占用空间大小,所述至少一个待迁移数据表中除所述第一数据表之外的待迁移数据表为所述第二数据表。可以理解的是,确定出的待迁移数据表中可以包括第一数据表及第二数据表,也可能仅包括第一数据表或者第二数据表,由使用的划分策略及待迁移数据表的实际情况确定。
可选地,作为一种可能的实现方式,可以通过图4所示方式确定出第一数据表。请参照图4,图4为图3中子步骤S121包括的子步骤的流程示意图。在本方式中,子步骤S121可以包括子步骤S1211~子步骤S1213。
子步骤S1211,获得所述至少一个待迁移数据表的总占用空间大小。
子步骤S1212,根据所述总占用空间大小和所述预设线程数量,计算得到平均值。
子步骤S1213,将各个待迁移数据表的占用空间大小与所述平均值进行比较,并将占用空间大小大于所述平均值的待迁移数据表作为所述第一数据表。
在本方式中,可以根据各待迁移数据表的占用空间大小,计算得到所述至少一个待迁移数据表的总占用空间大小。然后,利用该总占用空间大小除以所述预设线程数量,得到一个平均值。接着,依次将一个待迁移数据表的占用空间大小与该平均值进行比较,若该待迁移数据表的占用空间大小大于该平均值,则可以将该待迁移数据表作为第一数据表;若该待迁移数据表的占用空间大小不大于该平均值,则不将该待迁移数据作为第一数据表,而是将该待迁移数据表作为第二数据表。如此,可以结合本次需要迁移的数据表的实际情况,确定出第一数据表及第二数据表。
子步骤S122,基于均衡分配的方式,根据所述预设线程数量及各所述第一数据表的记录条数,确定出多个第一文件块。
在本实施例中,可以依次针对每个第一数据表,根据该第一数据表的记录条数,将该第一数据表中的数据记录平均分配到所述预设线程数量个第一文件块中。也即,对确定出的第一数据表进行遍历,在遍历至一个第一数据表时,将该第一数据表的记录条数除以所述预设线程数量,从而计算出该第一数据表在每个第一文件块中的记录数量,进而将相应数量的数据记录分配到相应的第一文件块中。如此,可以将一个占用空间多的第一数据表分配到多个第一文件块中,后续可以使用多线程迁移一个第一数据表,从而提高第一数据表的迁移效率。
子步骤S123,基于均衡分配的方式,根据所述预设线程数量、各所述第二数据表的占用空间大小和记录条数,确定出多个第二文件块。
在本实施例中,所述数据表信息还可以包括单条记录占用空间大小。可以根据所述预设线程数量、各所述第二数据表的占用空间大小和记录条数,依次确定出一个第二文件块。也即,是基于确定出的第二数据表,先将部分数据划分至一个第二文件块,即可确定出一个第二文件块;再将剩下的一部分数据划分至另外一个第二文件块,即可确定出第二个第二文件块,依次类似,确定出多个第二文件块。
作为一种可能的实现方式,为实现均衡分配,可以基于各第二数据表的占用空间大小进行求和计算,然后将得到的计算结果除以所述预设线程数据,并将得到的结果作为第二文件块容量。
可依次针对每个第二数据表,将该第二数据表的占用空间大小与当前第二文件块的剩余空间大小进行比较。也即,对确定出的第二数据表进行遍历,在遍历至某个第二数据表时,将该第二数据表的占用空间大小与当前第二文件块的剩余空间大小进行比较。其中,当前第二文件块为按照1-N的顺序,目前分配数据记录时使用的第二文件块。比如,在对首个第二数据表进行分配时,当前第二文件块为第二文件块1;在对非首个第二数据表进行分配时,当前第二文件块可能为第二文件块1,也有可能为第二文件块2。
当前第二文件块的剩余空间大小是根据所述第二文件块容量及当前第二文件块已存储的数据记录的条数及对应的单条记录占用空间大小计算得到。比如,在当前第二文件块中已经被分配了数据记录的情况下,可以获得当前第二文件块中已有的数据记录所在的数据表的数据表名,然后结合该数据表名得到当前第二文件块中已有的数据记录对应的单条记录占用空间大小;之后,根据每种数据记录的单条记录占用空间大小及以已存储的数据记录的条数,计算得到当前第二文件块的已占用空间大小;最后,根据当前第二文件块的已占用空间大小及第二文件块容量,计算得到当前第二文件块的剩余空间大小。
在该第二数据表的占用空间大小不大于当前第二文件块的剩余空间大小的情况下,可将该第二数据表中的数据记录分配到当前第二文件块中。
在该第二数据表的占用空间大小大于当前第二文件块的剩余空间大小的情况下,可以根据该第二数据表的单条记录占用空间大小及所述剩余空间大小,计算得到可分配条数;将该第二数据表中所述可分配条数的数据记录分配到当前第二文件块中。在将该第二数据表中的可分配条数的数据记录分配到当前第二文件块之后,在该第二数据表中包括还未分配的数据记录时,切换到下一个第二文件块,并重复上述分配处理操作,将该第二数据表中还未分配的数据记录分配到下一个第二文件块中。
如此,便于在后续有问题的情况下,再导出第二数据表。
在本实施例中,在所述多个导出文件块包括第一文件块及第二文件块的情况下,可同时通过各线程迁移该线程对应的第一文件块及第二文件块。其中,在迁移过程,通过所述预设线程数量个线程并发迁移各自对应的第一文件块以实现对一个所述第一数据表的并发迁移。所述第一文件块用于导出为大容量的第一数据表,所述第二文件块用于导出为小容量的第二数据表。
可选地,所述预设线程数量为目标数据库允许并发的最大线程数量。如此,可充分利用目标数据库的并发性能,大幅提升数据迁移效率。
可选地,上述第一文件块、第二文件块中包括的可以是将具体哪些数据记录导出的导出命令。预设线程数量个线程通过执行该导出命令,从而将相应的数据记录迁移到目标数据库中。
下面结合图5,对上述数据迁移方法进行举例说明。
首先,将要迁移的数据表的数据表名存入TableNameList。TableNameList中包括的是待迁移数据表的数据表名。
配置目标数据库允许并发的最大线程数ThreadN(即为上述的预设线程数量),该值用于后续确定迁移数据导出文件的分块数。
自适应数据处理模块遍历TableNameList,当遍历至一个数据表名时,从源数据库中通过检索得到该数据表名对应的table的占用空间大小、记录个数(即记录条数)等,并将该信息存入TableVolumeList。还可以获得每个待迁移数据表的单条记录占用空间大小,并将其保存到TableVolumeList中。还可以根据各待迁移数据表的占用空间大小,计算得到迁移数据总占用空间大小,并将其保存到TableVolumeList中。
如图5所示,可以获得每个待迁移数据表的数据表信息,并将每个待迁移数据表的数据表信息保存到TableVolumeList中。一个待迁移数据表的数据表信息中可以包括数据表名(TableName)、占用空间大小(TableSize)、记录条数(RecordCount)、单条记录占用空间大小(RecordSize)等。比如,待迁移数据表TableName1的数据表信息可以包括数据表名TableName1、待迁移数据表TableName1的占用空间大小TableSize、记录条数(RecordCount)、单条记录占用空间大小(RecordSize)等。总占用空间大小为图5中的TotalSize。
计算出平均值:DumpSize1=迁移数据总占用空间大小/ThreadN。
遍历TableVolumeList,找到单张表占用空间大小大于DumpSize1的待迁移数据表table,并将找到的待迁移数据表table的表名存入BigTableList,以及在TableVolumeList标记该迁移数据表是BigTable。比如,在TableVolumeList中,在找到的待迁移数据表的数据表信息中添加BigTableTag。
例如,假设table1的占用空间大小大于DumpSize1,则可以如图5所示,将table1的数据表名存入到BigTableList中,并在TableVolumeList中table1的数据表信息内添加BigTableTag。BigTableList中包括的是为BigTable的待迁移数据表的数据表名。也即,BigTableList中包括的第一数据表的数据表名。
接着,遍历BigTableList,从TableVolumeList中获得每张BigTable的记录条数,进而基于记录条数进行分块。当遍历至某个BigTable时,从TableVolumeList获得该BigTable的记录条数,然后将该记录条数除以ThreadN,计算出该表在每个导出文件块的记录数量;进而结合计算出的记录数量生成导出命令。该导出命令用于将该表数据分别存入独立的ThreadN个导出文件块中。
比如,针对待迁移数据表BigTable1,将BigTable1的记录条数除以ThreadN,得到的值即为每个导出文件块中所包括的BigTable1的数据记录的条数。然后生成将BigTable1中相应数量的数据记录划分到相应导出文件块的导出命令:BigTable1SqlFile1、BigTable1SqlFile2、…、BigTable1SqlFileN。BigTable1SqlFile1表示BigTable1的相应数量的数据记录存入导出文件块1。同理,针对待迁移数据表BigTable2,则可以生成如下导出命令:BigTable2SqlFile1、BigTable2SqlFile2、…、BigTable2SqlFileN。通过上述处理,即可完成对BigTable的文件分块,得到BigTable导出文件,BigTable导出文件中包括上述导出命令。
再次遍历TableVolumeList,获得其余表的占用空间大小,也即获得TableVolumeList未携带有BigTableTag的表的占用空间大小。根据获得的其余表的占用空间大小,进行求和计算,并将求和计算结果除以ThreadN,得到平均值DumpSize2。
按照导出文件块1-ThreadN的顺序,依次将一个导出文件块作为当前文件块。遍历TableVolumeList,当遍历到一个未携带有BigTableTag的表时,将该待迁移数据表的占用空间大小与当前文件块的剩余空间大小进行比较。其中,当前文件块的剩余空间大小根据DumpSize2及已占用空间大小计算得到,已占用空间大小根据当前文件块已存储的非BigTable的表的数据记录的条数及对应的单条记录占用空间大小计算得到。
在该待迁移数据表的占用空间大小不大于当前文件块的剩余空间大小时,则生成用于将该待迁移数据表的全部数据记录分配到当前文件块的导出命令。
若大于,则根据该待迁移数据表的单条记录占用空间大小及所述剩余空间大小计算得到可分配条数,并生成将该待迁移数据表中所述可分配条数的数据记录分配到当前文件块中的导出命令,及在该待迁移数据表中包括还未分配的数据记录时将下一个文件块切换为当前文件块,然后重复上述过程,以生成将该第二数据表中还未分配的数据记录分配到下一个文件块的导出命令。
也即,在大于时,统计出当前文件块的剩余空间大小,计算该剩余空间大小可以存入的该表的记录数量,生成该部分记录的导出命令,该导出命令用于将该部分记录分配到当前导出块,并切换到下一个导出文件块,生成其余记录分配到其中的导出命令。以此类推,直到TableVolumeList中所有非BigTable的数据表的导出命令完成。如此,可获得小容量Table导出文件,小容量Table导出文件中包括将非BigTable的数据表的数据记录分配到各文件块的生成命令:TableSqlFile1、TableSqlFile2、…、TableSqlFileN。TableSqlFile1表示将某些数据记录分配到文件块1中。
在目标数据库要导入数据时,即要将待迁移数据表中的数据迁移到目标数据库中时,自适应数据处理模块可以自动读取TableVolumeList和BigTableList,将各个均衡导出的分块文件(即上述小容量Table导出文件及BigTable导出文件),交付给目标数据库的所有线程,使得目标数据库的所有线程并发高效地将待迁移数据表的数据记录导入到目标数据库中。
如图5所示,DBThread1基于BigTable1SqlFile1、…、BigTableNSqlFile1、TableSqlFile1,将BigTable1、…、BigTableN及小容量表的相应的数据记录导入到目标数据库中。如此,多线程同时执行一个大容量表的导入,可以提高大容量表的迁移效率。
在本实施例中,根据待迁移数据表的占用空间大小,将待迁移数据表分为大容量表及小容量表,进而采用不同的策略生成小容量导出文件TableSqlFile及大容量导出文件BigTableSqlFile,以便提高大容量表的导出效率。并且,在基于待迁移数据表生成导出文件时,是根据目标数据库的最大线程数量自动均衡分配文件块的容量及文件块所对应的数据表的数据记录,无需人为干预。最后,将导出文件交付给目标数据库全部线程,使目标数据库的全部线程同步执行导入,最大性能、均衡、并发导入大批量迁移数据。通过上述并发均衡处理策略,充分利用了目标数据库的并发性能,大幅提升了数据迁移效率,节约了大量迁移时间。经线上正式数据实际测试,时间效率可以提升60%左右,并且为数据迁移业务节约了大量硬件迁移成本,带来了潜在的经济效益。
为了执行上述实施例及各个可能的方式中的相应步骤,下面给出一种数据迁移装置200的实现方式,可选地,该数据迁移装置200可以采用上述图1所示的电子设备100的器件结构。进一步地,请参照图6,图6为本申请实施例提供的数据迁移装置200的方框示意图。需要说明的是,本实施例所提供的数据迁移装置200,其基本原理及产生的技术效果和上述实施例相同,为简要描述,本实施例部分未提及之处,可参考上述的实施例中相应内容。数据迁移装置200可以包括:信息获得模块210、处理模块220及迁移模块230。
所述信息获得模块210,用于获得至少一个待迁移数据表中各待迁移数据表的数据表信息。其中,所述数据表信息包括占用空间大小及记录条数。
所述处理模块220,基于均衡分配的方式,根据预设线程数量、各待迁移数据表的占用空间大小及记录条数,确定出多个导出文件块。其中,所述多个导出文件块的数量为所述预设线程数量的整数倍,每个所述导出文件块中的数据记录的条数为整数。
所述迁移模块230,通过并发的所述预设线程数量个线程,对所述多个导出文件块对应的数据记录进行迁移。
可选地,在本实施例中,所述多个导出文件块中包括第一文件块和/或第二文件块,所述处理模块220具体用于:确定出所述至少一个待迁移数据表中的第一数据表和/或第二数据表,其中,每个所述第一数据表的占用空间大小大于每个所述第二数据表的占用空间大小,所述至少一个待迁移数据表中除所述第一数据表之外的待迁移数据表为所述第二数据表;基于均衡分配的方式,根据所述预设线程数量及各所述第一数据表的记录条数,确定出多个第一文件块;基于均衡分配的方式,根据所述预设线程数量、各所述第二数据表的占用空间大小和记录条数,确定出多个第二文件块。
可选地,在本实施例中,所述处理模块220具体用于:依次针对每个第一数据表,根据该第一数据表的记录条数,将该第一数据表中的数据记录平均分配到所述预设线程数量个第一文件块中。
可选地,在本实施例中,所述数据表信息还包括单条记录占用空间大小,所述多个第二文件块的数量为所述预设线程数量,所述处理模块220具体用于:根据所述预设线程数量及各所述第二数据表的占用空间大小,计算得到第二文件块容量;依次针对每个所述第二数据表,在该第二数据表的占用空间大小不大于当前第二文件块的剩余空间大小的情况下,将该第二数据表中的数据记录分配到当前第二文件块中,其中,当前第二文件块的剩余空间大小是根据所述第二文件块容量及当前第二文件块已存储的数据记录的条数及对应的单条记录占用空间大小计算得到;在该第二数据表的占用空间大小大于当前第二文件块的剩余空间大小的情况下,根据该第二数据表的单条记录占用空间大小及所述剩余空间大小计算得到可分配条数,并将该第二数据表中所述可分配条数的数据记录分配到当前第二文件块中,及在该第二数据表中包括还未分配的数据记录时切换到下一个第二文件块,以将该第二数据表中还未分配的数据记录分配到下一个第二文件块中。
可选地,在本实施例中,所述处理模块220具体用于:获得所述至少一个待迁移数据表的总占用空间大小;根据所述总占用空间大小和所述预设线程数量,计算得到平均值;将各个待迁移数据表的占用空间大小与所述平均值进行比较,并将占用空间大小大于所述平均值的待迁移数据表作为所述第一数据表。
可选地,在本实施例中,所述多个导出文件块中包括第一文件块及第二文件块,所述迁移模块230具体用于:同时通过各线程迁移该线程对应的第一文件块及第二文件块,其中,在迁移过程,通过所述预设线程数量个线程并发迁移各自对应的第一文件块以实现对一个所述第一数据表的并发迁移。
可选地,在本实施例中,所述预设线程数量为目标数据库允许并发的最大线程数量。
可选地,上述模块可以软件或固件(Firmware)的形式存储于图1所示的存储器110中或固化于电子设备100的操作系统(Operating System,OS)中,并可由图1中的处理器120执行。同时,执行上述模块所需的数据、程序的代码等可以存储在存储器110中。
本申请实施例还提供一种可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现所述的数据迁移方法。
综上所述,本申请实施例提供一种数据迁移方法、装置、电子设备及可读存储介质,基于均衡分配的方式,根据预设线程数量、各待迁移数据表的占用空间大小及记录条数,将上述待迁移数据表中的数据记录分为多个导出文件块,导出文件块的数量为预设线程数量的整数倍,每个导出文件块中的数据记录的条数为整数;然后通过并发的预设线程数量个线程,对该多个导出文件块各自对应的数据记录进行迁移。如此,可均衡、自动化地确定出每个导出文件块对应的数据记录,无需人工操作,进而利用线程对该多个导出文件块进行并发迁移,从而通过利用数据库的并发性能提升数据迁移效率,可节省大量迁移时间。
在本申请所提供的几个实施例中,应该理解到,所揭露的装置和方法,也可以通过其它的方式实现。以上所描述的装置实施例仅仅是示意性的,例如,附图中的流程图和框图显示了根据本申请的多个实施例的装置、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或代码的一部分,所述模块、程序段或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现方式中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或动作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
另外,在本申请各个实施例中的各功能模块可以集成在一起形成一个独立的部分,也可以是各个模块单独存在,也可以两个或两个以上模块集成形成一个独立的部分。
所述功能如果以软件功能模块的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述仅为本申请的可选实施例而已,并不用于限制本申请,对于本领域的技术人员来说,本申请可以有各种更改和变化。凡在本申请的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本申请的保护范围之内。
Claims (10)
1.一种数据迁移方法,其特征在于,包括:
获得至少一个待迁移数据表中各待迁移数据表的数据表信息,其中,所述数据表信息包括占用空间大小及记录条数;
基于均衡分配的方式,根据预设线程数量、各待迁移数据表的占用空间大小及记录条数,确定出多个导出文件块,其中,所述多个导出文件块的数量为所述预设线程数量的整数倍,每个所述导出文件块中的数据记录的条数为整数;
通过并发的所述预设线程数量个线程,对所述多个导出文件块对应的数据记录进行迁移。
2.根据权利要求1所述的方法,其特征在于,所述多个导出文件块中包括第一文件块和/或第二文件块,所述基于均衡分配的方式,根据预设线程数量、各待迁移数据表的占用空间大小及记录条数,确定出多个导出文件块,包括:
确定出所述至少一个待迁移数据表中的第一数据表和/或第二数据表,其中,每个所述第一数据表的占用空间大小大于每个所述第二数据表的占用空间大小,所述至少一个待迁移数据表中除所述第一数据表之外的待迁移数据表为所述第二数据表;
基于均衡分配的方式,根据所述预设线程数量及各所述第一数据表的记录条数,确定出多个第一文件块;
基于均衡分配的方式,根据所述预设线程数量、各所述第二数据表的占用空间大小和记录条数,确定出多个第二文件块。
3.根据权利要求2所述的方法,其特征在于,所述基于均衡分配的方式,根据所述预设线程数量及各所述第一数据表的记录条数,确定出多个第一文件块,包括:
依次针对每个第一数据表,根据该第一数据表的记录条数,将该第一数据表中的数据记录平均分配到所述预设线程数量个第一文件块中。
4.根据权利要求2所述的方法,其特征在于,所述数据表信息还包括单条记录占用空间大小,所述多个第二文件块的数量为所述预设线程数量,所述基于均衡分配的方式,根据所述预设线程数量、各所述第二数据表的占用空间大小和记录条数,确定出多个第二文件块,包括:
根据所述预设线程数量及各所述第二数据表的占用空间大小,计算得到第二文件块容量;
依次针对每个所述第二数据表,在该第二数据表的占用空间大小不大于当前第二文件块的剩余空间大小的情况下,将该第二数据表中的数据记录分配到当前第二文件块中,其中,当前第二文件块的剩余空间大小是根据所述第二文件块容量及当前第二文件块已存储的数据记录的条数及对应的单条记录占用空间大小计算得到;
在该第二数据表的占用空间大小大于当前第二文件块的剩余空间大小的情况下,根据该第二数据表的单条记录占用空间大小及所述剩余空间大小计算得到可分配条数,并将该第二数据表中所述可分配条数的数据记录分配到当前第二文件块中,及在该第二数据表中包括还未分配的数据记录时切换到下一个第二文件块,以将该第二数据表中还未分配的数据记录分配到下一个第二文件块中。
5.根据权利要求2所述的方法,其特征在于,所述确定出所述至少一个待迁移数据表中的第一数据表,包括:
获得所述至少一个待迁移数据表的总占用空间大小;
根据所述总占用空间大小和所述预设线程数量,计算得到平均值;
将各个待迁移数据表的占用空间大小与所述平均值进行比较,并将占用空间大小大于所述平均值的待迁移数据表作为所述第一数据表。
6.根据权利要求2-5中任意一项所述的方法,其特征在于,所述多个导出文件块中包括第一文件块及第二文件块,所述通过并发的所述预设线程数量个线程,对所述多个导出文件块对应的数据记录进行迁移,包括:
同时通过各线程迁移该线程对应的第一文件块及第二文件块,其中,在迁移过程,通过所述预设线程数量个线程并发迁移各自对应的第一文件块以实现对一个所述第一数据表的并发迁移。
7.根据权利要求1-5中任意一项所述的方法,其特征在于,所述预设线程数量为目标数据库允许并发的最大线程数量。
8.一种数据迁移装置,其特征在于,包括:
信息获得模块,用于获得至少一个待迁移数据表中各待迁移数据表的数据表信息,其中,所述数据表信息包括占用空间大小及记录条数;
处理模块,用于基于均衡分配的方式,根据预设线程数量、各待迁移数据表的占用空间大小及记录条数,确定出多个导出文件块,其中,所述多个导出文件块的数量为所述预设线程数量的整数倍,每个所述导出文件块中的数据记录的条数为整数;
迁移模块,用于通过并发的所述预设线程数量个线程,对所述多个导出文件块对应的数据记录进行迁移。
9.一种电子设备,其特征在于,包括处理器和存储器,所述存储器存储有能够被所述处理器执行的机器可执行指令,所述处理器可执行所述机器可执行指令以实现权利要求1-7中任意一项所述的数据迁移方法。
10.一种可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现如权利要求1-7中任意一项所述的数据迁移方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111613282.9A CN114416691A (zh) | 2021-12-27 | 2021-12-27 | 数据迁移方法、装置、电子设备及可读存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111613282.9A CN114416691A (zh) | 2021-12-27 | 2021-12-27 | 数据迁移方法、装置、电子设备及可读存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN114416691A true CN114416691A (zh) | 2022-04-29 |
Family
ID=81269093
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202111613282.9A Pending CN114416691A (zh) | 2021-12-27 | 2021-12-27 | 数据迁移方法、装置、电子设备及可读存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114416691A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116737088A (zh) * | 2023-08-15 | 2023-09-12 | 中移(苏州)软件技术有限公司 | 一种对象迁移方法、装置、电子设备及存储介质 |
-
2021
- 2021-12-27 CN CN202111613282.9A patent/CN114416691A/zh active Pending
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116737088A (zh) * | 2023-08-15 | 2023-09-12 | 中移(苏州)软件技术有限公司 | 一种对象迁移方法、装置、电子设备及存储介质 |
CN116737088B (zh) * | 2023-08-15 | 2023-11-03 | 中移(苏州)软件技术有限公司 | 一种对象迁移方法、装置、电子设备及存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US6526478B1 (en) | Raid LUN creation using proportional disk mapping | |
CN108228672B (zh) | 一种元数据迁移方法、装置、系统及设备 | |
US8429514B1 (en) | Dynamic load balancing of distributed parity in a RAID array | |
US7971025B2 (en) | Method and apparatus for chunk allocation in a thin provisioning storage system | |
US8850152B2 (en) | Method of data migration and information storage system | |
JP4391982B2 (ja) | 階層ストレージ・サブシステム内のデータを管理するための方法、システム、およびコンピュータ・プログラム(コンテンションの低減および速度の増加を伴うデータ・マイグレーション) | |
US8209515B2 (en) | Storage systems having differentiated storage pools | |
EP2766803B1 (en) | A method and system for consolidating a plurality of heterogeneous storage systems in a data center | |
WO2011045831A1 (en) | Storage apparatus and its control method | |
US20100125715A1 (en) | Storage System and Operation Method Thereof | |
US9606735B2 (en) | Storage management apparatus, and performance adjusting method | |
US10254993B2 (en) | Selecting first data sets in a first storage group to swap with second data sets in a second storage group | |
US20130054924A1 (en) | Preemptively allocating extents to a data set | |
US20130166614A1 (en) | Computer system, file management method, and storage medium | |
Douglis et al. | Content-aware load balancing for distributed backup | |
US11048678B2 (en) | Bulk-load for B-trees | |
US9460003B2 (en) | Using an alias volume name for a volume to allocate space to a data set | |
US20160139815A1 (en) | Just-in-time remote data storage allocation | |
CA2469624A1 (en) | Managing storage resources attached to a data network | |
CN111782135A (zh) | 数据存储方法、系统、数据节点和计算机可读存储介质 | |
IE980559A1 (en) | Systen and Method for Utilizing a RAM Disk | |
CN114416691A (zh) | 数据迁移方法、装置、电子设备及可读存储介质 | |
CN107948229B (zh) | 分布式存储的方法、装置及系统 | |
US8261038B2 (en) | Method and system for allocating storage space | |
CN106951338B (zh) | 一种基于GlusterFS的高容错分布式存储方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |