CN109241175A - 数据同步方法、装置、存储介质及电子设备 - Google Patents
数据同步方法、装置、存储介质及电子设备 Download PDFInfo
- Publication number
- CN109241175A CN109241175A CN201810691660.7A CN201810691660A CN109241175A CN 109241175 A CN109241175 A CN 109241175A CN 201810691660 A CN201810691660 A CN 201810691660A CN 109241175 A CN109241175 A CN 109241175A
- Authority
- CN
- China
- Prior art keywords
- data
- change
- affairs
- backed
- incremental
- 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.)
- Granted
Links
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本公开涉及一种数据同步方法、装置、存储介质及电子设备,能够同时进行数据初始化及增量同步的步骤,简化了整个数据库同步的过程,避免了因事务日志被清理而导致的增量同步出错。所述方法包括在从源数据库导出待备份数据的同时,监听所述源数据库的事务日志,以获取备份过程中的增量数据;将所述增量数据存储在缓存队列中;将导出的待备份数据及所述缓存队列中的增量数据导入到目标数据库。
Description
技术领域
本公开涉及计算机技术领域,具体地,涉及一种数据同步方法、装置、存储介质及电子设备。
背景技术
数据库实时同步方法可以应用在数据库双活备份、读写分离等场景中,数据库实时同步通常的操作步骤为首先进行数据初始化,然后再通过基于日志解析的实时数据同步工具,同步源端的增量数据。
目前,数据库同步中的数据初始化工作需要人为手动执行,使用数据库的备份工具将数据从源数据库导出成备份文件,然后再到目标数据库手动导入,接着进行增量同步,同样需要人为手动开启增量同步工具。整个过程中,需要大量的人为工作量,不断监控备份文件的导出以及导入的过程,较为繁琐,同时,针对一些大型数据库,一次初始化过程通常要持续3-4天,更有甚者持续长达数周,然而这期间的数据库事务日志可能因时间过长而被清理,从而导致增量同步工具无法正常工作。
发明内容
本公开的目的是提供一种数据同步方法、装置、存储介质及电子设备,能够同时进行数据初始化及增量同步的步骤,简化了整个数据库同步的过程,避免了因事务日志被清理而导致的增量同步出错。
根据本公开实施例的第一方面,提供一种数据同步方法,包括:
在从源数据库导出待备份数据的同时,监听所述源数据库的事务日志,以获取备份过程中的增量数据;
将所述增量数据存储在缓存队列中;
将导出的待备份数据及所述缓存队列中的增量数据导入到目标数据库。
可选的,在将导出的待备份数据及所述缓存队列中的增量数据导入到目标数据库之前,还包括:
将所述待备份数据转换成标准数据对象,及,
将所述增量数据转换成所述标准数据对象;
其中,所述标准数据对象至少包括所有者信息、数据表信息、元数据信息、具体数据、变更类型、及时间戳;所述待备份数据的变更类型均为插入类型。
可选的,在将导出的待备份数据及所述缓存队列中的增量数据导入到目标数据库之前,还包括:
确定所述目标数据库的数据库类型;
将转换为所述标准数据对象后的所述待备份数据及所述增量数据,装载为符合所述数据库类型的SQL(Structured Query Language,结构化查询语言)语句。
可选的,监听所述源数据库的事务日志,以获取备份过程中的增量数据,包括:
在监听到所述事务日志的每个变更数据时,根据该变更记录的事务信息,确定是否已分配对应事务的数据存储空间;
若未分配对应事务的数据存储空间,则新分配一块数据存储空间,并存入该变更数据;
若已分配对应事务的数据存储空间,则将该变更数据存入对应事务的数据存储空间;
其中,同一数据存储空间中存储的变更数据属于同一事务,各数据存储空间中存储的变更数据即为所述增量数据。
可选的,所述方法还包括:
针对类型为事务回滚的变更数据,清空该变更数据的事务信息对应的数据存储空间;
针对类型为事务提交的变更数据:
确定该变更数据的事务信息对应的数据存储空间是否存储有类型为事务开始的变更数据;
若未存储有类型为事务开始的变更数据,则从所述源数据库的事务日志中向前追溯该变更数据对应事务的其他变更数据,直到获取该事务的类型为事务开始的变更数据;
将追溯到的其他变更数据存入该变更数据所在的数据存储空间;
将所述增量数据存储在缓存队列中,包括:
将所述增量数据包含的各个数据表按照事务提交的顺序,放入所述缓存队列。
可选的,所述方法还包括:
在数据同步过程中,监测数据同步的主进程是否出现中断;
在所述主进程出现中断时,自动重启所述主进程。
根据本公开实施例的第二方面,提供一种数据同步装置,包括:
数据抽取模块,用于从源数据库导出待备份数据;
日志分析模块,用于在所述数据抽取模块从所述源数据库导出待备份数据的同时,监听所述源数据库的事务日志,以获取备份过程中的增量数据;
缓存模块,用于将所述增量数据存储在缓存队列中;
数据收集模块,用于将导出的待备份数据及所述缓存队列中的增量数据导入到目标数据库。
可选的,所述数据抽取模块还用于在将导出的待备份数据及所述缓存队列中的增量数据导入到目标数据库之前,将所述待备份数据转换成标准数据对象;
所述日志分析模块还用于在将导出的待备份数据及所述缓存队列中的增量数据导入到目标数据库之前,将所述增量数据转换成所述标准数据对象;
其中,所述标准数据对象至少包括所有者信息、数据表信息、元数据信息、具体数据、变更类型、及时间戳;所述待备份数据的变更类型均为插入类型。
可选的,所述装置还包括:
数据装载模块,用于在将导出的待备份数据及所述缓存队列中的增量数据导入到目标数据库之前,确定所述目标数据库的数据库类型;
将转换为所述标准数据对象后的所述待备份数据及所述增量数据,装载为符合所述数据库类型的结构化查询语言SQL语句,并写入所述目标数据库。
可选的,所述日志分析模块还用于:
在监听到所述事务日志的每个变更数据时,根据该变更记录的事务信息,确定是否已分配对应事务的数据存储空间;
若未分配对应事务的数据存储空间,则新分配一块数据存储空间,并存入该变更数据;
若已分配对应事务的数据存储空间,则将该变更数据存入对应事务的数据存储空间;
其中,同一数据存储空间中存储的变更数据属于同一事务,各数据存储空间中存储的变更数据即为所述增量数据。
可选的,所述日志分析模块还用于:
针对类型为事务回滚的变更数据,清空该变更数据的事务信息对应的数据存储空间;
针对类型为事务提交的变更数据:
确定该变更数据的事务信息对应的数据存储空间是否存储有类型为事务开始的变更数据;
若未存储有类型为事务开始的变更数据,则从所述源数据库的事务日志中向前追溯该变更数据对应事务的其他变更数据,直到获取该事务的类型为事务开始的变更数据;
将追溯到的其他变更数据存入该变更数据所在的数据存储空间;
所述缓存模块用于:
将所述增量数据包含的各个数据表按照事务提交的顺序,放入所述缓存队列。
可选的,所述装置还包括错误恢复模块,用于:
在数据同步过程中,监测数据同步的主进程是否出现中断;
在所述主进程出现中断时,自动重启所述主进程。
根据本公开实施例的第三方面,提供一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现第一方面中任一项所述方法的步骤。
根据本公开实施例的第四方面,提供一种电子设备,包括:
存储器,其上存储有计算机程序;
处理器,用于执行所述存储器中的所述计算机程序,以实现第一方面中任一项所述方法的步骤。
本公开实施例中,在从源数据库导出待备份数据的同时,可以监听源数据库的事务日志来获取备份过程中的增量数据,然后可以将增量数据存储在缓存队列中,那么在同步时,可以将导出的待备份数据及缓存队列中的增量数据共同导入到目标数据库。通过这样的方式,数据同步过程无需人为参与,且在数据同步时,全量数据与增量数据是同步采集的,增量数据会单独进行存储,避免增量数据丢失的情况发生,在简化了数据同步过程的同时,保障了数据同步的准确性。
本公开的其他特征和优点将在随后的具体实施方式部分予以详细说明。
附图说明
附图是用来提供对本公开的进一步理解,并且构成说明书的一部分,与下面的具体实施方式一起用于解释本公开,但并不构成对本公开的限制。在附图中:
图1是根据一示例性实施例示出的一种数据同步方法的流程图;
图2是根据一示例性实施例示出的一种数据同步装置的框图;
图3是根据一示例性实施例示出的一种数据同步装置的另一框图;
图4是根据一示例性实施例示出的一种数据同步装置的另一框图;
图5是根据一示例性实施例示出的一种电子设备的框图。
具体实施方式
以下结合附图对本公开的具体实施方式进行详细说明。应当理解的是,此处所描述的具体实施方式仅用于说明和解释本公开,并不用于限制本公开。
图1是根据一示例性实施例示出的一种数据同步方法的流程图,如图1所示,该数据同步方法可以应用于计算机中,包括以下步骤。
步骤S11:在从源数据库导出待备份数据的同时,监听源数据库的事务日志,以获取备份过程中的增量数据。
步骤S12:将增量数据存储在缓存队列中。
步骤S13:将导出的待备份数据及缓存队列中的增量数据导入到目标数据库。
数据库中存储的数据(包括待备份数据)均为数据表的形式。数据库事务日志是一组顺序写入、追加型的文件,存储数据库中的数据库表的变更过程,主要用来当数据库发生故障后进行数据恢复的重要依据。在事务日志中存储有变更产生所属的事务信息、变更作用的数据表所属者、变更发生的数据表、变更类型、变更的数据。
本公开实施例中,源数据库是与生产系统连接的数据库,用来存储生产系统产生的事务型数据,目标数据库可以是用来对源数据库进行备份的数据库。要在源数据库与目标数据库之间进行数据同步,需要执行导出源数据库中的待备份数据(即全量同步),以及解析数据库的事务日志,获取增量数据(即增量同步)的步骤。那么在开始从源数据库查询待备份数据时,源数据库会生成当前数据的镜像,使得待备份数据不会随着源数据库的运行而改变,而源数据库在进行全量同步的过程中产生的增量数据将通过增量同步的方式与全量同步同时进行。
在导出待备份数据的过程中,获取到的增量数据可以存储在预置的缓存队列里,这样可以避免源数据库的事务日志因备份时间过长被清理而导致的增量备份出错。最后,将从源数据库获取的待备份数据与缓存队列中的增量数据导入目标数据库即可实现数据的同步。
可选的,在将导出的待备份数据及缓存队列中的增量数据导入到目标数据库之前,还可以将待备份数据转换成标准数据对象,及将增量数据转换成标准数据对象。其中,标准数据对象至少包括所有者信息、数据表信息、元数据信息、具体数据、变更类型、及时间戳;待备份数据的变更类型均为插入类型。
在现有的使用数据库自带的初始化工具进行数据同步时,往往会受到数据库类型、版本等因素的限制,比如,类型为Oracle 11g的源数据库导出的文件,只能导入同为Oracle 11g的目标数据库,无法导入类型为Oracle 10g的目标数据库,更加无法导入MySQL类型的数据库。本公开为了能够实现在不同类型的数据库之间进行数据同步,可以定义标准数据对象,并采用JDBC(Java DataBase Connectivity,java数据库连接)的方式连接数据库来导入及导出数据,那么可以有利于进一步能够将同步数据导入各种类型目标数据库。
在从源数据库导出备份数据时,可以为不同的数据表,分别启动数据抽取线程,并行进行数据抽取,同时将抽取结果转换成标准数据对象,标准数据对象比如由数据所有者(OWNER),数据表信息(TABLE),元数据信息(比如数据列元数据(COLUMNS)),具体的数据(DATA),变更类型(OP)以及时间戳(SCN)组成。为了易于数据查找,DATA可以为键值结构,键为列名称,值为具体的数值。而OP则根据具体的变更分为插入I,更新U,删除D以及表结构变更DDL,对于源数据库的待备份数据,其变更类型OP值固定为插入I。导出的所有数据对象的时间戳SCN值为本批次数据对应的数据库当前时间序列。以Oracle数据库举例,这个值为:select current_scn from v$database查询到的current_scn为本批次的数据结果。
解析源数据库的事务日志,从中提取增量数据,数据内容包括事务信息(XID),数据所有者(OWNER),数据表信息(TABLE),变更数据(DATA),变更类型(OP)以及变更数据的时间戳(SCN)。其中OP包括数据表的事务插入(I),更新(U)、删除(D)、事务开始(START)、事务回滚(ROLLBACK)、事务提交(COMMIT)以及表结构变更(DDL)。
将识别到的变更数据转换成与待备份数据相同的标准数据对象,其中变更数据的时间戳(SCN)为从事务日志中提取的该变更发生在数据库中的具体时间序列值,这样在后续同步过程中,便于获知各变更事务发生的顺序,避免因顺序错误导致的同步结果错误。
得到转换为标准数据对象后的待备份数据和增量数据后,可以进行适用于各类型的目标数据库的数据导入。可选的,可以确定所述目标数据库的数据库类型,然后将转换为标准数据对象后的待备份数据及增量数据,装载为符合所述数据库类型的SQL语句,然后再写入目标数据库。
例如,Oralce、MySQL类型的目标数据库,可以将标准数据对象转换成符合目标库类型的SQL语句,然后通过JDBC协议将数据写入到目标数据库。
在导入目标数据库时,还需要判断标准数据对象中的变更类型(OP),如果是插入(I),则转换为insert SQL操作;如果是更新(U),则转换为update SQL操作;如果是删除(D),则转换为delete SQL操作;如果是表结构变更(DDL),需要进一步判断DDL的操作类型,如果是加列操作,则转换为ALTER TABLE ADD COLUMN SQL操作,等等。
通过以上方式,本公开的数据同步方法可以适用于不同类型的数据库,适用性较强。
可选的,监听源数据库的事务日志,以获取备份过程中的增量数据,可以是在监听到事务日志的每个变更数据时,根据该变更记录的事务信息,确定是否已分配对应事务的数据存储空间;若未分配对应事务的数据存储空间,则新分配一块数据存储空间,并存入该变更数据;若已分配对应事务的数据存储空间,则将该变更数据存入对应事务的数据存储空间;其中,同一数据存储空间中存储的变更数据属于同一事务,各数据存储空间中存储的变更数据即为增量数据。
从事务日志中分析出来的变更记录是按照数据库中记录的顺序进行提取,但是作为事务型数据库,为了保证数据的一致性,也需要按照事务向后同步数据。另外,事务间是顺序提交的,因此也需要按照事务的顺序向后同步。每提取一条变更记录,可以根据变更记录中的事务信息(XID)对得到的结果进行重组,将XID相同的变更记录凑成一堆,存入同一数据存储空间中,并以该XID作为这个存储空间的唯一标识,那么后续所有具有相同XID的插入(I)、更新(U)、删除(D)、事务回滚(ROLLBACK)、事务提交(COMMIT)以及表结构变更(DDL)的变更数据都会放在这个空间中进行存储。这个过程比如称之为事务合成。
可选的,针对类型为事务回滚的变更数据,可以清空该变更数据的事务信息对应的数据存储空间。针对类型为事务提交的变更数据:确定该变更数据的事务信息对应的数据存储空间是否存储有类型为事务开始的变更数据;若未存储有类型为事务开始的变更数据,则从源数据库的事务日志中向前追溯该变更数据对应事务的其他变更数据,直到获取该事务的类型为事务开始的变更数据;将追溯到的其他变更数据存入该变更数据所在的数据存储空间。那么将增量数据存储在缓存队列中,可以是将增量数据包含的各个数据表按照事务提交的顺序,放入缓存队列。
也即是说,可以只同步提交的事务,而丢弃回滚的事务,变更类型中的事务回滚(ROLLBACK)或者事务提交(COMMIT)将会作为每个事务的结束标记,如果是ROLLBACK则将该数据存储空间删除;如果是COMMIT操作,则说明该事务正常提交可以正常向后同步。
然而在实际应用中,可能存在没有事务开始START变更的情况,这是因为开始从源数据库提取待备份数据时,即开始监听源数据库的事务日志时,读取的事务日志的位置可能在这个事务相关的所有变更的中间位置,此时获取的事务是不完整的,那么为了获得完整的事务的变更数据,需要向前追溯,比如称为事务补偿。
当接收到一个COMMIT变更后,需要识别在该事务中是否存在START变更,如果不存在则启动事务补偿机制。执行事务补偿,会单独启动一个日志分析线程,只针对该事务的日志数据进行提取,且由于事务日志中缺少每个事物的开始位于事务日志中的具体位置,因此可以采用阶梯追溯法,即第一次向前追溯一小段日志(如16K),如果没有则加大追溯的区间(如32K),最大为一个事务日志文件大小。之所以采用这种方式,是因为针对事务型数据库,通常的业务不会持续过长时间,因此START变更的位置与COMMIT变更的位置通常相距比较近,这样就可以大量节省资源,且提升效率。
应该理解的是,在执行事务补偿的过程中,主进程依然正常进行日志分析,只不过为了保证事务提交顺序,因此向后输出事务时,在该事务后方的事务需要等待补偿事务结束后才能正常向后同步。
在向后同步(即放入缓存队列)时,还需要按照事务中包含的数据表进行二次拆分,并按照事务提交的顺序以数据表进行分组放入数据缓存。首先遍历事务中所有的变更记录,然后按照所有者OWNER与数据表TABLE组合作为一个数据缓存的唯一标识,具有相同标识的增量数据经过标准化处理后,转化成标准数据对象放入缓存队列。
缓存队列可以是可持久化的数据队列,遵循先进先出原则,应当理解的是,可持久化的数据队列是指可以设定一定大小的容量,当队列存储的数据量超过这个容量后,可以将数据内容写入到文件中。将标准数据对象写入文件中的方法可以采用各种主流的序列化方式,如Java程序的序列化方法,等等。
在从源数据库导出备份数据时,每个数据抽取线程结束后,则需要向后发送一个结束信号,该信号中需要包含数据表所有者(OWNER)和数据表名称(TABLE)信息,那么在将数据导入目标数据库时,可以是每接收到某个数据表的结束信号后,则开启一个新的线程从数据缓存中提取对应的转换为标准数据对象后的增量数据,然后将数据表以及对应的增量数据同步给目标数据库。
可选的,还可以在数据同步过程中,监测数据同步的主进程是否出现中断,那么在主进程出现中断时,自动重启主进程。
由于数据同步的过程耗时较长,中间可能出现网络波动等情况导致同步过程中断,因此,可以在整个同步过程中,监测执行同步的主进程是否有中断,如果有,可以自动发出重启命令,尝试重启主进程,恢复同步过程。通过这样的方式,无需人工干预,可以自行恢复异常中断。
请参见图2,基于同一发明构思,本公开实施例提供一种数据同步装置200,该装置200可以包括:
数据抽取模块201,用于从源数据库导出待备份数据;
日志分析模块202,用于在所述数据抽取模块201从所述源数据库导出待备份数据的同时,监听所述源数据库的事务日志,以获取备份过程中的增量数据;
缓存模块203,用于将所述增量数据存储在缓存队列中;
数据收集模块204,用于将导出的待备份数据及所述缓存队列中的增量数据导入到目标数据库。
可选的,所述数据抽取模块201还用于在将导出的待备份数据及所述缓存队列中的增量数据导入到目标数据库之前,将所述待备份数据转换成标准数据对象;
所述日志分析模块202还用于在将导出的待备份数据及所述缓存队列中的增量数据导入到目标数据库之前,将所述增量数据转换成所述标准数据对象;
其中,所述标准数据对象至少包括所有者信息、数据表信息、元数据信息、具体数据、变更类型、及时间戳;所述待备份数据的变更类型均为插入类型。
可选的,如图3所示,所述装置200还包括:
数据装载模块205,用于在将导出的待备份数据及所述缓存队列中的增量数据导入到目标数据库之前,确定所述目标数据库的数据库类型;
将转换为所述标准数据对象后的所述待备份数据及所述增量数据,装载为符合所述数据库类型的结构化查询语言SQL语句,并写入所述目标数据库。
可选的,所述日志分析模块202还用于:
在监听到所述事务日志的每个变更数据时,根据该变更记录的事务信息,确定是否已分配对应事务的数据存储空间;
若未分配对应事务的数据存储空间,则新分配一块数据存储空间,并存入该变更数据;
若已分配对应事务的数据存储空间,则将该变更数据存入对应事务的数据存储空间;
其中,同一数据存储空间中存储的变更数据属于同一事务,各数据存储空间中存储的变更数据即为所述增量数据。
可选的,所述日志分析模块202还用于:
针对类型为事务回滚的变更数据,清空该变更数据的事务信息对应的数据存储空间;
针对类型为事务提交的变更数据:
确定该变更数据的事务信息对应的数据存储空间是否存储有类型为事务开始的变更数据;
若未存储有类型为事务开始的变更数据,则从所述源数据库的事务日志中向前追溯该变更数据对应事务的其他变更数据,直到获取该事务的类型为事务开始的变更数据;
将追溯到的其他变更数据存入该变更数据所在的数据存储空间;
所述缓存模块用于:
将所述增量数据包含的各个数据表按照事务提交的顺序,放入所述缓存队列。
可选的,如图4所示,所述装置200还包括错误恢复模块206,用于:
在数据同步过程中,监测数据同步的主进程是否出现中断;
在所述主进程出现中断时,自动重启所述主进程。
关于上述实施例中的装置,其中各个模块执行操作的具体方式已经在有关该方法的实施例中进行了详细描述,此处将不做详细阐述说明。应当理解的是,本公开以上述各个模块集成在一台计算机中进行说明,在实际应用中,各模块可以有不同的分布方式,比如每一个模块分布在一台计算机中,本公开实施例对此不作限定。
图5是根据一示例性实施例示出的一种电子设备500的框图。如图5所示,该电子设备500可以包括:处理器501,存储器502。该电子设备500还可以包括多媒体组件503,输入/输出(I/O)接口504,以及通信组件505中的一者或多者。
其中,处理器501用于控制该电子设备500的整体操作,以完成上述的数据同步方法中的全部或部分步骤。存储器502用于存储各种类型的数据以支持在该电子设备500的操作,这些数据例如可以包括用于在该电子设备500上操作的任何应用程序或方法的指令,以及应用程序相关的数据,例如联系人数据、收发的消息、图片、音频、视频等等。该存储器502可以由任何类型的易失性或非易失性存储设备或者它们的组合实现,例如静态随机存取存储器(Static Random Access Memory,简称SRAM),电可擦除可编程只读存储器(Electrically Erasable Programmable Read-Only Memory,简称EEPROM),可擦除可编程只读存储器(Erasable Programmable Read-Only Memory,简称EPROM),可编程只读存储器(Programmable Read-Only Memory,简称PROM),只读存储器(Read-Only Memory,简称ROM),磁存储器,快闪存储器,磁盘或光盘。多媒体组件503可以包括屏幕和音频组件。其中屏幕例如可以是触摸屏,音频组件用于输出和/或输入音频信号。例如,音频组件可以包括一个麦克风,麦克风用于接收外部音频信号。所接收的音频信号可以被进一步存储在存储器502或通过通信组件505发送。音频组件还包括至少一个扬声器,用于输出音频信号。I/O接口504为处理器501和其他接口模块之间提供接口,上述其他接口模块可以是键盘,鼠标,按钮等。这些按钮可以是虚拟按钮或者实体按钮。通信组件505用于该电子设备500与其他设备之间进行有线或无线通信。无线通信,例如Wi-Fi,蓝牙,近场通信(Near FieldCommunication,简称NFC),2G、3G或4G,或它们中的一种或几种的组合,因此相应的该通信组件505可以包括:Wi-Fi模块,蓝牙模块,NFC模块。
在一示例性实施例中,电子设备500可以被一个或多个应用专用集成电路(Application Specific Integrated Circuit,简称ASIC)、数字信号处理器(DigitalSignal Processor,简称DSP)、数字信号处理设备(Digital Signal Processing Device,简称DSPD)、可编程逻辑器件(Programmable Logic Device,简称PLD)、现场可编程门阵列(Field Programmable Gate Array,简称FPGA)、控制器、微控制器、微处理器或其他电子元件实现,用于执行上述的数据同步方法。
在另一示例性实施例中,还提供了一种包括程序指令的计算机可读存储介质,该程序指令被处理器执行时实现上述的数据同步方法的步骤。例如,该计算机可读存储介质可以为上述包括程序指令的存储器502,上述程序指令可由电子设备500的处理器501执行以完成上述的数据同步方法。
以上结合附图详细描述了本公开的优选实施方式,但是,本公开并不限于上述实施方式中的具体细节,在本公开的技术构思范围内,可以对本公开的技术方案进行多种简单变型,这些简单变型均属于本公开的保护范围。
另外需要说明的是,在上述具体实施方式中所描述的各个具体技术特征,在不矛盾的情况下,可以通过任何合适的方式进行组合,为了避免不必要的重复,本公开对各种可能的组合方式不再另行说明。
此外,本公开的各种不同的实施方式之间也可以进行任意组合,只要其不违背本公开的思想,其同样应当视为本公开所公开的内容。
Claims (10)
1.一种数据同步方法,其特征在于,所述方法包括:
在从源数据库导出待备份数据的同时,监听所述源数据库的事务日志,以获取备份过程中的增量数据;
将所述增量数据存储在缓存队列中;
将导出的待备份数据及所述缓存队列中的增量数据导入到目标数据库。
2.根据权利要求1所述的方法,其特征在于,在将导出的待备份数据及所述缓存队列中的增量数据导入到目标数据库之前,还包括:
将所述待备份数据转换成标准数据对象,及,
将所述增量数据转换成所述标准数据对象;
其中,所述标准数据对象至少包括所有者信息、数据表信息、元数据信息、具体数据、变更类型、及时间戳;所述待备份数据的变更类型均为插入类型。
3.根据权利要求2所述的方法,其特征在于,在将导出的待备份数据及所述缓存队列中的增量数据导入到目标数据库之前,还包括:
确定所述目标数据库的数据库类型;
将转换为所述标准数据对象后的所述待备份数据及所述增量数据,装载为符合所述数据库类型的结构化查询语言SQL语句。
4.根据权利要求1所述的方法,其特征在于,监听所述源数据库的事务日志,以获取备份过程中的增量数据,包括:
在监听到所述事务日志的每个变更数据时,根据该变更记录的事务信息,确定是否已分配对应事务的数据存储空间;
若未分配对应事务的数据存储空间,则新分配一块数据存储空间,并存入该变更数据;
若已分配对应事务的数据存储空间,则将该变更数据存入对应事务的数据存储空间;
其中,同一数据存储空间中存储的变更数据属于同一事务,各数据存储空间中存储的变更数据即为所述增量数据。
5.根据权利要求4所述的方法,其特征在于,所述方法还包括:
针对类型为事务回滚的变更数据,清空该变更数据的事务信息对应的数据存储空间;
针对类型为事务提交的变更数据:
确定该变更数据的事务信息对应的数据存储空间是否存储有类型为事务开始的变更数据;
若未存储有类型为事务开始的变更数据,则从所述源数据库的事务日志中向前追溯该变更数据对应事务的其他变更数据,直到获取该事务的类型为事务开始的变更数据;
将追溯到的其他变更数据存入该变更数据所在的数据存储空间;
将所述增量数据存储在缓存队列中,包括:
将所述增量数据包含的各个数据表按照事务提交的顺序,放入所述缓存队列。
6.根据权利要求1-5任一所述的方法,其特征在于,所述方法还包括:
在数据同步过程中,监测数据同步的主进程是否出现中断;
在所述主进程出现中断时,自动重启所述主进程。
7.一种数据同步装置,其特征在于,包括:
数据抽取模块,用于从源数据库导出待备份数据;
日志分析模块,用于在所述数据抽取模块从所述源数据库导出待备份数据的同时,监听所述源数据库的事务日志,以获取备份过程中的增量数据;
缓存模块,用于将所述增量数据存储在缓存队列中;
数据收集模块,用于将导出的待备份数据及所述缓存队列中的增量数据导入到目标数据库。
8.根据权利要求7所述的装置,其特征在于,所述数据抽取模块还用于在将导出的待备份数据及所述缓存队列中的增量数据导入到目标数据库之前,将所述待备份数据转换成标准数据对象;
所述日志分析模块还用于在将导出的待备份数据及所述缓存队列中的增量数据导入到目标数据库之前,将所述增量数据转换成所述标准数据对象;
其中,所述标准数据对象至少包括所有者信息、数据表信息、元数据信息、具体数据、变更类型、及时间戳;所述待备份数据的变更类型均为插入类型。
9.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,该程序被处理器执行时实现权利要求1-6中任一项所述方法的步骤。
10.一种电子设备,其特征在于,包括:
存储器,其上存储有计算机程序;
处理器,用于执行所述存储器中的所述计算机程序,以实现权利要求1-6中任一项所述方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810691660.7A CN109241175B (zh) | 2018-06-28 | 2018-06-28 | 数据同步方法、装置、存储介质及电子设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810691660.7A CN109241175B (zh) | 2018-06-28 | 2018-06-28 | 数据同步方法、装置、存储介质及电子设备 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN109241175A true CN109241175A (zh) | 2019-01-18 |
CN109241175B CN109241175B (zh) | 2021-06-04 |
Family
ID=65072177
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201810691660.7A Active CN109241175B (zh) | 2018-06-28 | 2018-06-28 | 数据同步方法、装置、存储介质及电子设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109241175B (zh) |
Cited By (28)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110083662A (zh) * | 2019-05-15 | 2019-08-02 | 国网江西省电力有限公司信息通信分公司 | 一种基于平台系统的双活架构建设方法 |
CN110209735A (zh) * | 2019-05-05 | 2019-09-06 | 深圳市腾讯计算机系统有限公司 | 数据库备份方法、数据库备份装置、计算设备和存储介质 |
CN110471918A (zh) * | 2019-07-15 | 2019-11-19 | 深圳市中农网有限公司 | 一种关系型数据库同步到区块链的方法及装置 |
CN110515944A (zh) * | 2019-08-16 | 2019-11-29 | 出门问问(苏州)信息科技有限公司 | 基于分布式数据库的数据存储方法、存储介质和电子设备 |
CN110727548A (zh) * | 2019-09-29 | 2020-01-24 | 上海英方软件股份有限公司 | 一种基于数据库dml同步的持续数据保护方法及装置 |
CN110765204A (zh) * | 2019-09-30 | 2020-02-07 | 武汉达梦数据库有限公司 | 一种对增量同步异常中断情况的处理方法和装置 |
CN110765138A (zh) * | 2019-10-31 | 2020-02-07 | 北京达佳互联信息技术有限公司 | 数据查询方法、装置、服务器及存储介质 |
CN110990405A (zh) * | 2019-11-28 | 2020-04-10 | 中国银行股份有限公司 | 一种数据装载方法、装置、服务器及存储介质 |
CN111625605A (zh) * | 2020-06-02 | 2020-09-04 | 北京金堤科技有限公司 | 信息同步方法和装置、以及存储介质和电子设备 |
CN112015821A (zh) * | 2020-09-08 | 2020-12-01 | 香港中文大学(深圳) | 一种数据库同步方法、终端以及存储介质 |
CN112182104A (zh) * | 2020-09-25 | 2021-01-05 | 中国建设银行股份有限公司 | 一种数据同步方法、装置、设备及存储介质 |
CN112286892A (zh) * | 2020-07-01 | 2021-01-29 | 上海柯林布瑞信息技术有限公司 | 后关系型数据库的数据实时同步方法及装置、存储介质、终端 |
CN112434043A (zh) * | 2020-12-02 | 2021-03-02 | 新华三大数据技术有限公司 | 一种数据同步方法、装置、电子设备及介质 |
CN112434059A (zh) * | 2021-01-26 | 2021-03-02 | 腾讯科技(深圳)有限公司 | 数据处理方法、装置、计算机设备和存储介质 |
CN112597242A (zh) * | 2020-12-16 | 2021-04-02 | 四川新网银行股份有限公司 | 一种基于涉及批量任务的应用系统数据切片的抽取方法 |
CN113011507A (zh) * | 2021-03-24 | 2021-06-22 | 支付宝(杭州)信息技术有限公司 | 建立同步时间预测模型的方法、数据同步方法及对应装置 |
WO2021155668A1 (zh) * | 2020-02-09 | 2021-08-12 | 苏州浪潮智能科技有限公司 | 一种数据库在线热备份的方法和设备 |
CN113626449A (zh) * | 2021-07-02 | 2021-11-09 | 上海硬通网络科技有限公司 | 数据存储、数据查询方法及相关设备 |
CN113722152A (zh) * | 2021-08-05 | 2021-11-30 | 四川大学 | 一种数据增量备份方法、装置、设备及存储介质 |
CN113824651A (zh) * | 2021-11-25 | 2021-12-21 | 上海金仕达软件科技有限公司 | 行情数据缓存处理方法、装置、存储介质及电子设备 |
CN113868278A (zh) * | 2021-09-29 | 2021-12-31 | 北京有竹居网络技术有限公司 | 一种数据处理方法、装置及设备 |
CN113918657A (zh) * | 2021-12-14 | 2022-01-11 | 天津南大通用数据技术股份有限公司 | 一种并行高性能增量同步方法 |
US11269925B2 (en) | 2019-05-15 | 2022-03-08 | International Business Machines Corporation | Data synchronization in a data analysis system |
CN114281895A (zh) * | 2021-12-24 | 2022-04-05 | 成都索贝数码科技股份有限公司 | 支持远程拉取的多数据中心同步方法 |
CN114504828A (zh) * | 2022-02-08 | 2022-05-17 | 北京趣玩天橙科技有限公司 | 一种数据回滚实现内存一致性的方法及系统 |
CN115098537A (zh) * | 2021-10-19 | 2022-09-23 | 腾讯科技(深圳)有限公司 | 事务执行方法、装置、计算设备及存储介质 |
US11487714B2 (en) | 2019-05-15 | 2022-11-01 | International Business Machines Corporation | Data replication in a data analysis system |
US11893041B2 (en) | 2019-05-15 | 2024-02-06 | International Business Machines Corporation | Data synchronization between a source database system and target database system |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105005618A (zh) * | 2015-07-21 | 2015-10-28 | 杭州合众数据技术有限公司 | 一种异构数据库之间的数据同步方法及系统 |
CN106557497A (zh) * | 2015-09-25 | 2017-04-05 | 阿里巴巴集团控股有限公司 | 一种数据同步方法和装置 |
WO2017114199A1 (zh) * | 2015-12-31 | 2017-07-06 | 阿里巴巴集团控股有限公司 | 一种数据同步方法和装置 |
CN107180116A (zh) * | 2017-06-28 | 2017-09-19 | 努比亚技术有限公司 | 一种数据同步处理方法、移动终端以及计算机可读存储介质 |
CN107590277A (zh) * | 2017-09-28 | 2018-01-16 | 泰康保险集团股份有限公司 | 数据同步方法、装置、电子设备及存储介质 |
CN108205560A (zh) * | 2016-12-19 | 2018-06-26 | 腾讯科技(深圳)有限公司 | 一种数据同步方法以及装置 |
-
2018
- 2018-06-28 CN CN201810691660.7A patent/CN109241175B/zh active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105005618A (zh) * | 2015-07-21 | 2015-10-28 | 杭州合众数据技术有限公司 | 一种异构数据库之间的数据同步方法及系统 |
CN106557497A (zh) * | 2015-09-25 | 2017-04-05 | 阿里巴巴集团控股有限公司 | 一种数据同步方法和装置 |
WO2017114199A1 (zh) * | 2015-12-31 | 2017-07-06 | 阿里巴巴集团控股有限公司 | 一种数据同步方法和装置 |
CN108205560A (zh) * | 2016-12-19 | 2018-06-26 | 腾讯科技(深圳)有限公司 | 一种数据同步方法以及装置 |
CN107180116A (zh) * | 2017-06-28 | 2017-09-19 | 努比亚技术有限公司 | 一种数据同步处理方法、移动终端以及计算机可读存储介质 |
CN107590277A (zh) * | 2017-09-28 | 2018-01-16 | 泰康保险集团股份有限公司 | 数据同步方法、装置、电子设备及存储介质 |
Cited By (44)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110209735B (zh) * | 2019-05-05 | 2024-04-30 | 深圳市腾讯计算机系统有限公司 | 数据库备份方法、数据库备份装置、计算设备和存储介质 |
CN110209735A (zh) * | 2019-05-05 | 2019-09-06 | 深圳市腾讯计算机系统有限公司 | 数据库备份方法、数据库备份装置、计算设备和存储介质 |
US11487714B2 (en) | 2019-05-15 | 2022-11-01 | International Business Machines Corporation | Data replication in a data analysis system |
US11269925B2 (en) | 2019-05-15 | 2022-03-08 | International Business Machines Corporation | Data synchronization in a data analysis system |
CN110083662A (zh) * | 2019-05-15 | 2019-08-02 | 国网江西省电力有限公司信息通信分公司 | 一种基于平台系统的双活架构建设方法 |
US11893041B2 (en) | 2019-05-15 | 2024-02-06 | International Business Machines Corporation | Data synchronization between a source database system and target database system |
CN110083662B (zh) * | 2019-05-15 | 2024-02-23 | 国网江西省电力有限公司信息通信分公司 | 一种基于平台系统的双活架构建设方法 |
CN110471918A (zh) * | 2019-07-15 | 2019-11-19 | 深圳市中农网有限公司 | 一种关系型数据库同步到区块链的方法及装置 |
CN110515944A (zh) * | 2019-08-16 | 2019-11-29 | 出门问问(苏州)信息科技有限公司 | 基于分布式数据库的数据存储方法、存储介质和电子设备 |
CN110727548A (zh) * | 2019-09-29 | 2020-01-24 | 上海英方软件股份有限公司 | 一种基于数据库dml同步的持续数据保护方法及装置 |
CN110765204A (zh) * | 2019-09-30 | 2020-02-07 | 武汉达梦数据库有限公司 | 一种对增量同步异常中断情况的处理方法和装置 |
CN110765138A (zh) * | 2019-10-31 | 2020-02-07 | 北京达佳互联信息技术有限公司 | 数据查询方法、装置、服务器及存储介质 |
CN110765138B (zh) * | 2019-10-31 | 2023-01-20 | 北京达佳互联信息技术有限公司 | 数据查询方法、装置、服务器及存储介质 |
CN110990405A (zh) * | 2019-11-28 | 2020-04-10 | 中国银行股份有限公司 | 一种数据装载方法、装置、服务器及存储介质 |
CN110990405B (zh) * | 2019-11-28 | 2024-04-12 | 中国银行股份有限公司 | 一种数据装载方法、装置、服务器及存储介质 |
WO2021155668A1 (zh) * | 2020-02-09 | 2021-08-12 | 苏州浪潮智能科技有限公司 | 一种数据库在线热备份的方法和设备 |
CN111625605A (zh) * | 2020-06-02 | 2020-09-04 | 北京金堤科技有限公司 | 信息同步方法和装置、以及存储介质和电子设备 |
CN111625605B (zh) * | 2020-06-02 | 2024-05-10 | 北京金堤科技有限公司 | 信息同步方法和装置、以及存储介质和电子设备 |
CN112286892B (zh) * | 2020-07-01 | 2024-04-05 | 上海柯林布瑞信息技术有限公司 | 后关系型数据库的数据实时同步方法及装置、存储介质、终端 |
CN112286892A (zh) * | 2020-07-01 | 2021-01-29 | 上海柯林布瑞信息技术有限公司 | 后关系型数据库的数据实时同步方法及装置、存储介质、终端 |
CN112015821A (zh) * | 2020-09-08 | 2020-12-01 | 香港中文大学(深圳) | 一种数据库同步方法、终端以及存储介质 |
CN112015821B (zh) * | 2020-09-08 | 2023-11-07 | 香港中文大学(深圳) | 一种数据库同步方法、终端以及存储介质 |
CN112182104A (zh) * | 2020-09-25 | 2021-01-05 | 中国建设银行股份有限公司 | 一种数据同步方法、装置、设备及存储介质 |
CN112434043A (zh) * | 2020-12-02 | 2021-03-02 | 新华三大数据技术有限公司 | 一种数据同步方法、装置、电子设备及介质 |
CN112434043B (zh) * | 2020-12-02 | 2022-12-20 | 新华三大数据技术有限公司 | 一种数据同步方法、装置、电子设备及介质 |
CN112597242B (zh) * | 2020-12-16 | 2023-06-06 | 四川新网银行股份有限公司 | 一种基于涉及批量任务的应用系统数据切片的抽取方法 |
CN112597242A (zh) * | 2020-12-16 | 2021-04-02 | 四川新网银行股份有限公司 | 一种基于涉及批量任务的应用系统数据切片的抽取方法 |
CN112434059A (zh) * | 2021-01-26 | 2021-03-02 | 腾讯科技(深圳)有限公司 | 数据处理方法、装置、计算机设备和存储介质 |
CN112434059B (zh) * | 2021-01-26 | 2021-06-22 | 腾讯科技(深圳)有限公司 | 数据处理方法、装置、计算机设备和存储介质 |
CN113011507B (zh) * | 2021-03-24 | 2022-05-06 | 支付宝(杭州)信息技术有限公司 | 建立同步时间预测模型的方法、数据同步方法及对应装置 |
CN113011507A (zh) * | 2021-03-24 | 2021-06-22 | 支付宝(杭州)信息技术有限公司 | 建立同步时间预测模型的方法、数据同步方法及对应装置 |
CN113626449A (zh) * | 2021-07-02 | 2021-11-09 | 上海硬通网络科技有限公司 | 数据存储、数据查询方法及相关设备 |
CN113722152A (zh) * | 2021-08-05 | 2021-11-30 | 四川大学 | 一种数据增量备份方法、装置、设备及存储介质 |
CN113722152B (zh) * | 2021-08-05 | 2023-08-01 | 四川大学 | 一种数据增量备份方法、装置、设备及存储介质 |
CN113868278B (zh) * | 2021-09-29 | 2023-08-01 | 北京有竹居网络技术有限公司 | 一种数据处理方法、装置及设备 |
CN113868278A (zh) * | 2021-09-29 | 2021-12-31 | 北京有竹居网络技术有限公司 | 一种数据处理方法、装置及设备 |
CN115098537B (zh) * | 2021-10-19 | 2023-03-10 | 腾讯科技(深圳)有限公司 | 事务执行方法、装置、计算设备及存储介质 |
CN115098537A (zh) * | 2021-10-19 | 2022-09-23 | 腾讯科技(深圳)有限公司 | 事务执行方法、装置、计算设备及存储介质 |
CN113824651A (zh) * | 2021-11-25 | 2021-12-21 | 上海金仕达软件科技有限公司 | 行情数据缓存处理方法、装置、存储介质及电子设备 |
CN113918657A (zh) * | 2021-12-14 | 2022-01-11 | 天津南大通用数据技术股份有限公司 | 一种并行高性能增量同步方法 |
CN113918657B (zh) * | 2021-12-14 | 2022-03-15 | 天津南大通用数据技术股份有限公司 | 一种并行高性能增量同步方法 |
CN114281895B (zh) * | 2021-12-24 | 2023-12-08 | 成都索贝数码科技股份有限公司 | 支持远程拉取的多数据中心同步方法 |
CN114281895A (zh) * | 2021-12-24 | 2022-04-05 | 成都索贝数码科技股份有限公司 | 支持远程拉取的多数据中心同步方法 |
CN114504828A (zh) * | 2022-02-08 | 2022-05-17 | 北京趣玩天橙科技有限公司 | 一种数据回滚实现内存一致性的方法及系统 |
Also Published As
Publication number | Publication date |
---|---|
CN109241175B (zh) | 2021-06-04 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109241175A (zh) | 数据同步方法、装置、存储介质及电子设备 | |
US10180946B2 (en) | Consistent execution of partial queries in hybrid DBMS | |
CN108920698B (zh) | 一种数据同步方法、装置、系统、介质及电子设备 | |
CA3121919C (en) | System and method for augmenting database applications with blockchain technology | |
US9779128B2 (en) | System and method for massively parallel processing database | |
EP3435235B1 (en) | Method and device for executing data recovery operation | |
US5613113A (en) | Consistent recreation of events from activity logs | |
CN109885581A (zh) | 数据库的同步方法、装置、设备及存储介质 | |
CN107766575B (zh) | 读写分离的数据库访问方法及装置 | |
CN106874281B (zh) | 实现数据库读写分离的方法和装置 | |
CN109189852A (zh) | 一种数据同步的方法及用于数据同步的装置 | |
CN111209344A (zh) | 数据同步方法及装置 | |
US6725242B2 (en) | Multiple-computer data processing system and method with time-versioned data storage | |
CN114036119A (zh) | 一种基于kettle和数据库日志的数据同步方法 | |
US9535687B2 (en) | Audited builds based upon separate class dependency records | |
CN110489092B (zh) | 一种数据库读写分离架构下读取数据延迟问题的解决方法 | |
CN115617571A (zh) | 一种数据备份方法、装置、系统、设备及存储介质 | |
CN113094442B (zh) | 全量数据同步方法、装置、设备和介质 | |
CN110532225A (zh) | 存储引擎切换方法、装置、电子设备和介质 | |
CN110275675A (zh) | 存储管理装置、存储系统及计算机可读记录介质 | |
CN113641651A (zh) | 一种业务数据管理方法、系统及计算机存储介质 | |
CN112800060A (zh) | 数据处理方法、装置、计算机可读存储介质及电子设备 | |
CN110647421B (zh) | 数据库处理方法、装置、系统以及电子设备 | |
CN112685431B (zh) | 异步缓存方法、装置、系统、电子设备和存储介质 | |
CN112783927B (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 |