CN111143331B - 数据迁移方法、装置及计算机存储介质 - Google Patents
数据迁移方法、装置及计算机存储介质 Download PDFInfo
- Publication number
- CN111143331B CN111143331B CN201911392923.5A CN201911392923A CN111143331B CN 111143331 B CN111143331 B CN 111143331B CN 201911392923 A CN201911392923 A CN 201911392923A CN 111143331 B CN111143331 B CN 111143331B
- Authority
- CN
- China
- Prior art keywords
- data
- migration
- target
- read
- migrated
- 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.)
- Active
Links
- 230000005012 migration Effects 0.000 title claims abstract description 243
- 238000013508 migration Methods 0.000 title claims abstract description 243
- 238000000034 method Methods 0.000 title claims abstract description 74
- 230000008569 process Effects 0.000 claims abstract description 37
- 230000015654 memory Effects 0.000 claims description 33
- 238000010586 diagram Methods 0.000 description 6
- 238000004590 computer program Methods 0.000 description 3
- 230000006870 function Effects 0.000 description 3
- 230000009286 beneficial effect Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 230000002459 sustained effect Effects 0.000 description 1
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/27—Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
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)
- Computing Systems (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本申请公开了一种数据迁移方法、装置及计算机存储介质,属于数据处理领域。所述方法包括:启动M个迁移线程,根据M个迁移线程,对待迁移数据库中的待迁移数据按用户标识进行分组,得到M个数据组,再通过M个迁移线程,分别对M个数据组进行迁移,以将M个数据组迁移至目标数据库中。本申请不仅可以提高数据迁移效率,而且,在数据迁移过程中,还可以将一个用户的所有数据划分到同一个数据组中,保证每个用户的数据被同一个迁移线程进行处理,避免了一个用户的数据可能被不同迁移线程进行处理,保证了迁移数据的完整性的,减少了数据迁移过程中的数据损失。
Description
技术领域
本申请涉及数据处理领域,特别涉及一种数据迁移方法、装置及计算机存储介质。
背景技术
目前,许多用户或企业通常将数据存储在数据库。但是,在数据库使用过程中,当数据库的存储结构无法满足业务需求时,也就需要将数据库中的数据迁移到能够满足业务需求的目标数据库中,在此过程中,也就涉及对大量数据进行迁移的问题。
相关技术中,通常是将待迁移数据库的旧存量表中的数据迁移到目标数据库的新存量表中,而且,旧存量表中可能存储有多个用户的数据,且一个用户可能对应有多条数据。在进行数据迁移时,可以按照旧存量表中的序列标识依次读取旧存量表中的数据,并将依次读取的数据迁移至目标数据库。
由于一个用户可能对应多条数据,因此在按照序列标识顺序迁移数据时,对于每个用户来说,可能会造成用户数据的遗漏或者数据断层,导致数据迁移过程中的数据损失,进而导致数据迁移不完整。
发明内容
本申请实施例提供了一种数据迁移方法、装置及计算机存储介质,可以减少数据迁移过程中的数据损失。所述技术方案如下:
第一方面,提供了一种数据迁移方法,所述方法包括:
启动M个迁移线程,每个迁移线程用于将待迁移数据库中存储的数据迁移至目标数据库中,所述M为正整数;
根据所述M个迁移线程,对所述待迁移数据库中的待迁移数据按照用户标识进行分组,得到M个数据组,每个数据组包括至少一个用户标识所对应的所有数据,所述M个数据组与所述M个迁移线程一一对应;
通过所述M个迁移线程,分别对所述M个数据组进行迁移,以将所述M个数据组迁移至所述目标数据库中。
可选地,所述M为当前能够支持的最大迁移线程数。
可选地,所述通过所述M个迁移线程,分别对所述M个数据组进行迁移,包括:
对于所述M个迁移线程中的目标迁移线程,通过所述目标迁移线程,按照预设条数依次从目标数据组中读取数据,将读取的数据迁移至所述目标数据库;
其中,所述目标迁移线程为所述M个迁移线程中的任一个,所述目标数据组为所述M个数据组中与所述目标迁移线程对应的数据组。
可选地,所述通过所述目标迁移线程,按照预设条数依次从目标数据组中读取数据之前,还包括:
确定所述待迁移数据的最大序列标识,序列标识用于指示所述待迁移数据在存量表中的排序,所述待迁移数据存储在所述存量表中;
所述通过所述目标迁移线程,按照预设条数依次从目标数据组中读取数据,将读取的数据迁移至所述目标数据库,包括:
对于依次从所述目标数据组中读取数据中的任一次读取过程,若通过所述目标迁移线程,按照所述预设条数从所述目标数据组中成功读取到数据,则将读取的数据迁移至所述目标数据库中;
若按照所述预设条数从所述目标数据组中未成功读取到数据,则确定已读取数据的最大序列标识,若已读取数据的最大序列标识大于或等于所述待迁移数据的最大序列标识,则停止进行数据迁移,若已读取数据的最大序列标识小于所述待迁移数据的最大序列标识,则继续按照所述预设条数从所述目标数据组中读取数据,将读取的数据迁移至所述目标数据库中。
可选地,所述方法还包括:
对于依次从所述目标数据组中读取数据中的任一次读取过程,在通过所述目标迁移线程,按照所述预设条数从所述目标数据组中读取数据的过程中,若待读取的数据中存在具有锁标志的数据,则对待读取的数据中具有锁标志之外的数据进行读取,并将具有锁标志的数据确定为未成功读取的数据。
可选地,所述通过所述目标迁移线程,按照预设条数依次从目标数据组中读取数据,将读取的数据迁移至所述目标数据库之后,还包括:
若所述目标数据组中还存在未成功读取的数据,则通过所述目标迁移线程,继续对未成功读取的数据进行读取,将读取的数据迁移至所述目标数据库中,直至所述目标数据组中的数据全部被成功读取为止。
第二方面,提供了一种数据迁移装置,所述装置包括:
启动模块,用于启动M个迁移线程,每个迁移线程用于将待迁移数据库中存储的数据迁移至目标数据库中,所述M为正整数;
分组模块,用于根据所述M个迁移线程,对所述待迁移数据库中的待迁移数据按照用户标识进行分组,得到M个数据组,每个数据组包括至少一个用户标识所对应的所有数据,所述M个数据组与所述M个迁移线程一一对应;
迁移模块,用于通过所述M个迁移线程,分别对所述M个数据组进行迁移,以将所述M个数据组迁移至所述目标数据库中。
可选地,所述M为当前能够支持的最大迁移线程数。
可选地,所述迁移模块,包括:
读取子模块,用于对于所述M个迁移线程中的目标迁移线程,通过所述目标迁移线程,按照预设条数依次从目标数据组中读取数据,将读取的数据迁移至所述目标数据库;
其中,所述目标迁移线程为所述M个迁移线程中的任一个,所述目标数据组为所述M个数据组中与所述目标迁移线程对应的数据组。
可选地,所述迁移模块,还包括:
确定子模块,用于确定所述待迁移数据的最大序列标识,序列标识用于指示所述待迁移数据在存量表中的排序,所述待迁移数据存储在所述存量表中;
所述读取子模块,还用于:
对于依次从所述目标数据组中读取数据中的任一次读取过程,若通过所述目标迁移线程,按照所述预设条数从所述目标数据组中成功读取到数据,则将读取的数据迁移至所述目标数据库中;
若按照所述预设条数从所述目标数据组中未成功读取到数据,则确定已读取数据的最大序列标识,若已读取数据的最大序列标识大于或等于所述待迁移数据的最大序列标识,则停止进行数据迁移,若已读取数据的最大序列标识小于所述待迁移数据的最大序列标识,则继续按照所述预设条数从所述目标数据组中读取数据,将读取的数据迁移至所述目标数据库中。
可选地,所述装置还包括:
确定模块,用于对于依次从所述目标数据组中读取数据中的任一次读取过程,在通过所述目标迁移线程,按照所述预设条数从所述目标数据组中读取数据的过程中,若待读取的数据中存在具有锁标志的数据,则对待读取的数据中具有锁标志之外的数据进行读取,并将具有锁标志的数据确定为未成功读取的数据。
可选地,所述迁移模块用于:
若所述目标数据组中还存在未成功读取的数据,则通过所述目标迁移线程,继续对未成功读取的数据进行读取,将读取的数据迁移至所述目标数据库中,直至所述目标数据组中的数据全部被成功读取为止。
第三方面,提供了一种数据迁移装置,所述数据迁移装置包括处理器和存储器,所述存储器中存储有至少一条指令,所述指令由所述处理器加载并执行以实现上述第一方面所述任一项方法的步骤。
第四方面,提供了一种计算机可读存储介质,其特征在于,所述存储介质中存储有至少一条指令,所述指令由处理器加载并执行以实现上述第一方面所述任一项方法的步骤。
第五方面,提供了一种计算机程序产品,当所述计算机程序产品被执行时,用于实现上述第一方面所述任一项方法的步骤。
本申请实施例提供的技术方案带来的有益效果至少包括:
本申请实施例中,通过启动M个迁移线程,根据M个迁移线程,对待迁移数据库中的待迁移数据按照用户标识进行分组,得到M个数据组,再通过M个迁移线程,分别对M个数据组进行迁移,不仅可以提高数据迁移效率,而且,在数据迁移过程中,还可以将一个用户的所有数据划分到同一个数据组中,保证每个用户的数据被同一个迁移线程进行处理,避免了一个用户的数据可能被不同迁移线程进行处理,保证了迁移数据的完整性,减少了数据迁移过程中的数据损失。
附图说明
为了更清楚地说明本申请实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本申请实施例提供的一种数据迁移***示意图;
图2是本申请实施例提供的一种数据迁移方法流程图;
图3是本申请实施例提供的一种数据迁移装置的结构框图;
图4是本申请实施例提供的一种数据迁移装置的结构示意图。
具体实施方式
为使本申请的目的、技术方案和优点更加清楚,下面将结合附图对本申请实施方式作进一步地详细描述。
在对本申请实施例进行详细地解释说明之前,先对本申请实施例的应用场景予以说明。
数据迁移指的是将一个数据库中的数据迁移至另一个数据库中。数据迁移可以是一次性完成的,即将数据库中的待迁移数据一次性全部迁移到新的数据库中。数据迁移也可以是分次完成的,即将数据库中的待迁移数据分多次迁移到新的数据库中。本申请实施例采用的是一次性迁移,相对于分次迁移而言,一次迁移的优势在于,可以将数据一次性完整迁移,避免了迁移之前的数据和迁移之后的数据不一致的情况发生。
其中,在将待迁移数据库的数据迁移到目标数据库之前,需要确定待迁移数据库存储数据的存量表,该存量表包括待迁移数据。该存量表可以由待迁移数据库的数据表合并而成,该数据表可以为一个,也可以为多个,每个数据表中记录有一条或多条数据。比如,可以根据业务需求人为选定相关业务的数据表,并将选定的数据表合并为存量表。
在实际业务中,待迁移数据库中的数据是随时间动态变化的,也即是随时存在用户更改存储数据的可能。因此,本申请中获取的存量表中对应的待迁移数据实质上是指:在开始执行本申请的数据迁移方法的时刻,存量表中需要迁移至目标数据库中的数据。需要说明的是,待迁移数据可以是存量表中的全量数据,也可以是存量表中根据业务迁移需求确定的部分数据,本申请对此不做限定。
此外,在本申请实施例中,可以采用多线程的方式对数据进行迁移,大幅提升全量数据的迁移效率。
接下来,对在对本申请实施例涉及的实施环境进行介绍。
请参见图1,图1是本申请实施例提供的一种数据迁移***100的示意图,该***100包括:待迁移数据库101、数据迁移装置102和目标数据库103。数据迁移装置102用于将存储在待迁移数据库101中的待迁移数据迁移至目标数据库103中。
其中,待迁移数据库101存储在第一存储设备中,目标数据库103存储在第二存储设备中,且第一存储设备和第二存储设备可以为不同的存储设备,也可以为相同的存储设备,本申请实施例对此不做限定。另外,数据迁移装置102可以为第一存储设备或第二存储设备,也可以为除第一存储设备和第二存储设备之外的其他设备,本申请实施例对此不做限定。示例的,数据迁移装置102可以为终端或服务器等,终端可以为手机、平板电脑或计算机等,本申请实施例对此不做限定。
接下来,对本申请实施例提供的数据迁移方法进行详细解释。请参考图2,图2是本申请实施例提供的一种数据迁移方法的流程图,该方法用于上述数据迁移***中的数据迁移装置。如图2所示,该方法包括:
步骤201:启动M个迁移线程,每个迁移线程用于将待迁移数据库中存储的数据迁移至目标数据库中,M为正整数。
本申请实施例中,在进行数据迁移时,可以启动M个迁移线程,以通过这M个迁移线程将待迁移数据库中存储的数据迁移至目标数据库中。
其中,M可以为1,也可以为大于1的整数。当M为大于1的整数时,本申请实施例可以采用多线程进行数据迁移,从而可以提高数据迁移效率。
其中,M可以为预先设置数值,比如可以由用户预先设置得到,也可以为当前能够支持的最大迁移线程数。
作为一个示例,数据迁移装置可以预先设置用于进行数据迁移的M个迁移线程,在需要进行数据迁移时,可以直接启动这M个迁移线程来进行数据迁移。
作为另一个示例,在需要进行数据迁移时,数据迁移装置可以确定当前能够支持的最大迁移线程数M,然后启动M个迁移线程,以通过这M个迁移线程来进行数据迁移。
此外,迁移线程数M还可以由其他方法确定。例如,可以根据数据迁移装置所能承受的线程并发数,确定可以启动的迁移线程数M。其中,可启动的迁移线程数M小于或等于数据迁移装置所能承受的最大线程并发数。又例如,可以根据数据迁移装置的承载量来确定迁移线程数M,或者,根据以往的数据迁移历史中人为总结出的经验值,确定可以启动的迁移线程数M。
步骤202:根据M个迁移线程,对待迁移数据库中的待迁移数据按照用户标识进行分组,得到M个数据组,每个数据组包括至少一个用户标识所对应的所有数据,M个数据组与M个迁移线程一一对应。
需要说明的是,待迁移数据库中的数据通常以列表的形式进行存储。比如,该待迁移数据库中具有存量表,该存量表用于存储待迁移数据库中的数据,而且,存量表中的数据通常按照存储时间顺序依次排列。
另外,存量表中通常存储有多个用户的数据,存量表中的每条数据对应有一个用户标识,标识该数据为该用户标识所指示的用户的数据。该用户标识可以是用户头像、用户昵称或者用户编号等。示例的,存量表中的每条数据可以包括数据本体,以及数据本体对应的用户标识、序列标识、存储时间、数据类型、以及在数据库中的存储位置等数据信息。其中,序列标识用于指示数据在存量表中的排序,示例的,每条数据的序列标识可以为每条数据的表头中的序号。
作为一个示例,如下表1所示,该存量表包括张三、李四和王五这三个用户的10条数据,10条数据按照存储时间的顺序排列在存量表中。
表1
需要说明的是,本申请实施例中,待迁移数据可以为存量表中的全部数据,也可以为存量表中的部分数据。待迁移数据可以由数据迁移装置默认设置,也可以由用户根据实际需要进行设置,本申请实施例对此不做限定。
在一些实施例中,在进行数据迁移之前,可以先从待迁移数据库中确定待迁移数据。作为一个示例,可以根据业务拓展需求,从待迁移数据库中确定和业务相关的数据作为待迁移数据。或者,根据待待迁移数据库的存储量确定某一时间节点之后的数据作为待迁移数据。或者,根据目标数据库的存储量,从待迁移数据库中确定待迁移数据。或者,根据用户等级或用户分类等因素从待迁移数据库中筛选部分数据作为待迁移数据。本申请中所述的确定待迁移数据的方法包括但不限于上述所示的确定方法。
本申请示例中,在进行数据迁移之前,可以先根据M个迁移线程,对待迁移数据库中的待迁移数据按照用户标识进行分组,以将同一用户标识对应的所有数据划分到同一个数据组中,得到M个数据组。
在一种可能实现方式中,可以先根据M个迁移线程,将所有用户标识划分为M个用户标识组,再根据M个用户标识组对应的数据,确定M个数据组。也即是,每个数据组包括至少一个用户标识对应的用户数据。
作为一个示例,若迁移线程M=5,存量表中存在50个用户标识,300条数据时,将50个用户标识分为5用户组,每个用户组对应10个用户标识,再将300条数据按照用户标识分到不同的数据组,得到5个数据组,采用确定的5个迁移线程对这5个数据组中的数据进行迁移。
在另一种可能的实现方式中,根据M个迁移线程将所有数据进行分组,得到M个数据组,再根据每条数据对应的用户标识确定每个数据组包括的至少一个用户标识,当同一个用户标识出现在两个不同的数据组时,根据用户标识对这两个数据组的数据进行交换调整,使得调整后每个用户标识对应的数据仅存在一个数据组中。
作为一个示例,若迁移线程M=5,存量表中存在50个用户标识,300条数据,则可以将这300条数据分为5个数据组,每个数据组包括60条数据。然后根据用户标识对这5个数据组中的数据进行调整,若存在两个数据组存在相同用户标识时则对数据组中的数据进行交换,使得调整后每个用户标识对应的数据仅存在一个数据组中。
步骤203:通过M个迁移线程,分别对M个数据组进行迁移,以将M个数据组迁移至目标数据库中。
需要说明的是,数据库中的数据是分条存储的,存储一个数据则生成一条数据,在对该条数据进行删除操作后,该条数据将显示为空,但数据记录还存在。也即是,在存量表中该数据对应的序列标识依旧保留,但该数据显示为空。
其中,该M个迁移线程可以并行执行,通过并行执行的M个迁移线程来分别对M个数据组进行迁移,可以极大地提高数据迁移效率。而且,由于每个用户的全部数据被划分到同一个数据组中,因此在通过M个迁移线程,分别对M个数据组进行迁移的过程中,可以保证一个用户的全部数据不会被多个迁移线程进行处理,如此可以避免多个线程迁移同一用户的数据导致的数据遗漏,减小了数据迁移过程中的数据损失。
在一种可能的实现方式中,对于M个迁移线程中的目标迁移线程,可以通过目标迁移线程,按照预设条数依次从目标数据组中读取数据,将读取的数据迁移至目标数据库。其中,目标迁移线程为M个迁移线程中的任一个,目标数据组为M个数据组中与目标迁移线程对应的数据组。
也即是,这M个迁移线程中的每个迁移线程,均可以按照预设条数依次从目标数据组中读取数据,并将依次读取的数据迁移至目标数据库。
其中,该预设条数为预先设置每次进行数据读取的数据读取量,即迁移线程可以按照预设条数从目标数据组中依次进行多次数据读取操作,每次读取预设条数的数据。在进行数据迁移之前,可以预先设定迁移线程的数据读取量,即预设条数,然后按照该预设条数从对应的数据组中依次读取数据,直至将该数据组的所有数据读取完毕为止。
其中,预设条数可以自行定义,比如,预设条数可以为3000条,5000条等。示例性地,当预设条数为5000条时,则先执行第一次读取操作,第一次从目标数据组中读取1~5000条数据,并将成功读取到的数据迁移到目标数据库,然后执行第二次读取操作,第二次读取5001~10000条数据,并将成功读取到的数据迁移到目标数据库,以此类推,直到将所有待迁移数据都迁移至目标数据库。
在一个实施例中,对于依次从目标数据组中读取数据中的任一次读取过程,若通过目标迁移线程,按照预设条数从目标数据组中成功读取到数据,则将读取的数据迁移至目标数据库中。
需要说明的是,由于存量表中可能存在数据断层的现象,因此在通过目标迁移线程,按照预设条数依次从目标数据组中读取数据,将读取的数据迁移至目标数据库的过程,可能存在读取数据为空的现象。为了避免迁移线程误认为数据已经读取结束而停止迁移,导致数据迁移不完整的情况发生,在通过目标迁移线程,按照预设条数依次从目标数据组中读取数据之前,还可以先确定待迁移数据的最大序列标识,然后将已读取数据的最大序列标识与待迁移数据的最大序列标识进行比较,根据比较结果来确定是否停止数据迁移。其中,序列标识用于指示待迁移数据在存量表中的排序,待迁移数据存储在存量表中。
作为一个示例,对于依次从目标数据组中读取数据中的任一次读取过程,若通过目标迁移线程,按照预设条数从目标数据组中未成功读取到数据时,则确定已读取数据的最大序列标识,并将已读取数据的最大序列标识与待迁移数据的最大序列标识进行比较。若已读取数据的最大序列标识大于或等于待迁移数据的最大序列标识,则停止进行数据迁移,若已读取数据的最大序列标识小于待迁移数据的最大序列标识,则继续按照预设条数从目标数据组中读取数据,将读取的数据迁移至目标数据库中。
此外,在数据库中,为了避免同一个数据被多个用户更改,造成数据丢失等情况发生,当检测到用户对数据的处理操作时,可以对用户处理的数据添加数据锁,添加数据锁后的数据具有锁标志。其中,锁标志用于指示对应数据正在被处理,其他用户和数据迁移装置无法读取,也即是,数据锁可以保证数据在具有锁标志的情况下只被一个用户读取或更改,在该数据锁被释放之前,其他用户和数据迁移装置无法获取该数据。由于数据锁的存在,在数据的读取过程中,若某一数据正在发生变化,也即是该数据被某一用户添加了数据锁的情况下,迁移线程无法获取该数据,需要等待,直到该数据锁被释放时才可以获取该数据。
因此对于依次从目标数据组中读取数据中的任一次读取过程,在通过目标迁移线程,按照预设条数从目标数据组中读取数据的过程中,若待读取的数据中存在具有锁标志的数据,则对待读取的数据中具有锁标志之外的数据进行读取,并将具有锁标志的数据确定为未成功读取的数据。
在对待读取的数据中具有锁标志之外的数据进行读取后,若目标数据组中还存在未成功读取的数据,则再通过目标迁移线程,继续对未成功读取的数据进行读取,将读取的数据迁移至目标数据库中,直至目标数据组中的数据全部被成功读取为止。
本申请实施例中,通过启动M个迁移线程,根据M个迁移线程,对待迁移数据库中的待迁移数据按照用户标识进行分组,得到M个数据组,再通过M个迁移线程,分别对M个数据组进行迁移,不仅可以提高数据迁移效率,而且,在数据迁移过程中,还可以将一个用户的所有数据划分到同一个数据组中,保证每个用户的数据被同一个迁移线程进行处理,避免了一个用户的数据可能被不同迁移线程进行处理,保证了迁移数据的完整性的,减少了数据迁移过程中的数据损失。
上述所有可选技术方案,均可按照任意结合形成本发明的可选实施例,本发明实施例对此不再一一赘述。
参见图3,图3是本申请实施例提供了一种数据迁移装置的结构框图,该装置300包括:
启动模块301,用于启动M个迁移线程,每个迁移线程用于将待迁移数据库中存储的数据迁移至目标数据库中,M为正整数;
分组模块302,用于根据M个迁移线程,对待迁移数据库中的待迁移数据按照用户标识进行分组,得到M个数据组,每个数据组包括至少一个用户标识所对应的所有数据,M个数据组与M个迁移线程一一对应;
迁移模块303,用于通过M个迁移线程,分别对M个数据组进行迁移,以将M个数据组迁移至目标数据库中。
可选地,M为当前能够支持的最大迁移线程数。
可选地,迁移模块303包括:
读取子模块,用于对于M个迁移线程中的目标迁移线程,通过目标迁移线程,按照预设条数依次从目标数据组中读取数据,将读取的数据迁移至目标数据库;
其中,目标迁移线程为M个迁移线程中的任一个,目标数据组为M个数据组中与目标迁移线程对应的数据组。
可选地,迁移模块303还包括:
确定子模块,用于确定待迁移数据的最大序列标识,序列标识用于指示待迁移数据在存量表中的排序,待迁移数据存储在存量表中;
读取子模块,还用于:
对于依次从目标数据组中读取数据中的任一次读取过程,若通过目标迁移线程,按照预设条数从目标数据组中成功读取到数据,则将读取的数据迁移至目标数据库中;
若按照预设条数从目标数据组中未成功读取到数据,则确定已读取数据的最大序列标识,若已读取数据的最大序列标识大于或等于待迁移数据的最大序列标识,则停止进行数据迁移,若已读取数据的最大序列标识小于待迁移数据的最大序列标识,则继续按照预设条数从目标数据组中读取数据,将读取的数据迁移至目标数据库中。
可选地,装置300还包括:
确定模块,用于对于依次从目标数据组中读取数据中的任一次读取过程,在通过目标迁移线程,按照预设条数从目标数据组中读取数据的过程中,若待读取的数据中存在具有锁标志的数据,则对待读取的数据中具有锁标志之外的数据进行读取,并将具有锁标志的数据确定为未成功读取的数据。
可选地,迁移模块303用于:
若目标数据组中还存在未成功读取的数据,则通过目标迁移线程,继续对未成功读取的数据进行读取,将读取的数据迁移至目标数据库中,直至目标数据组中的数据全部被成功读取为止。
本申请实施例中,通过启动M个迁移线程,根据M个迁移线程,对待迁移数据库中的待迁移数据按照用户标识进行分组,得到M个数据组,再通过M个迁移线程,分别对M个数据组进行迁移,不仅可以提高数据迁移效率,而且,在数据迁移过程中,还可以将一个用户的所有数据划分到同一个数据组中,保证每个用户的数据被同一个迁移线程进行处理,避免了一个用户的数据可能被不同迁移线程进行处理,保证了迁移数据的完整性的,减少了数据迁移过程中的数据损失。
需要说明的是:上述实施例提供的数据迁移装置在进行数据迁移时,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将装置的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。另外,上述实施例提供的数据迁移装置与数据迁移方法实施例属于同一构思,其具体实现过程详见方法实施例,这里不再赘述。
图4是本发明实施例提供的一种数据迁移装置400的结构示意图,该数据迁移装置400可以为服务器或者终端,终端可以为手机、平板电脑或计算机等,本申请实施例对此不做限定。该数据迁移装置可因配置或性能不同而产生比较大的差异,可以包括一个或一个以上处理器(central processing units,CPU)401和一个或一个以上的存储器402,其中,所述存储器402中存储有至少一条指令,所述至少一条指令由所述处理器401加载并执行以实现上述各个方法实施例提供的数据迁移方法。当然,该数据迁移装置400还可以具有有线或无线网络接口、键盘以及输入输出接口等部件,以便进行输入输出,该数据迁移装置400还可以包括其他用于实现设备功能的部件,在此不做赘述。
在示例性的实施例中,还提供了一种计算机可读存储介质,所述计算机可读存储介质上存储有指令,所述指令被处理器执行时实现上述数据迁移方法。
在示例性实施例中,还提供了一种计算机程序产品,当该计算机程序产品被执行时,其用于实现上述数据迁移方法。
本领域普通技术人员可以理解实现上述实施例的全部或部分步骤可以通过硬件来完成,也可以通过程序来指令相关的硬件完成,所述的程序可以存储于一种计算机可读存储介质中,上述提到的存储介质可以是只读存储器,磁盘或光盘等。
以上所述仅为本发明的较佳实施例,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (6)
1.一种数据迁移方法,其特征在于,所述方法包括:
启动M个迁移线程,每个迁移线程用于将待迁移数据库中存储的数据迁移至目标数据库中,所述M为正整数;
根据所述M个迁移线程,对所述待迁移数据库中的待迁移数据按照用户标识进行分组,得到M个数据组,每个数据组包括至少一个用户标识所对应的所有数据,所述M个数据组与所述M个迁移线程一一对应;
对于所述M个迁移线程中的目标迁移线程,确定所述目标迁移线程对应的数据组中的待迁移数据的最大序列标识,序列标识用于指示所述待迁移数据在存量表中的排序,所述存量表中的数据按照存储时间顺序依次排列,所述待迁移数据存储在所述存量表中;
若按照预设条数从所述目标数据组中成功读取到数据,则将读取的数据迁移至所述目标数据库中;若按照所述预设条数从所述目标数据组中未成功读取到数据,则确定已读取数据的最大序列标识,若已读取数据的最大序列标识大于或等于所述待迁移数据的最大序列标识,则停止进行数据迁移,若已读取数据的最大序列标识小于所述待迁移数据的最大序列标识,则继续按照所述预设条数从所述目标数据组中读取数据,将读取的数据迁移至所述目标数据库中;
其中,所述目标迁移线程为所述M个迁移线程中的任一个,所述目标数据组为所述M个数据组中与所述目标迁移线程对应的数据组,所述M个迁移线程并行对对应的所述M个数据组进行迁移。
2.根据权利要求1所述的方法,其特征在于,所述M为当前能够支持的最大迁移线程数。
3.如权利要求1所述的方法,其特征在于,所述方法还包括:
对于依次从所述目标数据组中读取数据中的任一次读取过程,在通过所述目标迁移线程,按照所述预设条数从所述目标数据组中读取数据的过程中,若待读取的数据中存在具有锁标志的数据,则对待读取的数据中具有锁标志之外的数据进行读取,并将具有锁标志的数据确定为未成功读取的数据。
4.如权利要求1所述的方法,其特征在于,所述方法还包括:
若所述目标数据组中还存在未成功读取的数据,则通过所述目标迁移线程,继续对未成功读取的数据进行读取,将读取的数据迁移至所述目标数据库中,直至所述目标数据组中的数据全部被成功读取为止。
5.一种数据迁移装置,其特征在于,所述装置包括:
启动模块,用于启动M个迁移线程,每个迁移线程用于将待迁移数据库中存储的数据迁移至目标数据库中,所述M为正整数;
分组模块,用于根据所述M个迁移线程,对所述待迁移数据库中的待迁移数据按照用户标识进行分组,得到M个数据组,每个数据组包括至少一个用户标识所对应的所有数据,所述M个数据组与所述M个迁移线程一一对应;
迁移模块,包括确定子模块和读取子模块;
所述确定子模块,用于对于所述M个迁移线程中的目标迁移线程,确定所述目标迁移线程对应的数据组中的待迁移数据的最大序列标识,序列标识用于指示所述待迁移数据在存量表中的排序,所述存量表中的数据按照存储时间顺序依次排列,所述待迁移数据存储在所述存量表中;
所述读取子模块,用于若按照预设条数从所述目标数据组中成功读取到数据,则将读取的数据迁移至所述目标数据库中;若按照所述预设条数从所述目标数据组中未成功读取到数据,则确定已读取数据的最大序列标识,若已读取数据的最大序列标识大于或等于所述待迁移数据的最大序列标识,则停止进行数据迁移,若已读取数据的最大序列标识小于所述待迁移数据的最大序列标识,则继续按照所述预设条数从所述目标数据组中读取数据,将读取的数据迁移至所述目标数据库中;
其中,所述目标迁移线程为所述M个迁移线程中的任一个,所述目标数据组为所述M个数据组中与所述目标迁移线程对应的数据组,所述M个迁移线程并行对对应的所述M个数据组进行迁移。
6.如权利要求5所述的装置,其特征在于,所述迁移模块用于:
若所述目标数据组中还存在未成功读取的数据,则通过所述目标迁移线程,
继续对未成功读取的数据进行读取,将读取的数据迁移至所述目标数据库中,
直至所述目标数据组中的数据全部被成功读取为止。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911392923.5A CN111143331B (zh) | 2019-12-30 | 2019-12-30 | 数据迁移方法、装置及计算机存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911392923.5A CN111143331B (zh) | 2019-12-30 | 2019-12-30 | 数据迁移方法、装置及计算机存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111143331A CN111143331A (zh) | 2020-05-12 |
CN111143331B true CN111143331B (zh) | 2024-05-10 |
Family
ID=70521746
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201911392923.5A Active CN111143331B (zh) | 2019-12-30 | 2019-12-30 | 数据迁移方法、装置及计算机存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111143331B (zh) |
Families Citing this family (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111913663A (zh) * | 2020-07-29 | 2020-11-10 | 星辰天合(北京)数据科技有限公司 | 存储卷在线迁移的方法、装置和存储卷在线迁移的*** |
CN112015716B (zh) * | 2020-08-04 | 2024-02-09 | 北京人大金仓信息技术股份有限公司 | 数据库数据迁移方法、装置、介质和电子设备 |
CN112579569A (zh) * | 2020-12-15 | 2021-03-30 | 中国建设银行股份有限公司 | 一种数据迁移方法和装置 |
CN113220660A (zh) * | 2021-04-15 | 2021-08-06 | 远景智能国际私人投资有限公司 | 一种数据迁移方法、装置、设备及可读存储介质 |
CN113791736A (zh) * | 2021-09-15 | 2021-12-14 | 京东科技信息技术有限公司 | 数据迁移方法、网卡设备、服务器及数据迁移*** |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101278298A (zh) * | 2005-10-05 | 2008-10-01 | 国际商业机器公司 | 执行数据对象从源到目标的信任保持迁移的***和方法 |
CN105843820A (zh) * | 2015-01-16 | 2016-08-10 | 阿里巴巴集团控股有限公司 | 数据迁移方法及装置 |
CN108509556A (zh) * | 2018-03-22 | 2018-09-07 | 上海达梦数据库有限公司 | 数据迁移方法和装置、服务器、存储介质 |
CN109460188A (zh) * | 2018-11-13 | 2019-03-12 | 郑州云海信息技术有限公司 | 一种数据迁移方法、***、设备及计算机可读存储介质 |
CN110019133A (zh) * | 2017-12-21 | 2019-07-16 | 北京京东尚科信息技术有限公司 | 数据在线迁移方法和装置 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20160253339A1 (en) * | 2015-02-26 | 2016-09-01 | Bittitan, Inc. | Data migration systems and methods including archive migration |
-
2019
- 2019-12-30 CN CN201911392923.5A patent/CN111143331B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101278298A (zh) * | 2005-10-05 | 2008-10-01 | 国际商业机器公司 | 执行数据对象从源到目标的信任保持迁移的***和方法 |
CN105843820A (zh) * | 2015-01-16 | 2016-08-10 | 阿里巴巴集团控股有限公司 | 数据迁移方法及装置 |
CN110019133A (zh) * | 2017-12-21 | 2019-07-16 | 北京京东尚科信息技术有限公司 | 数据在线迁移方法和装置 |
CN108509556A (zh) * | 2018-03-22 | 2018-09-07 | 上海达梦数据库有限公司 | 数据迁移方法和装置、服务器、存储介质 |
CN109460188A (zh) * | 2018-11-13 | 2019-03-12 | 郑州云海信息技术有限公司 | 一种数据迁移方法、***、设备及计算机可读存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN111143331A (zh) | 2020-05-12 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111143331B (zh) | 数据迁移方法、装置及计算机存储介质 | |
CN107402950B (zh) | 基于分库分表的文件处理方法和装置 | |
CN106844397B (zh) | 基于分库分表的任务传输方法、装置及*** | |
CN111813805A (zh) | 一种数据处理方法及装置 | |
CN105871983A (zh) | 一种选择服务器的方法及装置 | |
CN110795171B (zh) | 业务数据处理方法、装置、计算机设备及存储介质 | |
CN110362563A (zh) | 数据表的处理方法及装置、存储介质、电子装置 | |
CN108399175B (zh) | 一种数据存储、查询方法及其装置 | |
US10114951B2 (en) | Virus signature matching method and apparatus | |
CN110688223B (zh) | 数据处理方法及相关产品 | |
CN111259012B (zh) | 数据均匀化方法、装置、计算机设备及存储介质 | |
CN110765082B (zh) | Hadoop文件处理方法、装置、存储介质及服务器 | |
US11194619B2 (en) | Information processing system and non-transitory computer readable medium storing program for multitenant service | |
CN111161064A (zh) | 一种区块链交易记录的处理方法及装置 | |
CN103856535B (zh) | 一种获取用户数据的方法和装置 | |
CN112596825B (zh) | 一种云桌面启动方法及装置 | |
CN110609707A (zh) | 在线数据处理***生成方法、装置及设备 | |
CN110837499A (zh) | 数据访问处理方法、装置、电子设备和存储介质 | |
CN112764897B (zh) | 任务请求的处理方法、装置、***及计算机可读存储介质 | |
CN111031052B (zh) | 基于多应用程序的数据处理方法、计算设备及存储介质 | |
CN113901076A (zh) | 数据同步方法、装置、服务器及存储介质 | |
CN112035432A (zh) | 数据的置换迁移方法、装置计算机设备 | |
CN115987905B (zh) | 一种多通道流控方法、***、设备及存储介质 | |
CN115048459B (zh) | 数据批量同步方法、装置、电子设备及存储介质 | |
CN116821250B (zh) | 一种分布式图数据处理方法和*** |
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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |