CN116737690A - 数据迁移方法、系统及相关装置 - Google Patents
数据迁移方法、系统及相关装置 Download PDFInfo
- Publication number
- CN116737690A CN116737690A CN202310539466.8A CN202310539466A CN116737690A CN 116737690 A CN116737690 A CN 116737690A CN 202310539466 A CN202310539466 A CN 202310539466A CN 116737690 A CN116737690 A CN 116737690A
- Authority
- CN
- China
- Prior art keywords
- data
- data stream
- stream
- writing
- database
- 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
- 238000013508 migration Methods 0.000 title claims abstract description 82
- 230000005012 migration Effects 0.000 title claims abstract description 82
- 238000000034 method Methods 0.000 title claims abstract description 61
- 230000008859 change Effects 0.000 claims description 66
- 230000015654 memory Effects 0.000 claims description 30
- 238000012545 processing Methods 0.000 claims description 25
- 238000004891 communication Methods 0.000 claims description 15
- 238000013481 data capture Methods 0.000 claims description 11
- 238000004590 computer program Methods 0.000 claims description 6
- 230000008569 process Effects 0.000 description 14
- 238000010586 diagram Methods 0.000 description 12
- 238000012986 modification Methods 0.000 description 10
- 230000004048 modification Effects 0.000 description 10
- 238000005516 engineering process Methods 0.000 description 9
- 230000006870 function Effects 0.000 description 8
- 238000013461 design Methods 0.000 description 6
- 238000005192 partition Methods 0.000 description 6
- 239000007787 solid Substances 0.000 description 5
- 238000003780 insertion Methods 0.000 description 4
- 230000037431 insertion Effects 0.000 description 4
- 238000004458 analytical method Methods 0.000 description 3
- 230000005540 biological transmission Effects 0.000 description 3
- 230000001419 dependent effect Effects 0.000 description 3
- 238000007726 management method Methods 0.000 description 3
- 239000004973 liquid crystal related substance Substances 0.000 description 2
- 230000007246 mechanism Effects 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 230000002093 peripheral effect Effects 0.000 description 2
- 238000003491 array Methods 0.000 description 1
- 238000013473 artificial intelligence Methods 0.000 description 1
- 230000001427 coherent effect Effects 0.000 description 1
- 238000010276 construction Methods 0.000 description 1
- 238000007405 data analysis Methods 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 238000000802 evaporation-induced self-assembly Methods 0.000 description 1
- 230000010354 integration Effects 0.000 description 1
- 238000004806 packaging method and process Methods 0.000 description 1
- 238000011112 process operation Methods 0.000 description 1
- 230000001737 promoting effect Effects 0.000 description 1
- 238000011084 recovery Methods 0.000 description 1
- 230000004044 response Effects 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 238000000638 solvent extraction Methods 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
- 238000012546 transfer Methods 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/24—Querying
- G06F16/245—Query processing
- G06F16/2455—Query execution
- G06F16/24568—Data stream processing; Continuous queries
-
- 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/24—Querying
- G06F16/245—Query processing
- G06F16/2458—Special types of queries, e.g. statistical queries, fuzzy queries or distributed queries
- G06F16/2474—Sequence data queries, e.g. querying versioned data
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Databases & Information Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Data Mining & Analysis (AREA)
- Computational Linguistics (AREA)
- Fuzzy Systems (AREA)
- Mathematical Physics (AREA)
- Probability & Statistics with Applications (AREA)
- Software Systems (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本申请实施例提供一种数据迁移方法、系统及相关装置,该方法可以包括从源端数据库中读取目标数据流,其中,目标数据流包括多条数据,多条数据包括源端数据库的日志文件中记录的需要按照时序执行的数据;将读取到的目标数据流拆分为多个数据流,其中,多个数据流中的每个数据流包括具有关联关系的数据;根据关联关系将多个数据流中每个数据流包括的数据分别分配给与每个数据流对应的写入端,由每个数据流对应的写入端将每个数据流包含数据写入目的端数据库,采用本申请实施例,提高数据迁移的性能及可靠性,降低数据时延。
Description
技术领域
本申请涉及领域存储技术领域,尤其涉及一种数据迁移方法、系统及相关装置。
背景技术
随着数据量的高速增长,越来越多的数据需要使用数据库进行存储。为了保证数据的可靠性,通常可以通过数据迁移方案,对源端数据库的变更日志进行解析,将相同的操作重放至目的端数据库中,使得不同应用、不同数据库类型的数据可以实时集成。
由于目前的数据迁移方案使用的是单线程方式将源端数据库的数据写入目的端数据库,所以写入速度慢,性能上受到影响,难以进行横向扩展。
发明内容
本申请实施例提供了数据迁移方法、系统及相关装置,可以将数据流拆分为多个小数据流,分发至不同的写入端进行数据写入,可以提高数据迁移的性能及可靠性,降低数据时延。
第一方面,本申请实施例提供一种数据迁移方法,该方法包括:
从源端数据库中读取目标数据流,其中,所述目标数据流包括多条数据,所述多条数据包括所述源端数据库的日志文件中记录的需要按照时序执行的数据;
将读取到的所述目标数据流拆分为多个数据流,其中,所述多个数据流中的每个数据流包括具有关联关系的数据;
根据所述关联关系将所述多个数据流中每个数据流包括的数据分别分配给与所述每个数据流对应的写入端,由所述每个数据流对应的写入端将所述每个数据流包含数据写入目的端数据库。
可以看出,对于需要按照顺序执行的数据流,可以将数据流以某一特征进行小批量拆分,得到具有关联性的数据流,将不同的数据流分发至不同的写入端进行数据写入。也即具有关联性的数据流可以被分发至同一个写入端进行写入,其他数据流可以被分发至其他写入端进行写入,这样多个写入端进行写入操作,可以提升业务可用性和写入性能,降低数据时延。
在第一方面的一种可能的实施方式中,所述多个数据流包括第一数据流和第二数据,其中,所述第一数据流所包括的数据之间具有第一关联关系,所述第一关联关系用于表明所述第一数据流所包含的数据需要与从所述源端数据库读取到的操作顺序保持一致,所述第二数据流包括所述目标数据流中除去具有所述第一关联关系的数据之外的数据。
可以理解的是,拆分出来的数据流中包括需要按照时序执行的数据流,这种数据流对时延具有严格的执行顺序,在不影响数据准确性的前提下,需要将具有关联关系的数据找出来。
在第一方面的一种可能的实施方式中,所述多条数据中的每条数据携带有根据所述每条数据对应的主键、表名、事务唯一编码ID或者自定义通用唯一识别码UUID中的一项或多项所确定的标签。
可以看出,通过数据的唯一字段可以为数据打上标签,以此来标识目标数据流中的每条数据,从而可以根据标签来拆分出具有关联关系的数据。
在第一方面的一种可能的实施方式中,所述将所述目标数据流拆分为多个数据流,包括:
根据所述多条数据中每条数据对应的主键和事务,将所述目标数据流拆分为具有第一关联关系的第一数据流和不具有所述第一关联关系的第二数据流,其中,所述第一关联关系用于反映所述第一数据流所包括的数据的主键和事务之间是关联的。
可以看出,主键和事务是数据具有的一种属性,根据主键和事务可以区分数据与数据之间的关联,从而找出具有关联关系的数据。
在第一方面的一种可能的实施方式中,所述根据所述多条数据中每条数据对应的主键和事务,将所述数据流拆分为具有第一关联关系的第一数据流和不具有所述第一关联关系的第二数据流,包括:
根据所述多条数据中每条数据对应的事务从所述目标数据流中确定属于同一事务的数据;
将属于所述同一事务的数据中具有相同主键的数据划分为具有所述第一关联关系的第一数据流;
将所述目标数据流中不属于所述同一事务和/或不具有所述相同主键的数据划分为第二数据流。
可以理解的是,属于同一事务的数据是需要按照顺序执行的数据,而属于同一事务的具有相同主键的数据是属于同一表或者同一行的数据,因此,具有这类属性的数据是具有第一关联关系的数据。
在第一方面的一种可能的实施方式中,所述根据所述关联关系将所述多个数据流中每个数据流包括的数据分别分配给与所述每个数据流对应的数据写入组件,由所述每个数据流对应的数据写入组件将所述每个数据流包含数据写入目的端数据库,包括:
将具有所述第一关联关系的第一数据流所包括的数据分配给第一写入端,由所述第一写入端将所述第一数据流所包括的数据写入目的端数据库;
将所述第二数据流所包括的数据分配给除所述第一写入端以外的其他写入端,由所述其他写入端将所述第二数据流所包括的数据分别写入所述目的端数据库。
可以看出,为了数据的准确性,具有第一关联关系的数据是需要严格按照顺序执行的,所以需要分配给同一个写入端进行写入,而第二数据流是不具有第一关联关系的数据,不需要严格按照顺序来执行,因为可以分配给其他写入端进行写入。
在第一方面的一种可能的实施方式中,所述目标数据流包括对所述源端数据库的日志文件进行分析后得到的变化数据捕捉流CDC流。
第二方面,本申请提供一种数据迁移系统,包括数据迁移装置,所述数据迁移装置包括数据读取组件、消息中间件和数据写入组件,所述数据写入组件包括多个写入端,其中:
所述数据读取组件,用于从所述源端数据库中读取目标数据流,并向所述消息中间件发送所述目标数据流,所述目标数据流包括多条数据,所述多条数据包括所述源端数据库的日志文件中记录的需要按照时序执行的数据;
所述消息中间件,用于存储来所述数据读取组件的所述目标数据流;
所述数据写入组件,用于从所述消息中间件中读取所述目标数据流,并将所述目标数据流拆分为多个数据流,其中,所述多个数据流中的每个数据流包括具有关联关系的数据;
所述数据写入组件,还用于根据所述关联关系将所述多个数据流中每个数据流包括的数据分别分配给与所述每个数据流对应的写入端,由所述每个数据流对应的写入端将所述每个数据流包含数据写入目的端数据库。
在第二方面的一种可能的实施方式中,所述多个数据流包括第一数据流和第二数据,其中,所述第一数据流所包括的数据之间具有第一关联关系,所述第一关联关系用于表明所述第一数据流所包含的数据需要与从所述源端数据库读取到的操作顺序保持一致,所述第二数据流包括所述目标数据流中除去具有所述第一关联关系的数据之外的数据。
在第二方面的一种可能的实施方式中,所述数据读取组件还用于根据所述多条数据中的每条数据对应的主键、表名、事务唯一编码ID或者自定义通用唯一识别码UUID中的一项或多项为所述每条数据打上标签。
在第二方面的一种可能的实施方式中,所述数据写入组件,具体用于:
根据所述多条数据中每条数据对应的主键和事务,将所述目标数据流拆分为具有第一关联关系的第一数据流和不具有所述第一关联关系的第二数据流,其中,所述第一关联关系用于反映所述第一数据流所包括的数据的主键和事务之间是关联的。
在第二方面的一种可能的实施方式中,所述数据写入组件,具体用于:
根据所述多条数据中每条数据对应的事务从所述数据流中确定属于同一事务的数据;
将属于所述同一事务的数据中具有相同主键的数据划分为具有所述第一关联关系的第一数据流;
将所述目标数据流中不属于所述同一事务和/或不具有所述相同主键的数据划分为第二数据流。
在第二方面的一种可能的实施方式中,所述数据写入组件,具体用于:
将具有所述第一关联关系的第一数据流所包括的数据分配给第一写入端,由所述第一写入端将所述第一数据流所包括的数据写入目的端数据库;
将所述第二数据流所包括的数据分配给除所述第一写入端以外的其他写入端,由所述其他写入端将所述第二数据流所包括的数据分别写入所述目的端数据库。
在第二方面的一种可能的实施方式中,所述目标数据流为对所述源端数据库的日志文件进行分析后得到的变化数据捕捉流CDC流。
第三方面,本申请提供一种数据迁移装置,包括:
通信模块,用于从源端数据库中读取目标数据流,其中,所述目标数据流包括多条数据,所述多条数据包括所述源端数据库的日志文件中记录的需要按照时序执行的数据;
处理模块,用于将读取到的所述目标数据流拆分为多个数据流,其中,所述多个数据流中每个数据流中包括具有关联关系的数据;
所述处理模块,还用于根据所述关联关系将所述多个数据流中每个数据流包括的数据分别分配给与所述每个数据流对应的写入端,由所述每个数据流对应的写入端将所述每个数据流包含数据写入目的端数据库。
在第三方面的一种可能的实施方式中,所述多个数据流包括第一数据流和第二数据,其中,所述第一数据流所包括的数据之间具有第一关联关系,所述第一关联关系用于表明所述第一数据流所包含的数据需要与从所述源端数据库读取到的操作顺序保持一致,所述第二数据流包括所述目标数据流中除去具有所述第一关联关系的数据之外的数据。
在第三方面的一种可能的实施方式中,所述多条数据中的每条数据携带有根据所述每条数据对应的主键、表名、事务唯一编码ID或者自定义通用唯一识别码UUID中的一项或多项所确定的标签。
在第三方面的一种可能的实施方式中,所述处理模块具体用于:
根据所述多条数据中每条数据对应的主键和事务,将所述目标数据流拆分为具有第一关联关系的第一数据流和不具有所述第一关联关系的第二数据流,其中,所述第一关联关系用于反映所述第一数据流所包括的数据的主键和事务之间是关联的。
在第三方面的一种可能的实施方式中,所述处理模块具体用于:
根据所述多条数据中每条数据对应的事务从所述目标数据流中确定属于同一事务的数据;
将属于所述同一事务的数据中具有相同主键的数据划分为具有所述第一关联关系的第一数据流;
将所述目标数据流中不属于所述同一事务和/或不具有所述相同主键的数据划分为第二数据流。
在第三方面的一种可能的实施方式中,所述处理模块具体用于:
将具有所述第一关联关系的第一数据流所包括的数据分配给第一写入端,由所述第一写入端将所述第一数据流所包括的数据写入目的端数据库;
将所述第二数据流所包括的数据分配给除所述第一写入端以外的其他写入端,由所述其他写入端将所述第二数据流所包括的数据分别写入所述目的端数据库。
在第三方面的一种可能的实施方式中,所述目标数据流为对所述源端数据库的日志文件进行分析后得到的变化数据捕捉流CDC流。
第四方面,本申请实施例提供一种计算设备,该计算设备包括处理器和存储器;所述处理器用于执行存储器中存储的指令,以使得所述计算设备实现前述第一方面任一项所描述的方法。
可选的,所述计算设备还包括通信接口,所述通信接口用于接收和/或发送数据,和/或,所述通信接口用于为所述处理器提供输入和/或输出。
需要说明的是,上述实施例是以通过调用计算机指定来执行方法的处理器(或称通用处理器)为例进行说明。具体实施过程中,处理器还可以是专用处理器,此时计算机指令已经预先加载在处理器中。可选的,处理器还可以既包括专用处理器也包括通用处理器。
可选的,处理器和存储器还可能集成于一个器件中,即处理器和存储器还可以被集成在一起。
第五方面,本申请实施例还提供一种计算设备集群,该计算设备集群包含至少一个计算设备,每个计算设备包括处理器和存储器;
所述至少一个计算设备的处理器用于执行所述至少一个计算设备的存储器中存储的指令,以使得所述计算设备集群执行第一方面任一项所述的方法。
第六方面,本申请实施例提供一种计算机可读存储介质,所述计算机可读存储介质中存储有指令,当所述指令在至少一个处理器上运行时,实现前述第一方面任一项所描述的方法。
第七方面,本申请提供了一种计算机程序产品,计算机程序产品包括计算机指令,当所述指令在至少一个处理器上运行时,实现前述第一方面任一项所描述的方法。
可选的,该计算机程序产品可以为一个软件安装包或镜像包,在需要使用前述方法的情况下,可以下载该计算机程序产品并在计算设备上执行该计算机程序产品。
本申请第二至第七方面所提供的技术方案,其有益效果可以参考第一方面的技术方案的有益效果,此处不再赘述。
附图说明
以下对本申请实施例用到的附图进行介绍。
图1是本申请实施例提供的一种在同一进程中数据迁移的示意图;
图2是本申请实施例提供的另一种在同一进程中数据迁移的示意图;
图3是本申请实施例提供的一种数据迁移系统的架构示意图;
图4是本申请实施例提供的又一种数据迁移系统的架构示意图;
图5是本申请实施例提供的一种数据迁移方法的流程示意图;
图6是本申请实施例提供的一种数据迁移装置600的结构示意图;
图7是本申请实施例提供的一种计算设备70的结构示意图。
具体实施方式
下面结合本发明实施例中的附图对本发明实施例进行描述。需要说明的是,本申请中,“示例性的”或者“例如”等词用于表示作例子、例证或说明。本申请中被描述为“示例性的”或者“例如”的任何实施例或设计方案不应被解释为比其他实施例或设计方案更优选或更具优势,使用“示例性的”或者“例如”等词旨在以具体方式呈现相关概念。
为了便于本领域的技术人员理解本申请提供的技术方案,下面对本申请所涉及的技术术语进行说明。
1.消息队列
在计算机科学中,消息队列是一种进程间通信或同一进程的不同线程间的通信方式,软件的贮列用来处理一系列的输入,通常是来自用户。消息队列提供了异步的通信协议,每一个贮列中的纪录包含详细说明的资料,包含发生的时间,输入设备的种类,以及特定的输入参数,也就是说:消息的发送者和接收者不需要同时与消息队列交互。消息会保存在队列中,直到接收者取回它。
2.数据迁移
数据迁移是指将数据从一个设备(源端设备)迁移到另一个设备(目的端设备)的过程。
3.基于变更日志的数据迁移
基于变更日志的数据迁移包括变化数据捕捉(Change Data Capture,CDC)、变化数据传输以及变化数据重演这3个阶段。其中,
变化数据捕捉是指,通过源端数据库的变更日志中记录的变更日志,识别源端数据库中发生变化的数据,并获取该发生变化的数据所对应的变更日志。
变化数据传输是指,将发生变化的数据所对应的变更日志从源端数据库传输到目的端数据库,或者将发生变化的数据所对应的变更日志通过消息队列等中间件技术从源端数据库传输至目的端数据库。
变化数据重演是指,目的端数据库对接收到的发生变化的数据所对应的变更日志进行解析及处理,将变化的数据更新到目的端数据库。
因此,用户通过在业务界面上配置CDC任务,即可实现不同应用、不同数据库类型数据的实时集成。因为是通过对数据变化重演实现的,所以需要严格保证对目的端数据库的操作与源端数据库的操作的一致性。
4.源端设备,是指用于独立存储数据的设备,例如服务器,或者,也可以用于存储数据的设备集群,例如包括管理设备和多个存储设备的存储系统。其中,管理设备可以是服务器,存储设备可以是硬盘驱动器(hard disk drive,HDD)磁盘设备、固态驱动器(solidstate drive,SSD)磁盘设备,串行高级技术附件(serial advanced technologyattachment,SATA)磁盘设备等。
目的端设备与源端设备相似,在此不再赘述,
5.源端数据库,是指源端数据库中按照一定的存储方式存储数据且统一管理的多个数据的集合,源端设备可以对数据库中的数据进行新增、查询、更新、删除等操作。根据不同的存储方式,源端数据库可以包括关系型数据库或者非关系型数据库。当然,也可以包括其他类型的数据库,此处不作限制。一个源端设备中可以包括一个源端数据库,也可以包括多个源端数据库。若包括多个源端数据库,则可以对每个数据库进行编号,源端设备可以根据每个源端数据库的编号访问各个源端数据库。
6.Kafka
Kafka作为消息订阅/发送的中间件,有topic(主题)和partition(分区)这两个概率。Topic是一个存储消息的逻辑概念,可以理解为是一个消息的集合。每条发送到Kafka集群的消息都会自带一个类别,表明要将消息发送到哪个topic。在存储方面,不同的topic的消息是分开存储的,每个topic可以有多个生产者向他发送消息,也可以有多个消费者去消费同一个topic中的消息。
Partition,在Kafka中是分区的意思。分区,提高了Kafka的并发,也解决了topic中数据的负载均衡。即Kafka中每个topic可以划分多个分区,同一个topic下的不同分区包含的消息是不同的。
随着大数据分析技术。物联网技术等技术的发展,数据成为了推动相关技术进步的核心要素。因此,各行各业的数据需要进行存储,以便用于分析和指导业务。例如,可以通过数据库存储系统将数据进行存储。随着用户业务规模的增长,单一的数据库无法满足业务的需求,用户业务的数据可能会被存储在多个数据库中。此时,业务运行过程中则经常会涉及数据迁移。
请参见图1,图1是本申请实施例提供的一种在同一进程中数据迁移的示意图。从图1可以看出,源端数据库1011和目的端数据库1012在同一个存储设备101中。因此,在同一个业务进程中,使用单线程来读取源端数据库1011中的变更日志,然后再使用单线程根据变更日志将数据迁移到目的端数据库1012中。
请参见图2,图2是本申请实施例提供的另一种在同一进程中数据迁移的示意图。从图2可以看出,数据迁移装置102通过单线程方式在数据读取组件1021(也即Reader)读取源端数据库103的数据变化,通过消息队列1022发送给数据写入组件1023(也即Writer),由数据写入组件1023将数据异步写入目的端数据库104。其中,消息队列1022可以是Kafka。
从图1可以看出,图1所示的数据迁移方案是使用单一进程操作,若进程异常停止,会造成同步任务停止,且有数据丢失风险。因为所有业务处理均在同一设备上执行,性能受单机影响,无法进一步提升性能。
从图2可以看出,图2所示的数据迁移方案的所有环节均为单路执行,无法横向扩展,存在性能问题。若有某一大表更新后,统一数据源的其他变更会被阻塞,导致数据同步延迟。
因此,在提供CDC服务的平台中,共同存在以下问题:1.性能严重依赖单机性能,横向扩展困难;2.由于单路执行,缺少容灾机制;3.若某一大表更新,会导致其他表被阻塞,对数据实时性产生影响。
基于上述分析,本申请提供了一种数据迁移方法、系统及相关装置,从源端数据库中获取目标数据流,将目标数据流拆分为多个数据流,然后将多个数据流中每个数据流包括的数据分别分配给与每个数据流对应的数据写入组件,由每个数据流对应的数据写入组件将每个数据流包含的数据写入目的端数据库。其中,目标数据流包括多条数据,多条数据包括源端数据库的变更日志中记录的需要按照时序执行的数据。当目标数据流为CDC流时,本申请为CDC任务提供了细粒度分配机制,使任务可以分配至多个数据写入组件,从而提升性能及可靠性。
下面对本申请实施例的系统架构进行示例性地描述。
需要说明的是,本申请描述的系统架构是为了更加清楚的说明本申请的技术方案,并不构成对于本申请提供的技术方案的限定,本领域普通技术人员可知,随着系统架构的演变和新业务场景的出现,本申请提供的技术方案对于类似的技术问题,同样适用。
请参见图3,图3是本申请实施例提供的一种数据迁移系统的架构示意图。该数据迁移系统300包含存储设备301、存储设备302和数据迁移装置303。
存储设备301能够提供存储空间且具有存储数据的能力。存储设备301包含计算设备3011和存储盘3012,计算设备3011和存储盘3012相连。其中,计算设备3011具有计算能力;存储盘3012用于提供存储空间,比如说源端数据库。存储盘3012包含但不限于是硬盘、随机存取存储器或只读存储器(Read Only Memory,ROM)等,或者,存储盘还可以是虚拟的,例如为虚拟存储池等。
可选的,存储设备301能够完成以下一种或多种功能:当存储盘3012中的源端数据库中存储的数据发生变化时,会生成与变化的数据对应的变更日志。变更日志可以记录对操作对象进行的操作、操作对象的内容、操作对象的起止位置等信息,在此不对变更日志所包括的具体内容进行限制。例如,在时刻1,通过写入操作,向存储设备301中的源端数据库中写入一个新数据,例如为数据A,则数据A为源端数据库中发生变化的数据。因此,计算设备3011会在源端数据库中生成与数据A对应的变更日志存储在日志文件中,该日志文件可以记录对数据A进行的操作(在该示例中该操作为写入操作)、数据A的内容、数据A的起止位置等信息。为方便说明,将与数据A对应的变更日志标记为变更日志1。然后,在时刻1之后的时刻2,通过修改操作,对数据B进行修改,则计算设备3011在源端数据库中生成与数据B对应的变更日志2并存储在日志文件中。再然后,在时刻2之后的时刻3,通过修改操作,对数据A进行了修改,计算设备3011在源端数据流中再次生成与数据A对应的变更日志3并存储在日志文件中。
类似的,存储设备302包含计算设备3021和存储盘3022,计算设备3021和存储盘3022相连接。其中,计算设备3021具有计算能力;存储盘3022用于提供存储空间,比如说目的端数据库。关于计算设备3021和存储盘3022的介绍请参考前述对计算设备3011和存储盘3012的介绍。
数据迁移装置303具有数据处理能力和通信能力,可以是主机、服务器、或公有云等,本申请对此不做限定。数据迁移装置可以向存储盘或存储盘所在的存储设备(或存储系统)发起IO请求,以访问存储盘中的数据库中的数据,对存储盘中的数据库进行读取操作或者写入操作。而计算设备可以感知数据迁移装置发起的IO请求,并响应该IO请求执行相关操作。
数据库中存储的数据经常需要跨设备的迁移,例如将存储在存储设备301中的数据迁移到存储设备302中,这时,存储设备301可以认为是源端设备,存储设备302可以认为是目的端设备。当需要将源端设备的源端数据库中的数据迁移到目的端设备的目的端数据库时,可以采用基于变更日志的数据迁移方案。具体的,数据迁移装置303向源端设备发起IO请求,从源端数据库中读取目标数据流。数据迁移装置303将读取到的目标数据流拆分为多个数据流,多个数据流中的每个数据流包括具有关联性的数据流。数据迁移装置303通过多路线程将每个数据流写入目的端数据库。将多个数据流中每个数据流包括的数据分别分配给与每个数据流对应的写入端。然后,数据迁移装置303向目的端设备发起IO请求,由每个数据流对应的写入端将每个数据流包含数据写入目的端数据库。其中,目标数据流包括多条数据,多条数据包括源端数据库的变更日志中记录的需要按照时序执行的数据。
进一步的,多条数据还可以包括不需要按照时序执行的数据,因此,根据时序执行的要求将读取到的目标数据流拆分为需要按照时序执行的数据流和不需要按照时序执行的数据流,然后将需要按照时序执行的数据流分配给第一写入端,由第一写入端将数据写入目的端数据库。将不需要按照时序执行的数据流分配给第二写入端,由第二写入端将数据写入目的端数据库。
举例来说,源端数据库的日志文件中包括变更日志A、变更日志B和变更日志C。其中,变更日志里包含这条变更所属于的事务信息,比如说变更日志A包含时刻1对数据A的变更所属于的事务信息,变更日志B包含时刻2对数据B的变更所属于的事务信息,变更日志3包含时刻3对数据A的变更所属于的事务信息。数据迁移装置303从源端数据库中读取的目标数据流包括插入数据A、修改数据B和修改数据A。由于插入数据A和修改数据A都是对数据A进行的变更,是具有关联性的数据流。所以,可以将读取到的目标数据流拆分为插入数据A和修改数据A的数据流,以及修改数据B的数据流。因此,通过多个写入端可以将插入数据A、修改数据A和修改数据B所包含的数据写入目的端数据流。
应理解,在图3所示的数据迁移系统300中,存储设备中的计算设备(例如计算设备3011、计算设备3021)可以包含硬件、软件模块、或者软件和硬件结合的装置等。可选的,计算设备可以通过软件实现和/或通过硬件实现。
作为计算设备通过硬件实现的一种举例,计算设备可以为控制器、处理器或服务器等。其中,控制器包含但不限于存储控制器(例如内存控制器、硬盘控制器、集成驱动器,电子控制器、磁盘阵列控制器等)、组合逻辑控制器、硬布线控制器等。处理器包含但不限于是中央处理器、图片处理器、人工智能处理器、微处理器或可编程逻辑门阵列等。另外,在一些场景中,因控制器也具有计算能力和/或能够执行指令,因此控制器也可以看作处理器。服务器包含但不限于是通用计算机、存储服务器、云服务器或刀片式服务器等。当计算设备的功能由服务器实现时,其所包含的服务器的数量也可以是一个,也可以是多个(如服务器集群)。
作为一种可能的方案,计算设备所实现的功能可以通过软件功能单元来实现。示例性地,计算模块可以为虚拟机、容器、云端等。其中,虚拟机是通过软件模拟的具有完整硬件系统功能的、运行在隔离环境中的计算机系统。容器是将应用和应用依赖包进行打包得到的隔离环境。云端是采用应用程序虚拟化技术的软件平台,能够让一个或者多个软件、应用在独立的虚拟化环境中开发、运行。可选的,云端可以部署在公有云、私有云、或者混合云上等。
作为软件功能单元的一种举例,计算设备可以包括运行在计算实例上的代码。其中,计算实例可以包括物理主机(计算设备)、虚拟机、容器中的至少一种。
可选的,存储设备中的计算设备和存储盘可以集成的。作为计算设备和存储盘集成设置的一个举例,存储设备为盘控一体的存储系统,存储设备包含控制器(数量可以为一个或者多个),控制器与存储盘(例如硬盘)通过总线连接。控制器可以用于处理来自存储设备外部(服务器或者其他存储系统)的数据访问请求,也用于处理存储设备内部生成的请求。示例性的,控制器接收应用服务器发送的写数据请求时,可以通过将写数据请求中携带的数据发送给存储盘进行存储。在这种情况下,可选地,计算设备可以是存储设备中的控制器。
或者可选的,计算设备和存储盘也可以是独立设置的。存储设备301中的计算设备3021为独立的设备,存储盘3022位于计算设备3021之外。
当然,无论二者是独立设置还是集成于同一设备中,计算设备和存储盘之间是相互连接的,二者的连接方式可以是总线或网络等。网络例如为有线网络、无线网络、有线网络和无线网络的组合等,示例性的,二者可以通过网线连接,或者,通过交换机连接。
作为一种可能的方案,数据迁移装置303还包括数据读取组件、消息中间件和数据写入组件。其中,数据写入组件包括多个写入端。数据读取组件、消息中间件和数据写入组件3033可以部署在不同的设备上,也可以部署在同一个设备上,本申请对此不作任何限制。
如图4所示,图4是本申请实施例提供的又一种数据迁移系统的架构示意图。该数据迁移系统400包括数据读取组件3031、消息中间件3032和数据写入组件3033。作为一种示例,图4所示的数据写入组件3033可以包括第一写入端3035,第二写入端3035和第三写入端3035。
其中,数据读取组件3031用于从源端数据库中读取目标数据流,并向消息中间件3032发送目标数据流。
消息中间件3032用于存储来自数据读取组件3031的目标数据流。其中,目标数据流包括多条数据,多条数据包括源端数据库的日志文件中记录的需要按照时序执行的数据。比如说从图4可以看出,目标数据流包括数据1的变更记录以及变更记录所属的事务、数据2的变更记录以及变更记录所属的事务、数据3的变更记录以及变更记录所属的事务、数据4的变更记录以及变更记录所属的事务、数据5的变更记录以及变更记录所属的事务,数据6的变更记录以及变更记录所属的事务。其中,数据1的主键为a,数据2的主键为b,数据3的主键为b,数据4的主键为c,数据5的主键为d,数据6的主键为a。数据1和数据2在同一个事务中,数据3和数据6在同一个事务中。
数据写入组件3033用于从消息中间件中读取目标数据流,并将目标数据流拆分为多个数据流。其中,多个数据流包括数据之间具有关联性的数据流。可以理解的是,由于对后续数据的不可预知性,数据写入组件3033可以将目标数据流拆分为多个小批次的数据,进而可以从整体来分析当前小批次数据中哪些数据具有关联性。
数据写入组件3033,还用于通过分配模块3034将多个数据流中每个数据流包括的数据分别分配给与每个数据流对应的写入端3035。由每个数据流对应的写入端3035将每个数据流包含的数据写入目的端数据库。
其中,多个数据流可以包括第一数据流和第二数据流,第一数据流包括数据之间具有第一关联关系,第一关联关系用于表明第一数据流所包含的数据需要与从源端数据库读取到的操作顺序保持一致。比如说图4所示的数据1和数据2在同一事务中,数据3和数据6在同一事务中,那么数据1和数据2需要按照时序执行,数据3和数据6需要按照时序执行。而第二数据流包括目标数据流中除去具有第一关联关系的数据之外的数据,比如说图4所示的数据4和数据5为第二数据流。
在一种可能的实现中,数据读取组件3031可以将读取到的目标数据流中的数据依旧唯一字段打上标签,也即可以根据多条数据中每条数据对应的主键、表名、事务唯一编码ID或者自定义通用唯一识别码UUID中的一项或多项为每条数据打上标签。
作为一种可能的实施方式,数据读取组件3031可以根据多条数据中每条数据对应的主键和事务,将目标数据流分为具有第一关联关系的第一数据流和不具有第一关联关系的第二数据流。其中,第一关联关系用于反映第一数据流所包括的数据的主键和事务之间是关联的。当源端数据库采用数据表的方式存储数据,则操作对象可以是指该源端数据库中的任意一个数据表中,由行主键或者行唯一建确定的一行的数据。例如写操作,针对源端数据库的一个数据表行主键的写操作,数据1的变更日志记录的针对该行主键的写操作,数据2的变更日志记录的针对该行主键的插入操作。
在一种可能的实现中,数据读取组件3031根据多条数据中每条数据对应的事务从数据流中确定属于同一事务的数据。比如说图4所示的数据1和数据2在同一事务中,数据3和数据6在同一事务中。然后,将属于所述同一事务的数据中具有相同主键的数据划分为具有所述第一关联关系的第一数据流,将目标数据流中不属于同一事务和/或不具有相同主键的数据划分为第二数据流。比如说图4所示的数据1对应的主键是a,数据2对应的主键是b,数据3对应的主键是b,数据6对应的主键是a,那么,数据1,数据2,数据3和数据6是具有第一关联关系的第一数据流。那么,数据4和数据5为不属于同一事务的数据,则是第二数据流。
作为一种可能的实施方式,数据写入组件3033将第一数据流分配给同一个写入端,也即第一写入端,由第一写入端将第一数据流写入目的端数据库。将第二数据流分配给除所述第一写入端以外的其他写入端,由其他写入端将第二数据流写入目的端数据库。如图4所示,将数据1,数据2,数据3和数据6分配给第一写入端3035进行顺序写入,将数据4分配给第二写入端3035进行顺序写入,将数据5分配给第三写入端3035进行顺序写入。
需要说明的是,分配到相同写入端的数据,需要与数据读取端读到的日志操作相对顺序保持一致,以保证在细粒度分配后的任务执行顺序与源端数据库的一致。
在一种可能的实现中,目标数据流可以是对源端数据库的日志文件进行分析后得到的变化数据捕捉流CDC流。也即日志文件中变更日志对应的操作类型可以包括但不限于增加数据的操作类型、修改数据的操作类型、删除数据的操作类型、增加数据库表的操作类型以及删除数据库表的操作类型等。
需要说明的是,数据读取组件3031、消息中间件3032和数据写入组件3033也可以是独立设置的,也即分别部署在不同的设备上。
请参见图5,图5是本申请实施例提供的一种数据迁移方法的流程示意图。可选的,该方法可以应用于前述的数据迁移系统,例如图3或图4所示的数据迁移系统。
如图5所示的数据迁移方法可以包括步骤S501至步骤S503这一顺序进行描述。本申请实施例对于上述一个或多个步骤执行的时间、执行的次数等不做限定。步骤S501至步骤S503具体如下:
步骤S501,数据迁移装置从源端数据库中读取目标数据流。
其中,目标数据流包括多条数据,多条数据包括源端数据库的日志文件中记录的需要按照时序执行的数据。
日志文件可以包括多个变更日志,每个变更日志中可以记录多种内容,例如,可以包括该所处理的操作对象(可以理解为数据)、操作对象的内容、操作对象的大小等信息。
在一种可能的实现中,目标数据流包括对所述源端数据库的日志文件进行分析后得到的变化数据捕捉流CDC流。也即,源端数据库的数据中进行更改的数据,比如说插入的数据、更新的数据和删除的数据。
步骤S502,数据迁移装置将读取到的目标数据流拆分为多个数据流。
其中,多个数据流中的每个数据流包括具有关联关系的数据。可以理解的是,对于具有管理关系的数据,比如说属于同一事务的数据,基于数据的原子性,需要按照顺序依赖来执行。但是对于不相干的顺序,比如说不属于同一事务的数据,不需要按照不相干数据之间的被迫的顺序依赖来执行。在一种可能的实现中,数据迁移装置可以将目标数据流拆分为小个批次,从整体分析当前小批次数据中哪些数据具有关联性。
在一种可能的实施方式中,多个数据流包括第一数据流和第二数据,其中,第一数据流所包括的数据之间具有第一关联关系,第一关联关系用于表明第一数据流所包含的数据需要与从所述源端数据库读取到的操作顺序保持一致,第二数据流包括目标数据流中除去具有第一关联关系的数据之外的数据。换言之,第二数据流包括不相干的数据,也即数据与数据之间即时不按照顺序写入也不影响数据的正确性。
在一种可能的实现中,数据迁移装置可以对数据进行标记,将数据依据唯一字段打上标记,因此多条数据中的每条数据携带有根据所述每条数据对应的主键、表名、事务唯一编码ID或者自定义通用唯一识别码UUID中的一项或多项所确定的标签。
在一种可能的实施方式中,数据迁移装置根据多条数据中每条数据对应的主键和事务,将目标数据流拆分为具有第一关联关系的第一数据流和不具有第一关联关系的第二数据流,其中,第一关联关系用于反映第一数据流所包括的数据的主键和事务之间是关联的。
在一种可能的实现中,数据迁移装置根据多条数据中每条数据对应的事务从目标数据流中确定属于同一事务的数据,可以理解的是,属于同一事务的数据是需要按顺序执行的数据。然后,将属于同一事务的数据中具有相同主键的数据划分为具有第一关联关系的第一数据流,可以理解的是,同一事务中具有相同主键的数据可能是属于同一数据行,因此是具有关联性的数据。从而目标数据流中不属于同一事务和/或不具有所述相同主键的数据被划分为第二数据流,也即不属于同一事务的数据和/或不具有所述相同主键可以认为是不按照顺序执行也不会影响数据正确性的数据。
步骤S502,数据迁移装置根据关联关系将多个数据流中每个数据流包括的数据分别分配给与每个数据流对应的写入端,由每个数据流对应的写入端将每个数据流包含的数据写入目的端数据库。
也即,数据迁移装置可以将具有关联性的数据分配给相同的写入端进行数据顺序写入处理,不具有关联性的数据,可以根据写入端的空闲状态分配至不同的写入端来处理。
在一种可能的实现中,第一数据流是同一数据的数据中具有相同主键的数据,是具有关联关系的,所以将第一数据流分配给第一写入端,由第一写入端将第一数据流按照顺序写入目的端数据库。也即,分配给第一写入端的数据,需要与读取到的日志文件中记录的顺序保持一致。
将第二数据流分配给除第一写入端以外的其他写入端,比如说处于空闲状态的写入端,由其他写入端将所述第二数据流写入所述目的端数据库。
因此,通过多个写入端可以将源端数据库的数据写入目的端数据库,提升了数据实时迁移性能及可靠性,降低数据时延。
上面说明了本申请实施例的方法,下面提供本申请实施例的装置。
为了实现上述方法实施例中的功能,其包含了执行各个功能相应的硬件结构、软件单元、或硬件结构和软件结构的组合等。本领域技术人员应该很容易意识到,结合本文中所公开的实施例描述的多种功能,装置以及装置中的模块能够以硬件或硬件和计算机软件的结合形式来实现。某个功能究竟以硬件还是计算机软件驱动硬件的方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以在不同的使用场景中,使用不同的装置实现方式来实现前述的方法实施例,对于装置的不同实现方式不应认为超出本申请实施例的范围。
请参见图6,图6是本申请实施例提供的一种数据迁移装置600的结构示意图。该数据迁移装置600可以包括通信模块601和处理模块602。该数据迁移装置600用于实现前述的数据迁移方法,例如图6所示实施例中的数据迁移方法。
在一种可能的实施方式中,通信模块601,用于从源端设备接收目标数据流,所述目标数据流为所述源端设备从源端数据流中读取的,所述目标数据流包括多条数据,所述多条数据包括所述源端数据库的日志文件中记录的需要按照时序执行的数据;
处理模块602,用于将读取到的所述目标数据流拆分为多个数据流,其中,所述多个数据流中的每个数据流包括具有关联关系的数据;
所述处理模块602,还用于根据所述关联关系将所述多个数据流中每个数据流包括的数据分别分配给与所述每个数据流对应的写入端,由所述每个数据流对应的写入端将所述每个数据流包含数据写入目的端数据库。
在一种可能的实现中,所述多个数据流包括第一数据流和第二数据,其中,所述第一数据流所包括的数据之间具有第一关联关系,所述第一关联关系用于表明所述第一数据流所包含的数据需要与从所述源端数据库读取到的操作顺序保持一致,所述第二数据流包括所述目标数据流中除去具有所述第一关联关系的数据之外的数据。
在另一种可能的实现中,所述多条数据中的每条数据携带有根据所述每条数据对应的主键、表名、事务唯一编码ID或者自定义通用唯一识别码UUID中的一项或多项所确定的标签。
在又一种可能的实施方式中,处理模块602具体用于:
根据所述多条数据中每条数据对应的主键和事务,将所述目标数据流拆分为具有第一关联关系的第一数据流和不具有所述第一关联关系的第二数据流,其中,所述第一关联关系用于反映所述第一数据流所包括的数据的主键和事务之间是关联的。
在一种可能的实现中,所述处理模块602具体用于:
根据所述多条数据中每条数据对应的事务从所述目标数据流中确定属于同一事务的数据;
将属于所述同一事务的数据中具有相同主键的数据划分为具有所述第一关联关系的第一数据流;
将所述目标数据流中不属于所述同一事务和/或不具有所述相同主键的数据划分为第二数据流。
在又一种可能的实现中,所述处理模块602具体用于:
将具有所述第一关联关系的第一数据流所包括的数据分配给第一写入端,由所述第一写入端将所述第一数据流所包括的数据写入目的端数据库;
将所述第二数据流所包括的数据分配给除所述第一写入端以外的其他写入端,由所述其他写入端将所述第二数据流所包括的数据分别写入所述目的端数据库。
作为一种可能的设计,所述目标数据流为对所述源端数据库的日志文件进行分析后得到的变化数据捕捉流CDC流。
图7所示为本申请实施例提供的一种计算设备70的结构示意图。计算设备70是具有计算能力的设备,这里的设备可以是实体的设备,例如控制器、处理器、服务器(如机架式服务器)、主机等,也可能是虚拟的设备,例如虚拟机、容器等。
如图7所示,计算设备70包括:处理器702和存储器701,可选包含总线704、通信接口703。处理器702和存储器701等之间通过总线704通信。应理解,本申请不限定计算设备70中的处理器、存储器的个数。
存储器701用于提供存储空间,存储空间中可选存储应用数据、用户数据、操作系统和计算机程序等。存储器701可以包括易失性存储器(volatile memory),例如随机存取存储器(random access memory,RAM)。存储器701还可以包括非易失性存储器(non-volatile memory),例如只读存储器(read-only memory,ROM),快闪存储器,机械硬盘(hard disk drive,HDD)或固态硬盘(solid state drive,SSD)等。
处理器702是进行运算的模块,可以包括控制器(例如存储控制器)、中央处理器(central processing unit,CPU)、微图形处理器(graphics processing unit,GPU)、微处理器(micro processor,MP)、数字信号处理器(digital signal processor,DSP)、协处理器(协助中央处理器完成相应处理和应用)、专用集成电路(Application SpecificIntegrated Circuit,ASIC)、微控制单元(Microcontroller Unit,MCU)、虚拟机、容器等中的任意一种或多种。
通信接口703用于为所述至少一个处理器提供信息输入或者输出。和/或,所述通信接口703可以用于接收外部发送的数据和/或向外部发送数据。通信接口703可以为包括诸如以太网电缆等的有线链路接口,也可以是无线链路(Wi-Fi、蓝牙、通用无线传输及其他无线通信技术等)接口。可选的,通信接口703还可以包括与接口耦合的发射器(如射频发射器、天线等),或者接收器等。
总线704可以是外设部件互连标准(peripheral component interconnect,PCI)总线或扩展工业标准结构(extended industry standard architecture,EISA)总线等。总线可以分为地址总线、数据总线、控制总线等。为便于表示,图7中仅用一条线表示,但并不表示仅有一根总线或一种类型的总线。总线704可包括在计算设备70各个部件(例如,存储器701、处理器702、通信接口703)之间传送信息的通路。
本申请实施例中,存储器701存储有可执行的指令,处理器702执行该可执行的指令以实现前述的数据迁移方法,例如图6等实施例中的数据迁移方法。也即,存储器701上存有用于执行数据迁移方法的指令。
本申请实施例还提供一种计算设备集群,该计算设备集群包含至少一个计算设备70,每个计算设备70包括处理器702和存储器701;
至少一个计算设备70的处理器702用于执行所述至少一个计算设备70的存储器701中存储的指令,以使得计算设备集群实现前述的数据迁移方法,例如图6等实施例中的数据迁移方法。可选的,存储器上存有用于执行数据迁移方法的指令。
本申请实施例提供一种计算机可读存储介质,所述计算机可读存储介质中存储有指令,当所述指令在至少一个处理器上运行时,实现前述的数据迁移方法,例如图6实施例中的数据迁移方法。
其中,所述计算机可读存储介质可以是计算设备能够存储的任何可用介质,或者是包含一个或多个可用介质的数据中心等数据存储设备。所述计算机可读存储介质可以是磁性介质,(例如,软盘、硬盘、磁带)、光介质(例如,DVD)、或者半导体介质(例如固态硬盘)等。
本申请提供了一种计算机程序产品,计算机程序产品包括计算机指令,当所述指令在至少一个处理器上运行时,实现前述的数据迁移方法,例如图6实施例中的数据迁移方法。
可选的,该计算机程序产品可以为一个软件安装包或镜像包,在需要使用前述方法的情况下,可以下载该计算机程序产品并在计算设备上执行该计算机程序产品。
本申请实施例中,“示例性的”或者“例如”等词用于表示作例子、例证或说明。本申请中被描述为“示例性的”或者“例如”的任何实施例或设计方案不应被解释为比其他实施例或设计方案更优选或更具优势。确切而言,使用“示例性的”或者“例如”等词旨在以具体方式呈现相关概念。
本申请中实施例提到的“至少一个”是指一个或者多个,“多个”是指两个或两个以上。“以下至少一项(个)”或其类似表达,是指的这些项中的任意组合,包括单项(个)或复数项(个)的任意组合。例如,a、b、或c中的至少一项(个),可以表示:a、b、c、(a和b)、(a和c)、(b和c)、或(a和b和c),其中a、b、c可以是单个,也可以是多个。“和/或”,描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A、同时存在A和B、单独存在B这三种情况,其中A、B可以是单数或者复数。字符“/”一般表示前后关联对象是一种“或”的关系。
以及,除非有相反的说明,本申请实施例使用“第一”、“第二”等序数词是用于对多个对象进行区分,不用于限定多个对象的顺序、时序、优先级或者重要程度。例如,第一存储设备和第二存储设备,只是为了便于描述,而并不是表示第一存储设备和第二存储设备的装置结构、部署顺序、重要程度等的不同。
本领域普通技术人员可以理解,实现上述实施例的全部或部分步骤可以通过硬件来完成,也可以通过程序来指令相关的硬件完成,所述的程序可以存储于一种计算机可读存储介质中,上述提到的存储介质可以是只读存储器,磁盘或光盘等。
最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的保护范围。
Claims (24)
1.一种数据迁移方法,其特征在于,所述方法包括:
从源端数据库中读取目标数据流,其中,所述目标数据流包括多条数据,所述多条数据包括所述源端数据库的日志文件中记录的需要按照时序执行的数据;
将读取到的所述目标数据流拆分为多个数据流,其中,所述多个数据流中的每个数据流包括具有关联关系的数据;
根据所述关联关系将所述多个数据流中每个数据流包括的数据分别分配给与所述每个数据流对应的写入端,由所述每个数据流对应的写入端将所述每个数据流包含数据写入目的端数据库。
2.根据权利要求1所述的方法,其特征在于,所述多个数据流包括第一数据流和第二数据,其中,所述第一数据流所包括的数据之间具有第一关联关系,所述第一关联关系用于表明所述第一数据流所包含的数据需要与从所述源端数据库读取到的操作顺序保持一致,所述第二数据流包括所述目标数据流中除去具有所述第一关联关系的数据之外的数据。
3.根据权利要求1或2所述的方法,其特征在于,所述多条数据中的每条数据携带有根据所述每条数据对应的主键、表名、事务唯一编码ID或者自定义通用唯一识别码UUID中的一项或多项所确定的标签。
4.根据权利要求3所述的方法,其特征在于,所述将所述目标数据流拆分为多个数据流,包括:
根据所述多条数据中每条数据对应的主键和事务,将所述目标数据流拆分为具有第一关联关系的第一数据流和不具有所述第一关联关系的第二数据流,其中,所述第一关联关系用于反映所述第一数据流所包括的数据的主键和事务之间是关联的。
5.根据权利要求4所述的方法,其特征在于,所述根据所述多条数据中每条数据对应的主键和事务,将所述数据流拆分为具有第一关联关系的第一数据流和不具有所述第一关联关系的第二数据流,包括:
根据所述多条数据中每条数据对应的事务从所述目标数据流中确定属于同一事务的数据;
将属于所述同一事务的数据中具有相同主键的数据划分为具有所述第一关联关系的第一数据流;
将所述目标数据流中不属于所述同一事务和/或不具有所述相同主键的数据划分为第二数据流。
6.根据权利要求2至5任一项所述的方法,其特征在于,所述根据所述关联关系将所述多个数据流中每个数据流包括的数据分别分配给与所述每个数据流对应的数据写入组件,由所述每个数据流对应的数据写入组件将所述每个数据流包含数据写入目的端数据库,包括:
将具有所述第一关联关系的第一数据流所包括的数据分配给第一写入端,由所述第一写入端将所述第一数据流所包括的数据写入目的端数据库;
将所述第二数据流所包括的数据分配给除所述第一写入端以外的其他写入端,由所述其他写入端将所述第二数据流所包括的数据分别写入所述目的端数据库。
7.根据权利要求1至6任一项所述的方法,其特征在于,所述目标数据流包括对所述源端数据库的日志文件进行分析后得到的变化数据捕捉流CDC流。
8.一种数据迁移系统,其特征在于,包括数据迁移装置,所述数据迁移装置包括数据读取组件、消息中间件和数据写入组件,所述数据写入组件包括多个写入端,其中:
所述数据读取组件,用于从所述源端数据库中读取目标数据流,并向所述消息中间件发送所述目标数据流,所述目标数据流包括多条数据,所述多条数据包括所述源端数据库的日志文件中记录的需要按照时序执行的数据;
所述消息中间件,用于存储来所述数据读取组件的所述目标数据流;
所述数据写入组件,用于从所述消息中间件中读取所述目标数据流,并将所述目标数据流拆分为多个数据流,其中,所述多个数据流中每个数据流中包括具有关联关系的数据;
所述数据写入组件,还用于根据所述关联关系将所述多个数据流中每个数据流包括的数据分别分配给与所述每个数据流对应的写入端,由所述每个数据流对应的写入端将所述每个数据流包含数据写入目的端数据库。
9.根据权利要求8所述的系统,其特征在于,所述多个数据流包括第一数据流和第二数据,其中,所述第一数据流所包括的数据之间具有第一关联关系,所述第一关联关系用于表明所述第一数据流所包含的数据需要与从所述源端数据库读取到的操作顺序保持一致,所述第二数据流包括所述目标数据流中除去具有所述第一关联关系的数据之外的数据。
10.根据权利要求8或9所述的系统,其特征在于,所述数据读取组件还用于根据所述多条数据中的每条数据对应的主键、表名、事务唯一编码ID或者自定义通用唯一识别码UUID中的一项或多项为所述每条数据打上标签。
11.根据权利要求10所述的系统,其特征在于,所述数据写入组件,具体用于:
根据所述多条数据中每条数据对应的主键和事务,将所述目标数据流拆分为具有第一关联关系的第一数据流和不具有所述第一关联关系的第二数据流,其中,所述第一关联关系用于反映所述第一数据流所包括的数据的主键和事务之间是关联的。
12.根据权利要求11所述的系统,其特征在于,所述数据写入组件,具体用于:
根据所述多条数据中每条数据对应的事务从所述数据流中确定属于同一事务的数据;
将属于所述同一事务的数据中具有相同主键的数据划分为具有所述第一关联关系的第一数据流;
将所述目标数据流中不属于所述同一事务和/或不具有所述相同主键的数据划分为第二数据流。
13.根据权利要求8至12任一项所述的系统,其特征在于,所述数据写入组件,具体用于:
将具有所述第一关联关系的第一数据流所包括的数据分配给第一写入端,由所述第一写入端将所述第一数据流所包括的数据写入目的端数据库;
将所述第二数据流所包括的数据分配给除所述第一写入端以外的其他写入端,由所述其他写入端将所述第二数据流所包括的数据分别写入所述目的端数据库。
14.根据权利要求8至13任一项所述的系统,其特征在于,所述目标数据流为对所述源端数据库的日志文件进行分析后得到的变化数据捕捉流CDC流。
15.一种数据迁移装置,其特征在于,包括:
通信模块,用于从源端数据库中读取目标数据流,其中,所述目标数据流包括多条数据,所述多条数据包括所述源端数据库的日志文件中记录的需要按照时序执行的数据;
处理模块,用于将读取到的所述目标数据流拆分为多个数据流,其中,所述多个数据流中每个数据流中包括具有关联关系的数据;
所述处理模块,还用于根据所述关联关系将所述多个数据流中每个数据流包括的数据分别分配给与所述每个数据流对应的写入端,由所述每个数据流对应的写入端将所述每个数据流包含数据写入目的端数据库。
16.根据权利要求15所述的装置,其特征在于,所述多个数据流包括第一数据流和第二数据,其中,所述第一数据流所包括的数据之间具有第一关联关系,所述第一关联关系用于表明所述第一数据流所包含的数据需要与从所述源端数据库读取到的操作顺序保持一致,所述第二数据流包括所述目标数据流中除去具有所述第一关联关系的数据之外的数据。
17.根据权利要求16所述的装置,其特征在于,所述多条数据中的每条数据携带有根据所述每条数据对应的主键、表名、事务唯一编码ID或者自定义通用唯一识别码UUID中的一项或多项所确定的标签。
18.根据权利要求17所述的装置,其特征在于,所述处理模块具体用于:
根据所述多条数据中每条数据对应的主键和事务,将所述目标数据流拆分为具有第一关联关系的第一数据流和不具有所述第一关联关系的第二数据流,其中,所述第一关联关系用于反映所述第一数据流所包括的数据的主键和事务之间是关联的。
19.根据权利要求18所述的装置,其特征在于,所述处理模块具体用于:
根据所述多条数据中每条数据对应的事务从所述目标数据流中确定属于同一事务的数据;
将属于所述同一事务的数据中具有相同主键的数据划分为具有所述第一关联关系的第一数据流;
将所述目标数据流中不属于所述同一事务和/或不具有所述相同主键的数据划分为第二数据流。
20.根据权利要求15至19任一项所述的装置,其特征在于,所述处理模块具体用于:
将具有所述第一关联关系的第一数据流所包括的数据分配给第一写入端,由所述第一写入端将所述第一数据流所包括的数据写入目的端数据库;
将所述第二数据流所包括的数据分配给除所述第一写入端以外的其他写入端,由所述其他写入端将所述第二数据流所包括的数据分别写入所述目的端数据库。
21.根据权利要求15至20任一项所述的装置,其特征在于,所述目标数据流为对所述源端数据库的日志文件进行分析后得到的变化数据捕捉流CDC流。
22.一种计算设备,其特征在于,包括:包括处理器和存储器;
所述处理器用于执行所述存储器中存储的指令,以使得所述计算设备实现如权利要求1-7任一项所述的方法。
23.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质中存储有程序指令,当所述程序指令在计算机或处理器上运行时,实现权利要求1-7任一所述的方法。
24.一种计算机程序产品,其特征在于,所述计算机程序产品包括程序指令,当所述程序指令在计算机或处理器上运行时,权利要求1-7任一项所述的方法得以实现。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310539466.8A CN116737690A (zh) | 2023-05-12 | 2023-05-12 | 数据迁移方法、系统及相关装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310539466.8A CN116737690A (zh) | 2023-05-12 | 2023-05-12 | 数据迁移方法、系统及相关装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN116737690A true CN116737690A (zh) | 2023-09-12 |
Family
ID=87912370
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202310539466.8A Pending CN116737690A (zh) | 2023-05-12 | 2023-05-12 | 数据迁移方法、系统及相关装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN116737690A (zh) |
-
2023
- 2023-05-12 CN CN202310539466.8A patent/CN116737690A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110247984B (zh) | 业务处理方法、装置及存储介质 | |
CN110119304B (zh) | 一种中断处理方法、装置及服务器 | |
CN106095622A (zh) | 数据备份方法及装置 | |
CN106855834B (zh) | 一种数据备份方法、装置和系统 | |
CN111881116A (zh) | 数据迁移方法、数据迁移系统、计算机系统和存储介质 | |
CN113032099B (zh) | 云计算节点、文件管理方法及装置 | |
CN110673959A (zh) | 用于处理任务的系统、方法和装置 | |
US20210132860A1 (en) | Management of multiple physical function non-volatile memory devices | |
CN115408107A (zh) | 一种虚拟机的热迁移方法、设备、系统及存储介质 | |
CN112860412B (zh) | 业务数据处理方法、装置、电子设备及存储介质 | |
CN111444148B (zh) | 基于MapReduce的数据传输方法和装置 | |
CN116089477B (zh) | 分布式训练方法及系统 | |
CN106933646B (zh) | 一种创建虚拟机的方法及装置 | |
CN116303126B (zh) | 缓存、数据的处理方法及电子设备 | |
CN112631994A (zh) | 数据迁移方法及系统 | |
CN112052104A (zh) | 基于多机房实现的消息队列的管理方法及电子设备 | |
CN116737690A (zh) | 数据迁移方法、系统及相关装置 | |
CN112764897B (zh) | 任务请求的处理方法、装置、系统及计算机可读存储介质 | |
CN111399753B (zh) | 写入图片的方法和装置 | |
CN113296972A (zh) | 一种信息的注册方法、计算设备及存储介质 | |
CN117724874B (zh) | 用于管理共享接收队列的方法、计算机设备及介质 | |
CN115103020B (zh) | 数据迁移处理方法和装置 | |
CN112041817A (zh) | 用于管理借助于加速器装置的硬件加速的请求的方法和节点 | |
US11379147B2 (en) | Method, device, and computer program product for managing storage system | |
CN116991331B (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 |