CN111666331A - 复制数据的方法、装置及系统 - Google Patents
复制数据的方法、装置及系统 Download PDFInfo
- Publication number
- CN111666331A CN111666331A CN201910169242.6A CN201910169242A CN111666331A CN 111666331 A CN111666331 A CN 111666331A CN 201910169242 A CN201910169242 A CN 201910169242A CN 111666331 A CN111666331 A CN 111666331A
- Authority
- CN
- China
- Prior art keywords
- data
- database
- metadata
- intermediate log
- log
- 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/27—Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
- G06F16/275—Synchronous replication
Landscapes
- Engineering & Computer Science (AREA)
- Databases & Information Systems (AREA)
- Theoretical Computer Science (AREA)
- Computing Systems (AREA)
- Data Mining & Analysis (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本申请提供了一种复制数据的方法、装置及系统,该方法包括:第一装置从第一数据库获取第一数据和所述第一数据对应的元数据,所述元数据包括所述第一数据对应的表定义和所述第一数据对应的数据冲突处理策略;所述第一装置生成中间日志,所述中间日志包括所述第一数据和所述元数据;所述第一装置将所述中间日志传送至第二装置,本申请实施例中的方法能够在不预先配置目的端数据库的情况下,实现不同数据库之间的数据复制。
Description
技术领域
本申请涉及通信领域,并且更具体地,涉及一种复制数据的方法、装置及系统。
背景技术
为了满足业务的连续性,或者对关键数据进行备份,数据存储系统(data storagesystem,DSS)之间经常需要进行数据复制和数据同步。
数据复制技术一般基于数据存储系统的重做日志(redo log)进行。从源端数据存储系统把数据修改操作从重做日志里面抽取出来,传输到目的端数据存储系统,并将该数据修改操作重演到目的端数据存储系统,从而实现源端数据存储系统与目的端数据存储系统的同步。
但在进行复制之前,需要在目的端数据库预先配置源端数据库的表结构,并且在源端数据库的表结构发生变化后,也需要将表结构更改信息同步到目的端数据库。
发明内容
本申请提供一种复制数据的方法、装置及系统,能够在不预先配置目的端数据库的情况下,实现不同数据库之间的数据复制。
第一方面,提供了一种复制数据的方法,包括:第一装置从第一数据库获取第一数据和所述第一数据对应的元数据,所述元数据包括所述第一数据对应的表定义和所述第一数据对应的数据冲突处理策略;所述第一装置生成中间日志,所述中间日志包括所述第一数据和所述元数据;所述第一装置将所述中间日志传送至第二装置。
根据本申请实施例中的方法,由于所述中间日志包括第一数据、所述第一数据对应的表定义和所述第一数据对应的数据冲突处理策略,因此,所述第二数据库无需与所述第一数据库进行通信,就可以将所述第一数据库中数据复制至所述第二数据库,即能够在不预先配置目的端数据库的情况下,实现不同数据库之间的数据复制。
在一些可能的实现方式中,所述第一装置生成中间日志,包括:所述第一装置根据所述第一数据确定第二数据;所述第一装置基于所述第二数据和所述元数据生成所述中间日志,所述中间日志包括所述第二数据和所述元数据。
在一些可能的实现方式中,所述中间日志中的数据对应一个或多个事务,每个所述事务对应一个记录单元,每个所述记录单元包括基于行的数据和基于语句的数据。
第二方面,提供了一种复制数据的方法,包括:第二装置获取中间日志,所述中间日志包括第一数据和所述第一数据对应的元数据,所述元数据包括所述第一数据对应的表定义和所述第一数据对应的数据冲突处理策略,其中,所述第一数据是从第一数据库中获取的数据;所述第二装置基于所述元数据,将所述第一数据写入第二数据库。
根据本申请实施例中的方法,由于所述中间日志包括第一数据、所述第一数据对应的表定义和所述第一数据对应的数据冲突处理策略,因此,所述第二数据库无需与所述第一数据库进行通信,就可以将所述第一数据库中数据复制至所述第二数据库,即能够在不预先配置目的端数据库的情况下,实现不同数据库之间的数据复制。
在一些可能的实现方式中,所述中间日志包括第二数据和所述元数据,其中,所述第二数据是根据所述第一数据确定的。
在一些可能的实现方式中,所述中间日志中的数据对应一个或多个事务,每个所述事务对应一个记录单元,每个所述记录单元包括基于行的数据和基于语句的数据。
在一些可能的实现方式中,所述第二装置基于所述元数据,将所述中间日志中的数据写入第二数据库,包括:所述第二装置基于所述元数据,生成所述第一数据对应的表结构;所述第二装置按照所述表结构,将所述中间日志中的数据写入第二数据库。
在一些可能的实现方式中,所述方法还包括:在未能成功将所述中间日志中的数据写入所述第二数据库时,所述第二装置根据所述表结构,输出将所述中间日志中的数据写入所述第二数据库失败的原因。
在一些可能的实现方式中,所述第一数据库的类型与所述第二数据库的类型不同。
第三方面,提供了一种复制数据的装置,包括:获取模块,用于从第一数据库获取第一数据和所述第一数据对应的元数据,所述元数据包括所述第一数据对应的表定义和所述第一数据对应的数据冲突处理策略;处理模块,用于生成中间日志,所述中间日志包括所述第一数据和所述元数据;发送模块,用于将所述中间日志传送至第二装置。
根据本申请实施例中的装置,由于所述中间日志包括第一数据、所述第一数据对应的表定义和所述第一数据对应的数据冲突处理策略,因此,所述第二数据库无需与所述第一数据库进行通信,就可以将所述第一数据库中数据复制至所述第二数据库,即能够在不预先配置目的端数据库的情况下,实现不同数据库之间的数据复制。
在一些可能的实现方式中,所述处理模块具体用于:根据所述第一数据确定第二数据;基于所述第二数据和所述元数据生成所述中间日志,所述中间日志包括所述第二数据和所述元数据。
在一些可能的实现方式中,所述中间日志中的数据对应一个或多个事务,每个所述事务对应一个记录单元,每个所述记录单元包括基于行的数据和基于语句的数据。
第四方面,提供了一种复制数据的装置,包括:获取模块,用于获取中间日志,所述中间日志包括第一数据和所述第一数据对应的元数据,所述元数据包括所述第一数据对应的表定义和所述第一数据对应的数据冲突处理策略,其中,所述第一数据是从第一数据库中获取的数据;处理模块,用于基于所述元数据,将所述第一数据写入第二数据库。
根据本申请实施例中的装置,由于所述中间日志包括第一数据、所述第一数据对应的表定义和所述第一数据对应的数据冲突处理策略,因此,所述第二数据库无需与所述第一数据库进行通信,就可以将所述第一数据库中数据复制至所述第二数据库,即能够在不预先配置目的端数据库的情况下,实现不同数据库之间的数据复制。
在一些可能的实现方式中,所述中间日志包括第二数据和所述元数据,其中,所述第二数据是根据所述第一数据确定的。
在一些可能的实现方式中,所述中间日志中的数据对应一个或多个事务,每个所述事务对应一个记录单元,每个所述记录单元包括基于行的数据和基于语句的数据。
在一些可能的实现方式中,所述处理模块具体用于:基于所述元数据,生成所述第一数据对应的表结构;按照所述表结构,将所述中间日志中的数据写入第二数据库。
在一些可能的实现方式中,所述处理模块还用于:在未能成功将所述中间日志中的数据写入所述第二数据库时,根据所述表结构,输出将所述中间日志中的数据写入所述第二数据库失败的原因。
在一些可能的实现方式中,所述第一数据库的类型与所述第二数据库的类型不同。
第五方面,提供了一种复制数据的装置,该装置包括:收发器和处理器,其中,处理器用于从存储器中调用并运行所述存储器中存储的指令,执行上述第一方面或第一方面的任一种可能的实现方式中的方法。
可选地,所述数据传输的装置,还包括存储器,所述存储器用于存储指令。
可选地,所述处理器为一个或多个,所述存储器为一个或多个。
在具体实现过程中,存储器可以为非瞬时性(non-transitory)存储器,例如只读存储器(read only memory,ROM),其可以与处理器集成在同一块芯片上,也可以与处理器分离设置,本申请实施例对存储器的类型以及存储器与处理器的设置方式不做限定。
第六方面,提供了一种复制数据的装置,该装置包括:收发器和处理器,其中,处理器用于从存储器中调用并运行所述存储器中存储的指令,执行上述第二方面或第二方面的任一种可能的实现方式中的方法。
可选地,所述数据传输的装置,还包括存储器,所述存储器用于存储指令。
可选地,所述处理器为一个或多个,所述存储器为一个或多个。
在具体实现过程中,存储器可以为非瞬时性(non-transitory)存储器,例如只读存储器(read only memory,ROM),其可以与处理器集成在同一块芯片上,也可以与处理器分离设置,本申请实施例对存储器的类型以及存储器与处理器的设置方式不做限定。
第七方面,提供了一种复制数据的系统,该系统包括第三方面至第六方面中一个或多个所述的装置。
第八方面,提供了一种计算机程序产品,所述计算机程序产品包括:计算机程序代码,当所述计算机程序代码被计算机运行时,使得所述计算机执行上述各方面中的方法。
第九方面,提供了一种计算机可读介质,用于存储计算机程序,该计算机程序包括用于执行上述各方面中的方法的指令。
根据本申请实施例中的方法,由于所述中间日志包括第一数据、所述第一数据对应的表定义和所述第一数据对应的数据冲突处理策略,因此,所述第二数据库无需与所述第一数据库进行通信,就可以将所述第一数据库中数据复制至所述第二数据库,即能够在不预先配置目的端数据库的情况下,实现不同数据库之间的数据复制。
附图说明
图1是可以应用本申请实施例的方法的一个场景示意图。
图2是本申请一个实施例的复制数据的方法的示意性流程图。
图3是本申请一个实施例的中间日志的格式的示意图。
图4是本申请另一个实施例的复制数据的方法的示意性流程图。
图5是本申请一个实施例的复制数据的装置的示意性结构图。
图6是本申请另一个实施例的复制数据的装置的示意性结构图。
图7是本申请另一个实施例的复制数据的装置的示意性结构图。
具体实施方式
首先介绍一下本申请实施例中用到的术语。
数据库(database):按照预定的数据结构来组织、存储和/或管理数据的仓库。
数据存储系统(data storage system,DSS):指计算机中由存放程序和数据的各种存储设备、控制部件及管理信息调度的设备(硬件)和算法(软件)所组成的系统。数据存储系统可以对数据库的存储、数据库的事务(transaction)以及数据修改操作进行管理。
数据复制(data replication):指利用通信技术和/或计算机技术远程实现多个数据库之间的数据复制。应理解,这里的数据复制也可以是指多个数据存储系统之间的数据复制。
重做日志(redo log):每当数据库有操作执行前,对数据进行更改时,需要先将该操作写入重做日志。这样当断电或者发生故障,导致后续操作无法完成时,系统在恢复后可以继续完成这些之前对数据库进行的更改。
下面将结合附图,对本申请中的技术方案进行描述。
图1是适用于本申请的复制数据的方法的一个场景示意图。该场景中可以包括数据库(database)110、复制组件(replicator)120和数据库130,其中,数据库110可以为源端数据库(source database),数据库130可以为目的端数据库(target database),数据库130的数量可以为一个或者多个,本申请实施例对此并不作限定。
数据库110和数据库130可以是集群(cluster)内的两个数据库,或者,数据库110和数据库130可以是集群(cluster)间的两个数据库,本申请实施例对此并不限定。
复制组件120也可以称为复制引擎、复制工具或复制装置等,本申请实施例对此并不作限定。复制组件120可以包括抽取组件(extractor)121和重演组件(applier)122,
复制组件可以从源端数据库中抽取数据,对抽取的数据进行解析、转换、过滤、封装等操作,以一定的数据存储格式存放于中间日志文件中,随后将该中间日志文件传输到目的端数据库,并将该数据修改操作重演到目的端数据库,从而实现源端数据库与目的端数据库之间的数据复制。
应理解,本申请实施例中,第一装置可以是图1中的复制组件120。具体地,第一装置可以是抽取组件121,第一装置可以部署在数据库110。类似地,本申请实施例中,第二装置可以是图1中的复制组件120。具体地,第二装置可以是重演组件122,第二置可以部署在数据库130。
可选地,第一装置和第二装置可以部署在一起。例如,第一装置和第二装置可以同时部署在数据库110,或者第一装置和第二装置可以同时部署在数据库130,或者第一装置和第二装置可以同时部署在数据库110和数据库130以外的其他装置或模块上,本申请实施例对此并不限定。
在本申请实施例中,第一装置或第二装置包括硬件层、运行在硬件层之上的操作系统层,以及运行在操作系统层上的应用层。该硬件层包括中央处理器(centralprocessing unit,CPU)、内存管理单元(memory management unit,MMU)和内存(也称为主存)等硬件。该操作系统可以是任意一种或多种通过进程(process)实现业务处理的计算机操作系统,例如,Linux操作系统、Unix操作系统、Android操作系统、iOS操作系统或windows操作系统等。该应用层包含浏览器、通讯录、文字处理软件、即时通信软件等应用。并且,本申请实施例并未对本申请实施例提供的方法的执行主体的具体结构特别限定,只要能够通过运行记录有本申请实施例的提供的方法的代码的程序,以根据本申请实施例提供的方法进行图像处理即可,例如,本申请实施例提供的方法的执行主体可以是终端设备或装置,或者,是终端设备或装置中能够调用程序并执行程序的功能模块。
另外,本申请的各个方面或特征可以实现成方法、装置或使用标准编程和/或工程技术的制品。本申请中使用的术语“制品”涵盖可从任何计算机可读器件、载体或介质访问的计算机程序。例如,计算机可读介质可以包括,但不限于:磁存储器件(例如,硬盘、软盘或磁带等),光盘(例如,压缩盘(compact disc,CD)、数字通用盘(digital versatile disc,DVD)等),智能卡和闪存器件(例如,可擦写可编程只读存储器(erasable programmableread-only memory,EPROM)、卡、棒或钥匙驱动器等)。另外,本文描述的各种存储介质可代表用于存储信息的一个或多个设备和/或其它机器可读介质。术语“机器可读介质”可包括但不限于,无线信道和能够存储、包含和/或承载指令和/或数据的各种其它介质。
目前,在对多个数据库进行数据复制之前,需要在目的端数据库预先配置源端数据库的表结构,即现有技术中并不能在对不同数据库之间进行数据复制时实现零配置对接。
为了解决上述问题,本申请提供一种复制数据的方法,能够在不预先配置目的端数据库的情况下,实现不同数据库之间的数据复制。。
为方便说明,图2中以一个目的端数据库为例进行描述,同时,图2中将源端数据库称为第一数据库,将目的端数据库称为第二数据库。应理解,本申请中的方法不限于只有一个目的端数据库,本申请实施例对目的端数据库的个数并不限定。
图2是本申请一个实施例的复制数据的方法的示意性流程图。应理解,图2示出的方法的步骤或操作,但这些步骤或操作仅是示例,本申请实施例还可以执行其他操作或者图2中的各个操作的变形,或者,并不是所有步骤都需要执行,或者,这些步骤可以按照其他顺序执行。
S210、第一装置从第一数据库获取第一数据和所述第一数据对应的元数据,所述元数据包括所述第一数据对应的表定义和所述第一数据对应的数据冲突处理策略。
其中,所述第一装置可以为图1中的复制组件120或抽取组件121。
可选地,所述第一装置可以从所述第一数据库的重做日志(redo log)中抽取所述第一数据。这里的所述第一数据可以理解为数据修改操作。
可选地,所述第一数据库可以为MySQL、Elastic Search、Oracle、Hadoop或Kafka等,本申请实施例对所述第一数据库的类型并不限定。
S220、所述第一装置生成中间日志,所述中间日志包括所述第一数据和所述元数据。
可选地,所述中间日志也可以称为通用事务日志文件(universal transcationalfile,
UTF)。或者,所述中间日志也可以称为事务历史日志(transaction history log,THL),本申请实施例对此并不限定。
为便于理解,下面统一将上述日志称为中间日志或UTF。
在一种可能的实现方式中,所述中间日志中的数据(即所述第一数据)可以对应一个或多个事务,每个所述事务可以对应一个记录单元,每个所述记录单元可以包括基于行的数据和基于语句的数据。
可选地,所述中间日志可以包括UTF元数据(metadata)和至少一个通用事务日志事件(universal transcational event,UTE)。
例如,所述UTF的格式可以如图3所示。
可选地,所述UTF元数据可以包括业务数据元数据定义(data definitionlanguage,
DDL)和数据冲突策略定义(conflict policy,CP)。
具体地,所述DDL可以包括所述第一数据对应的表定义,所述CP可以包括所述第一数据的数据类型的定义。其中,所述DDL也可以包括所述第一数据对应的表的约束关系,所述CP也可以包括所述第一数据的数据一致性要求。
可选地,所述UTE可以是每个所述事务对应的记录单元。
例如,所述UTE可以包括以事务为粒度和数据信息,每个所述UTE可以对应一个事务。具体地,每个所述UTE可以包括一个能够唯一标识所述UTE的标识(identification,ID)。
可选地,所述UTE可以包括UTE头(header)部分、UTE元数据(metadata)部分和数据(data)部分。例如,对于关系数据库而言,如图3所示,data部分中可以包括基于语句的数据(statement data)和基于行的数据(row data)。
在一种可能的实现方式中,所述第一装置生成中间日志,可以包括:所述第一装置根据所述第一数据确定第二数据;所述第一装置基于所述第二数据和所述元数据生成所述中间日志,所述中间日志包括所述第二数据和所述元数据。
可选地,所述第一装置根据所述第一数据确定第二数据可以是指:所述第一装置对所述第一数据进行解析、转换、过滤、封装等操作,以得到所述第一数据中所述第二数据库感兴趣的部分,即所述第二数据。具体方法可以参照现有技术,这里不再赘述。
S230、所述第一装置将所述中间日志传送至第二装置。
在本申请实施例中,所述第一装置将所述中间日志传送至第二装置的方法可以参考现有技术,本申请对此不再赘述。
S240、第二装置获取中间日志,所述中间日志包括第一数据和所述第一数据对应的元数据,所述元数据包括所述第一数据对应的表定义和所述第一数据对应的数据冲突处理策略。
其中,所述第一数据是从第一数据库中获取的数据。
可选地,所述中间日志可以包括第二数据和所述元数据。其中,所述第二数据可以是根据所述第一数据确定的,所述第二数据可以是所述第一装置对所述第一数据进行解析、转换、过滤、封装等操作后得到的。
S250、所述第二装置基于所述元数据,将所述第一数据写入第二数据库。
可选地,所述第二数据库可以为MySQL、Elastic Search、Oracle、Hadoop或Kafka等,本申请实施例对所述第二数据库的类型并不限定。
在一种可能的实现方式中,所述第二装置基于所述元数据,将所述中间日志中的数据写入第二数据库,可以包括:所述第二装置基于所述元数据,生成所述第一数据对应的表结构;所述第二装置按照所述表结构,将所述中间日志中的数据写入第二数据库。
在本申请实施例中,当第一数据库与第二数据库在数据复制的过程中发生冲突时,所述第二装置可以基于所述元数据,解决第一数据库与第二数据库之间的数据一致性问题,从而可以避免在发生冲突时中断第一数据库与第二数据库之间的数据复制。
例如,假设用户(或者也可以是装置或系统)既可以访问第一数据库,也可以访问第二数据库,在T1时刻,用户对第一数据库中的数据A进行B操作,得到数据A’;与此同时,在T2时刻,用户对第二数据库中的数据A进行B操作,得到数据A’。
但是,第一数据库并不知道第二数据库中的数据A已变成数据A’,对于第一数据库来说,第二数据库中的数据A并未发生变化。此时,若将第一数据库的数据复制到第二数据库,可能会因为两侧的数据不一致而发生冲突。
在本申请实施例中,所述第二装置可以基于所述元数据中的数据冲突策略定义,解决第一数据库与第二数据库之间数据不一致的问题,从而避免数据复制发生中断。
例如,若T1时刻早于T2时刻,所述第二装置在将所述第一数据写入第二数据库时,可以基于所述数据冲突策略定义,撤销所述第二数据库中的数据A’的B操作,即将所述第二数据库中的数据A’回退为数据A,此时,所述第二装置可以将所述第一数据写入所述第二数据库,从而避免数据复制发生中断。
再例如,若T2时刻早于T1时刻,在将所述第一数据写入第二数据库时,所述第二装置可以基于所述数据冲突策略定义,撤销所述第二数据库中的数据A’的B操作,即将所述第二数据库中的数据A’回退为数据A,此时,所述第二装置可以将所述第一数据写入所述第二数据库,得到第二数据库中的数据A变为数据A’,从而可以避免数据复制发生中断。
或者,若T2时刻早于T1时刻,在将所述第一数据写入第二数据库时,所述第二装置也可以基于所述数据冲突策略定义,不将数据A’写入第二数据库,此时,所述第二装置可以将所述第一数据中除数据A’的其他数据写入所述第二数据库,得到第二数据库中的数据A变为数据A’,从而可以避免数据复制发生中断。
应理解,上述实施例仅为示例而非限定,本申请实施例中的方法也可以适用于其他的情况,本申请实施例对此并不限定。
可选地,第一数据库和第二数据库中的数据可以基于无冲突可复制数据类型(conflict-free replicated data types,CRDT)进行存储。
在一种可能的实现方式中,在未能成功将所述中间日志中的数据写入所述第二数据库时,所述第二装置可以根据所述表结构,输出将所述中间日志中的数据写入所述第二数据库失败的原因。
例如,在滚动升级时,在第二数据库后,所述第二数据库中的表结构发生变化,此时,若所述第二装置将所述中间日志中的数据写入第二数据库,则会重演失败,所述第二装置可以根据所述表结构,输出重演失败的原因。
可选地,所述第一数据库的类型与所述第二数据库的类型可以不同。
在本申请实施例中,由于所述中间日志包括第一数据、所述第一数据对应的表定义和所述第一数据对应的数据冲突处理策略,因此,所述第二数据库无需与所述第一数据库进行通信,就可以将所述第一数据库中数据复制至所述第二数据库,即能够在不预先配置目的端数据库的情况下,实现不同数据库之间的数据复制。
图4是本申请另一个实施例的复制数据的方法的示意性流程图。应理解,图4示出的方法的步骤或操作,但这些步骤或操作仅是示例,本申请实施例还可以执行其他操作或者图4中的各个操作的变形,或者,并不是所有步骤都需要执行,或者,这些步骤可以按照其他顺序执行。
图4中以3个数据中心(data center,DC)为例进行描述,其中,每个数据中心可以包括一个数据库,数据库1可以为源端数据库,数据库2和数据库3可以为目的端数据库。
例如,数据中心1中可以包括一个MySQL数据库,数据中心2中可以包括一个MySQL数据库,数据中心3中可以包括一个MongoDB数据库,数据中心1中的MySQL数据库可以是源端数据库,数据中心2中的MySQL数据库和数据中心3中的MongoDB数据库可以是目的端数据库。
S410,抽取组件1从数据库1的重做日志中抽取日志数据。例如,MySQL数据库对应的抽取组件1可以为MySQL抽取组件,MySQL数据库对应的重做日志可以为二进制日志(binlog)。
S420,抽取组件1基于从数据库1的重做日志中抽取的日志数据,生成中间日志UTF,所述中间日志中包括所述日志数据和所述日志数据对应的元数据,所述元数据包括所述日志数据对应的表定义和所述日志数据对应的数据冲突处理策略。
S430,重演组件2获取所述中间日志,并解析所述中间日志,基于所述中间日志中的元数据,在所述数据库2中生成所述日志数据对应的表结构。例如,MySQL数据库对应的重演组件2可以为MySQL重演组件。
S440,重演组件2根据所述元数据中的数据冲突处理策略,将所述日志数据写入所述数据库2中。
S450,重演组件3获取所述中间日志,并解析所述中间日志,基于所述中间日志中包括的所述日志数据对应的表定义和所述日志数据对应的数据冲突处理策略,在所述数据库3中生成所述日志数据对应的表结构。例如,MongoDB数据库对应的重演组件3可以为MongoDB重演组件。
S460,重演组件3根据所述元数据中的数据冲突处理策略,将所述日志数据写入所述数据库3中。
图5是本申请实施例的复制数据的装置500的示意性框图。应理解,装置500仅是一种示例。本申请实施例的装置还可包括其他模块或单元,或者包括与图5中的各个模块的功能相似的模块,或者并非要包括图5中的所有模块。
获取模块510,用于从第一数据库获取第一数据和所述第一数据对应的元数据,所述元数据包括所述第一数据对应的表定义和所述第一数据对应的数据冲突处理策略;
处理模块520,用于生成中间日志,所述中间日志包括所述第一数据和所述元数据;
发送模块530,用于将所述中间日志传送至第二装置。
可选地,所述处理模块520具体用于:根据所述第一数据确定第二数据;基于所述第二数据和所述元数据生成所述中间日志,所述中间日志包括所述第二数据和所述元数据。
可选地,所述中间日志中的数据对应一个或多个事务,每个所述事务对应一个记录单元,每个所述记录单元包括基于行的数据和基于语句的数据。
图6是本申请实施例的复制数据的装置600的示意性框图。应理解,装置600仅是一种示例。本申请实施例的装置还可包括其他模块或单元,或者包括与图6中的各个模块的功能相似的模块,或者并非要包括图6中的所有模块。
获取模块610,用于获取中间日志,所述中间日志包括第一数据和所述第一数据对应的元数据,所述元数据包括所述第一数据对应的表定义和所述第一数据对应的数据冲突处理策略,其中,所述第一数据是从第一数据库中获取的数据;
处理模块620,用于基于所述元数据,将所述第一数据写入第二数据库。
可选地,所述中间日志包括第二数据和所述元数据,其中,所述第二数据是根据所述第一数据确定的。
可选地,所述中间日志中的数据对应一个或多个事务,每个所述事务对应一个记录单元,每个所述记录单元包括基于行的数据和基于语句的数据。
可选地,所述处理模块620具体用于:基于所述元数据,生成所述第一数据对应的表结构;按照所述表结构,将所述中间日志中的数据写入第二数据库。
可选地,所述处理模块620还用于:在未能成功将所述中间日志中的数据写入所述第二数据库时,根据所述表结构,输出将所述中间日志中的数据写入所述第二数据库失败的原因。
可选地,所述第一数据库的类型与所述第二数据库的类型不同。
图7是本申请一个实施例的复制数据的装置700的示意性结构图。应理解,图7示出的装置700仅是示例,本申请实施例的装置700还可包括其他模块或单元,或者包括与图7中的各个模块的功能相似的模块。
装置700可以包括一个或多个处理器710、一个或多个存储器720、接收器730和发送器740。接收器730和发送器740可以集成在一起,称为收发器。存储器720用于存储处理器710执行的程序代码。其中,处理器710中可以集成有存储器720,或者处理器710耦合到一个或多个存储器720,用于调取存储器720中的指令。
在一个实施例中,处理器710可以用于实现图5中的获取模块510能够实现的操作或步骤,处理器710可以用于实现图5中的处理模块520能够实现的操作或步骤,发送器740可以用于实现图5中的发送模块530能够实现的操作或步骤。
在另一个实施例中,处理器710可以用于实现图6中的获取模块610能够实现的操作或步骤,处理器710可以用于实现图6中的处理模块620能够实现的操作或步骤。
应理解,本申请实施例中的处理器可以为中央处理单元(central processingunit,CPU),该处理器还可以是其他通用处理器、数字信号处理器(digital signalprocessor,DSP)、专用集成电路(application specific integrated circuit,ASIC)、现成可编程门阵列(field programmable gate array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。
还应理解,本申请实施例中的存储器可以是易失性存储器或非易失性存储器,或可包括易失性和非易失性存储器两者。其中,非易失性存储器可以是只读存储器(read-only memory,ROM)、可编程只读存储器(programmable ROM,PROM)、可擦除可编程只读存储器(erasable PROM,EPROM)、电可擦除可编程只读存储器(electrically EPROM,EEPROM)或闪存。易失性存储器可以是随机存取存储器(random access memory,RAM),其用作外部高速缓存。通过示例性但不是限制性说明,许多形式的随机存取存储器(random accessmemory,RAM)可用,例如静态随机存取存储器(static RAM,SRAM)、动态随机存取存储器(DRAM)、同步动态随机存取存储器(synchronous DRAM,SDRAM)、双倍数据速率同步动态随机存取存储器(double data rate SDRAM,DDR SDRAM)、增强型同步动态随机存取存储器(enhanced SDRAM,ESDRAM)、同步连接动态随机存取存储器(synchlink DRAM,SLDRAM)和直接内存总线随机存取存储器(direct rambus RAM,DR RAM)。
上述实施例,可以全部或部分地通过软件、硬件、固件或其他任意组合来实现。当使用软件实现时,上述实施例可以全部或部分地以计算机程序产品的形式实现。所述计算机程序产品包括一个或多个计算机指令或计算机程序。在计算机上加载或执行所述计算机指令或计算机程序时,全部或部分地产生按照本申请实施例所述的流程或功能。所述计算机可以为通用计算机、专用计算机、计算机网络、或者其他可编程装置。所述计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,例如,所述计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。所述计算机可读存储介质可以是计算机能够存取的任何可用介质或者是包含一个或多个可用介质集合的服务器、数据中心等数据存储设备。所述可用介质可以是磁性介质(例如,软盘、硬盘、磁带)、光介质(例如,DVD)、或者半导体介质。半导体介质可以是固态硬盘。
应理解,本文中术语“和/或”,仅仅是一种描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。另外,本文中字符“/”,一般表示前后关联对象是一种“或”的关系。
应理解,在本申请的各种实施例中,上述各过程的序号的大小并不意味着执行顺序的先后,各过程的执行顺序应以其功能和内在逻辑确定,而不应对本申请实施例的实施过程构成任何限定。
本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请的范围。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统、装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
在本申请所提供的几个实施例中,应该理解到,所揭露的系统、装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。
所述功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(read-only memory,ROM)、随机存取存储器(random access memory,RAM)、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述,仅为本申请的具体实施方式,但本申请的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本申请揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本申请的保护范围之内。因此,本申请的保护范围应以所述权利要求的保护范围为准。
Claims (21)
1.一种复制数据的方法,其特征在于,包括:
第一装置从第一数据库获取第一数据和所述第一数据对应的元数据,所述元数据包括所述第一数据对应的表定义和所述第一数据对应的数据冲突处理策略;
所述第一装置生成中间日志,所述中间日志包括所述第一数据和所述元数据;
所述第一装置将所述中间日志传送至第二装置。
2.根据权利要求1所述的方法,其特征在于,所述第一装置生成中间日志,包括:
所述第一装置根据所述第一数据确定第二数据;
所述第一装置基于所述第二数据和所述元数据生成所述中间日志,所述中间日志包括所述第二数据和所述元数据。
3.根据权利要求1或2所述的方法,其特征在于,所述中间日志中的数据对应一个或多个事务,每个所述事务对应一个记录单元,每个所述记录单元包括基于行的数据和基于语句的数据。
4.一种复制数据的方法,其特征在于,包括:
第二装置获取中间日志,所述中间日志包括第一数据和所述第一数据对应的元数据,所述元数据包括所述第一数据对应的表定义和所述第一数据对应的数据冲突处理策略,其中,所述第一数据是从第一数据库中获取的数据;
所述第二装置基于所述元数据,将所述第一数据写入第二数据库。
5.根据权利要求4所述的方法,其特征在于,所述中间日志包括第二数据和所述元数据,其中,所述第二数据是根据所述第一数据确定的。
6.根据权利要求4或5所述的方法,其特征在于,所述中间日志中的数据对应一个或多个事务,每个所述事务对应一个记录单元,每个所述记录单元包括基于行的数据和基于语句的数据。
7.根据权利要求4至6中任一项所述的方法,其特征在于,所述第二装置基于所述元数据,将所述中间日志中的数据写入第二数据库,包括:
所述第二装置基于所述元数据,生成所述第一数据对应的表结构;
所述第二装置按照所述表结构,将所述中间日志中的数据写入第二数据库。
8.根据权利要求7所述的方法,其特征在于,所述方法还包括:
在未能成功将所述中间日志中的数据写入所述第二数据库时,所述第二装置根据所述表结构,输出将所述中间日志中的数据写入所述第二数据库失败的原因。
9.根据权利要求4至8中任一项所述的方法,其特征在于,所述第一数据库的类型与所述第二数据库的类型不同。
10.一种复制数据的装置,其特征在于,包括:
获取模块,用于从第一数据库获取第一数据和所述第一数据对应的元数据,所述元数据包括所述第一数据对应的表定义和所述第一数据对应的数据冲突处理策略;
处理模块,用于生成中间日志,所述中间日志包括所述第一数据和所述元数据;
发送模块,用于将所述中间日志传送至第二装置。
11.根据权利要求10所述的装置,其特征在于,所述处理模块具体用于:
根据所述第一数据确定第二数据;
基于所述第二数据和所述元数据生成所述中间日志,所述中间日志包括所述第二数据和所述元数据。
12.根据权利要求10或11所述的装置,其特征在于,所述中间日志中的数据对应一个或多个事务,每个所述事务对应一个记录单元,每个所述记录单元包括基于行的数据和基于语句的数据。
13.一种复制数据的装置,其特征在于,包括:
获取模块,用于获取中间日志,所述中间日志包括第一数据和所述第一数据对应的元数据,所述元数据包括所述第一数据对应的表定义和所述第一数据对应的数据冲突处理策略,其中,所述第一数据是从第一数据库中获取的数据;
处理模块,用于基于所述元数据,将所述第一数据写入第二数据库。
14.根据权利要求13所述的装置,其特征在于,所述中间日志包括第二数据和所述元数据,其中,所述第二数据是根据所述第一数据确定的。
15.根据权利要求13或14所述的装置,其特征在于,所述中间日志中的数据对应一个或多个事务,每个所述事务对应一个记录单元,每个所述记录单元包括基于行的数据和基于语句的数据。
16.根据权利要求13至15中任一项所述的装置,其特征在于,所述处理模块具体用于:
基于所述元数据,生成所述第一数据对应的表结构;
按照所述表结构,将所述中间日志中的数据写入第二数据库。
17.根据权利要求16所述的装置,其特征在于,所述处理模块还用于:
在未能成功将所述中间日志中的数据写入所述第二数据库时,根据所述表结构,输出将所述中间日志中的数据写入所述第二数据库失败的原因。
18.根据权利要求13至17中任一项所述的装置,其特征在于,所述第一数据库的类型与所述第二数据库的类型不同。
19.一种复制数据的系统,其特征在于,包括权利要求10至12中任意一项所述的装置和/或权利要求13至18中任意一项所述的装置。
20.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质上存储有计算机程序,当所述计算机程序在计算机上运行时,使得所述计算机执行如权利要求1至9中任意一项所述的方法。
21.一种计算机程序产品,其特征在于,所述计算机程序产品包括用于执行权利要求1至9中任意一项所述的方法的指令。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910169242.6A CN111666331A (zh) | 2019-03-06 | 2019-03-06 | 复制数据的方法、装置及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910169242.6A CN111666331A (zh) | 2019-03-06 | 2019-03-06 | 复制数据的方法、装置及系统 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN111666331A true CN111666331A (zh) | 2020-09-15 |
Family
ID=72381351
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910169242.6A Pending CN111666331A (zh) | 2019-03-06 | 2019-03-06 | 复制数据的方法、装置及系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111666331A (zh) |
Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105205053A (zh) * | 2014-05-30 | 2015-12-30 | 阿里巴巴集团控股有限公司 | 一种数据库增量日志解析方法及系统 |
CN107025242A (zh) * | 2016-02-02 | 2017-08-08 | 南京中兴新软件有限责任公司 | 数据库间数据的复制方法及装置 |
CN107644030A (zh) * | 2016-07-20 | 2018-01-30 | 华为技术有限公司 | 分布式数据库数据同步方法、相关装置及系统 |
US20180150362A1 (en) * | 2016-11-28 | 2018-05-31 | Sap Se | Platform-independent representation and management of metadata by catalog framework |
US20180150499A1 (en) * | 2016-11-28 | 2018-05-31 | Sap Se | Logical logging for in-memory metadata store |
CN108170768A (zh) * | 2017-12-25 | 2018-06-15 | 腾讯科技(深圳)有限公司 | 数据库同步方法、装置及可读介质 |
CN108228755A (zh) * | 2017-12-21 | 2018-06-29 | 江苏瑞中数据股份有限公司 | 基于日志解析技术的MySQL数据库到Hadoop平台的数据同步复制方法 |
CN108399256A (zh) * | 2018-03-06 | 2018-08-14 | 北京慧萌信安软件技术有限公司 | 异构数据库内容同步方法、装置及中间件 |
-
2019
- 2019-03-06 CN CN201910169242.6A patent/CN111666331A/zh active Pending
Patent Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105205053A (zh) * | 2014-05-30 | 2015-12-30 | 阿里巴巴集团控股有限公司 | 一种数据库增量日志解析方法及系统 |
CN107025242A (zh) * | 2016-02-02 | 2017-08-08 | 南京中兴新软件有限责任公司 | 数据库间数据的复制方法及装置 |
CN107644030A (zh) * | 2016-07-20 | 2018-01-30 | 华为技术有限公司 | 分布式数据库数据同步方法、相关装置及系统 |
US20180150362A1 (en) * | 2016-11-28 | 2018-05-31 | Sap Se | Platform-independent representation and management of metadata by catalog framework |
US20180150499A1 (en) * | 2016-11-28 | 2018-05-31 | Sap Se | Logical logging for in-memory metadata store |
CN108228755A (zh) * | 2017-12-21 | 2018-06-29 | 江苏瑞中数据股份有限公司 | 基于日志解析技术的MySQL数据库到Hadoop平台的数据同步复制方法 |
CN108170768A (zh) * | 2017-12-25 | 2018-06-15 | 腾讯科技(深圳)有限公司 | 数据库同步方法、装置及可读介质 |
CN108399256A (zh) * | 2018-03-06 | 2018-08-14 | 北京慧萌信安软件技术有限公司 | 异构数据库内容同步方法、装置及中间件 |
Non-Patent Citations (1)
Title |
---|
马腾: "事务的数据同步方法在地理网格计算池中的应用", 《武汉理工大学学报》 * |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107391628B (zh) | 数据同步方法及装置 | |
US11068501B2 (en) | Single phase transaction commits for distributed database transactions | |
US9195668B2 (en) | Log access method storage control apparatus, archive system, and method of operation | |
CN107220142B (zh) | 执行数据恢复操作的方法及装置 | |
US10860539B2 (en) | De-duplication-based remote replication method, and apparatus | |
US11249943B2 (en) | Scalable enterprise content management | |
CN107577420B (zh) | 文件处理方法和装置、服务器 | |
WO2017219858A1 (zh) | 分布式流式数据处理的方法和装置 | |
JP6097880B2 (ja) | ビザンチン故障耐性データ複製を行う方法およびシステム | |
US11176110B2 (en) | Data updating method and device for a distributed database system | |
KR102119258B1 (ko) | 데이터베이스 관리 시스템에서의 변경 데이터 캡쳐 구현 기법 | |
US10459804B2 (en) | Database rollback using WAL | |
CN108628885B (zh) | 一种数据同步方法、装置及存储设备 | |
CN106776795B (zh) | 基于Hbase数据库的数据写入方法及装置 | |
KR20200056357A (ko) | 데이터베이스 관리 시스템에서의 변경 데이터 캡쳐 구현 기법 | |
WO2017020735A1 (zh) | 一种数据处理方法、备份服务器及存储系统 | |
CN107169126B (zh) | 一种日志处理方法及相关设备 | |
CN111125002B (zh) | 一种基于分布式存储的数据备份归档方法和系统 | |
CN104965835A (zh) | 一种分布式文件系统的文件读写方法及装置 | |
US7913109B2 (en) | Storage control apparatus and storage control method | |
CN109597706B (zh) | 一种核对差异数据的检测方法、装置及系统 | |
CN111666331A (zh) | 复制数据的方法、装置及系统 | |
US10599666B2 (en) | Data provisioning for an analytical process based on lineage metadata | |
US10540402B2 (en) | Re-execution of an analytical process based on lineage metadata | |
US20180096081A1 (en) | Relocation of an analytical process based on lineage metadata |
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 |