一种增量数据同步方法、装置、设备及可读存储介质与流程

文档序号:30580230发布日期:2022-06-29 11:46阅读:103来源:国知局
一种增量数据同步方法、装置、设备及可读存储介质与流程

1.本技术涉及数据同步技术领域,更具体地说,涉及一种增量数据同步方法、装置、设备及可读存储介质。


背景技术:

2.当数据库数据发生变化时,将该变化同步到另一个数据库中,归属于增量数据同步。sql server,是微软推出的一种关系型数据库系统,其具有可扩展、高性能等特性。
3.作为闭源数据库,sql server目前一般采用如下三种方式进行增量数据同步:1)基于自增字段,这种方式依赖于库表中存在的自增字段,通过设置增量点的值,从表中筛选出大于增量点的增量记录,这种方式必须依赖自增字段,并非是所有的表均具有自增字段,而且这种方式无法同步删除操作,且无法处理小于设置的增量点的数据的更新和插入等操作;2)基于cdc(change data capture,变更数据捕获),即利用sql server本身的cdc机制捕获库表的插入、更新和删除等活动,增量数据会被记录在变更捕获表中,可通过查询变更捕获表获取增量数据,但是,这种方式无法对表结构变化进行识别,无法对表结构变化进行同步;3)基于fn_dblog,通过查询fn_dblog获取数据库的增量信息,且通过增量信息得到增量数据,但是,这种方式无法进行日志被截断情况下的增量数据同步,也即一旦数据库日志被截断,则无法再通过fn_dblog获取到增量数据。
4.综上所述,如何有效且可靠地进行数据库增量数据同步,是目前本领域技术人员亟待解决的技术问题。


技术实现要素:

5.有鉴于此,本技术的目的是提供一种增量数据同步方法、装置、设备及可读存储介质,用于有效且可靠地进行数据库增量数据同步。
6.为了实现上述目的,本技术提供如下技术方案:
7.一种增量数据同步方法,包括:
8.控制源数据库开启cdc,并禁用所述cdc中的捕获作业,以使所述源数据库中日志的状态被标记为待复制状态;
9.从所述源数据库中获取当前次扫描对应的表结构信息,将所述当前次扫描对应的表结构信息与上次扫描时对应的表结构信息进行对比,以获取表结构变化信息,且将所述表结构变化信息发送至目的数据库;
10.利用fn_dblog从所述源数据库的日志中扫描获取所述当前次扫描对应的日志,并对所述当前次扫描对应的日志进行解析,获取增量数据,并将所述增量数据发送至所述目的数据库。
11.优选的,在利用所述fn_dblog对最后一次扫描对应的日志进行解析,获取增量数据之后,还包括:
12.获取被标记为待复制状态的日志,并将所述日志的状态从待复制状态修改为已分
发状态。
13.优选的,还包括:
14.判断所述源数据库中日志的大小是否超过预设阈值;
15.若是,则将所述日志的状态从待复制状态修改为已分发状态。
16.优选的,利用fn_dblog从所述源数据库的日志中扫描获取所述当前次扫描对应的日志,包括:
17.根据设置的结束lsn、预设查询条数及上次扫描时对应的最大lsn,利用所述fn_dblog从所述源数据库的日志中扫描获取所述当前次扫描对应的日志;其中,当所述当前次扫描为第一次扫描时,则所述上次扫描时对应的最大lsn为设置的初始lsn。
18.优选的,还包括:
19.若确定所述表结构变化信息出现错误,则进行报错。
20.优选的,还包括:
21.将所述表结构变化信息及所述增量数据存储在本地日志文件中;
22.将所述表结构变化信息和所述增量数据分别发送至目的数据库,包括:
23.定时从所述本地日志文件中获取所述表结构变化信息及所述增量数据,并将获取到的所述表结构变化信息及所述增量数据分别发送至所述目的数据库;其中,所述表结构变化信息先于所述增量数据发送至所述目的数据库。
24.优选的,将所述表结构变化信息及所述增量数据分别发送至所述目的数据库,包括:
25.将所述表结构变化信息及所述增量数据分别传入消息中间件,以通过所述消息中间件将所述表结构变化信息及所述增量数据分别传输至所述目的数据库所在的目的端,由所述目的端从所述消息中间件中分别拉取所述表结构变化信息及所述增量数据并分别加载到所述目的数据库中。
26.一种增量数据同步装置,包括:
27.控制模块,用于控制源数据库开启cdc,并禁用所述cdc中的捕获作业,以使所述源数据库中日志的状态被标记为待复制状态;
28.第一获取模块,用于从所述源数据库中获取当前次扫描对应的表结构信息,将所述当前次扫描对应的表结构信息与上次扫描时对应的表结构信息进行对比,以获取表结构变化信息,且将所述表结构变化信息发送至目的数据库;
29.第二获取模块,用于利用fn_dblog从所述源数据库的日志中扫描获取所述当前次扫描对应的日志,并对所述当前次扫描对应的日志进行解析,获取增量数据,并将所述增量数据发送至所述目的数据库。
30.一种增量数据同步设备,包括:
31.存储器,用于存储计算机程序;
32.处理器,用于执行所述计算机程序时实现如上述任一项所述的增量数据同步方法的步骤。
33.一种可读存储介质,所述可读存储介质中存储有计算机程序,所述计算机程序被处理器执行时实现如上述任一项所述的增量数据同步方法的步骤。
34.本技术提供了一种增量数据同步方法、装置、设备及可读存储介质,其中,该方法
包括:控制源数据库开启cdc,并禁用cdc中的捕获作业,以使源数据库中日志的状态被标记为待复制状态;从源数据库中获取当前次扫描对应的表结构信息,将当前次扫描对应的表结构信息与上次扫描时对应的表结构信息进行对比,以获取表结构变化信息,且将表结构变化信息发送至目的数据库;利用fn_dblog从源数据库的日志中扫描获取当前次扫描对应的日志,并对当前次扫描对应的日志进行解析,获取增量数据,并将增量数据发送至目的数据库。
35.本技术公开的上述技术方案,控制源数据库开启cdc,并禁用cdc中的捕获作业,以使源数据库中日志的状态被标记为待复制状态,从而防止源数据库中的日志被截断,以保证后续能够有效且可靠地利用fn_dblog从日志中进行增量数据的获取,而且在每次利用fn_dblog迭代扫描源数据库中的日志之前,先从源数据库中获取当前次扫描对应的表结构信息,并将此次对应的表结构信息与上次扫描时对应的表结构信息进行对比,以获取表结构变化信息,且将表结构变化信息发送至目的数据库,从而解决现有采用cdc无法识别表结构变化及相关增量信息获取的问题,以提高源数据库增量数据获取的可靠性和准确性,在将表结构信息发送至目的数据库之后,再利用fn_dblog从源数据库的日志中扫描获取当前次扫描对应的日志,并对当前次扫描对应的日志进行解析,以获得增量之后,将增量数据发送至目的数据库,以实现对源数据库中增量数据的同步,且由于先进行表结构变化信息的同步后进行增量数据的同步,因此,则可以提高增量数据同步的准确性。另外,由于本技术是借助源数据库自身的日志进行增量数据的获取,无需依赖自增字段,因此,可以提高源数据库增量数据获取的可靠性和准确性。
附图说明
36.为了更清楚地说明本技术实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本技术的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。
37.图1为本技术实施例提供的一种增量数据同步方法的流程图;
38.图2为本技术实施例提供的增量数据获取及处理流程图;
39.图3为本技术实施例提供的增量同步示意图;
40.图4为本技术实施例提供的一种增量数据同步装置的结构示意图;
41.图5为本技术实施例提供的一种增量数据同步设备的结构示意图。
具体实施方式
42.本技术的核心是提供一种增量数据同步方法、装置、设备及可读存储介质,用于有效且可靠地进行数据库增量数据同步。
43.下面将结合本技术实施例中的附图,对本技术实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本技术一部分实施例,而不是全部的实施例。基于本技术中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本技术保护的范围。
44.参见图1,其示出了本技术实施例提供的一种增量数据同步方法的流程图,本技术
实施例提供的一种增量数据同步方法,可以包括:
45.s11:控制源数据库开启cdc,并禁用cdc中的捕获作业,以使源数据库中日志的状态被标记为待复制状态。
46.在对源数据库进行增量数据同步时,首先,可以进行前期准备工作。具体地,可以先控制源数据库开启cdc,且在cdc开启时,具体可开启源数据库和需要监控数据表的cdc功能,并开启数据库代理。需要说明的是,本技术中的源数据库具体指的是sql server数据库,相应地,上述提及的数据库代理即具体为sql server数据库代理,而且因需要开启源数据库和需要监控数据表的cdc功能,因此,要求sql server数据库版本为2008及以上版本,开启源数据库和表的cdc功能,即开启源数据库的变更捕获机制,设置需要捕获的表。其中,sql server数据库代理是sql server的一个标准服务,其下设置的数据库对应有两个作用:捕获作业和清除作业,捕获作业用于实际执行扫描日志,捕获增量数据。在捕获作业扫描日志之前,需要捕获的表的增量日志都会标记为replication(待复制状态),这些日志将不会被收缩或截断,在捕获作业扫描之后,这些日志则会被收缩或截断。
47.在上述基础上,可以停止并禁用上述提及的捕获作业,即停止源数据库本身的cdc机制扫描日志,以通过开启源数据库的cdc机制以及禁用捕获作业来使源数据库中的日志的状态被标记为待复制状态,从而使得源数据库中的日志处于可控状态,以防止日志状态被源数据库自动修改而发生日志截断和收缩,进而保证后续能够利用fn_dblog稳定且可靠地对源数据库中的日志进行迭代扫描,以提高增量数据获取的可靠性和有效性。
48.s12:从源数据库中获取当前次扫描对应的表结构信息,将当前次扫描对应的表结构信息与上次扫描时对应的表结构信息进行对比,以获取表结构变化信息,且将表结构变化信息发送至目的数据库。
49.在步骤s11的基础上,在每次利用fn_dblog对源数据库中的日志进行扫描之前(也即在利用fn_dblog从源数据库的日志中扫描获取当前次扫描对应的日志之前),可以从源数据库中获取当前次扫描对应的表结构信息,并将当前次扫描对应的表结构信息与上次扫描时对应的表结构信息进行对比,以获取表结构变化信息(例如字段增加、字段更改等),也即通过对比相邻两次扫描对应的表结构信息来获取表结构变化信息。在获取表结构变化信息后,则将表结构变化信息发送至目的数据库,以利用目的数据库对表结构变化信息进行同步,从而解决现有采用cdc无法识别表结构变化及相关增量信息获取的问题,以提高源数据库增量数据获取的可靠性和准确性。
50.其中,fn_dblog是sql server提供的其中一个函数,提供查询当前数据库的功能,通过利用fn_dblog进行源数据库中日志的迭代读取可以便于准确、高效地进行增量数据的获取,且便于对其增量数据获取的过程进行干预而在进行日志扫描和解析之前先进行步骤s12,从而进行表结构信息的识别以及表结构变化信息的获取和同步,以解决现有采用cdc无法识别表结构变化及相关增量信息获取的问题。另外,需要说明的是,先进行表结构变化信息的同步可以便于后续能够在此基础上准确地进行增量数据同步。
51.其中,在当前次扫描对应的是第一次扫描时,则由于表结构信息无上次扫描时的比较对象,因此,此时,可以将上次扫描时对应的表结构信息设定为初始表结构信息,以便于获取初始表结构信息与第一次扫描之间的表结构变化信息。
52.s13:利用fn_dblog从源数据库的日志中扫描获取当前次扫描对应的日志,并对当
前次扫描对应的日志进行解析,获取增量数据,并将增量数据发送至目的数据库。
53.在进行完步骤s12之后,可以利用fn_dblog从源数据库的日志中扫描获取当前次扫描对应的日志,也即利用fn_dblog对源数据库中的日志进行与当前次扫描,以获取与当前次扫描对应的日志,然后,可以对当前次扫描对应的日志进行解析,以从中获取增量数据,并可以将此次扫描及解析获取到的增量数据发送至目的数据库,以实现增量数据的同步。
54.在完成当前次扫描对应的步骤s12和步骤s13操作之后,可以返回步骤s12进行执行,直至完成最后一次扫描对应的步骤s13操作。需要说明的是,本技术可以通过循环执行步骤s12-步骤s13完成对源数据库中状态被标记为待复制状态的所有的日志处理。当然,也可以根据需要而对其中部分日志进行处理,本技术对源数据库中所处理的日志量不做限定,可根据具体需要进行设置。
55.需要说明的是,目的数据库具体可以为oracle、sql server、mysql、postgres、mongodb等,本技术对目的数据库具体是何种数据库不做限定。另外,在将表结构变化信息及增量数据分别发送至目的数据库时,还可以先分别对表结构变化信息和增量数据进行压缩,然后,再将压缩后的表结构变化信息和压缩后的增量数据分别发送至目的数据库所在的目的端,目的数据库所在的目的端可以先进行解压缩,并根据需要解析协议进行解析,以分别得到表结构变化信息和增量数据,之后,可以分别将表结构变化信息和增量数据加载到目的数据库中。
56.通过上述过程可知,本技术结合了cdc和fn_dblog两种机制来实现有效地进行源数据库中增量数据的同步。与基于自增字段相比,本技术由于是基于源数据库的日志进行增量同步,因此,不受字段值限制,且可以实现增删同步操作;与基于cdc方式相比,采集增量数据前,可通过对比前后的表结构信息获取表结构变化信息,根据情况及时处理;与基于fn_dblog方式相比,使源数据库中日志处于可控状态,能有效应对日志截断的情况,且不对sql server数据库恢复模式做要求,即简单恢复模式和完整恢复模式均可,但推荐使用简单恢复模式,简单恢复模式下,在线日志较小,减少资源占用,提高了采集效率。
57.本技术公开的上述技术方案,控制源数据库开启cdc,并禁用cdc中的捕获作业,以使源数据库中日志的状态被标记为待复制状态,从而防止源数据库中的日志被截断,以保证后续能够有效且可靠地利用fn_dblog从日志中进行增量数据的获取,而且在每次利用fn_dblog迭代扫描源数据库中的日志之前,先从源数据库中获取当前次扫描对应的表结构信息,并将此次对应的表结构信息与上次扫描时对应的表结构信息进行对比,以获取表结构变化信息,且将表结构变化信息发送至目的数据库,从而解决现有采用cdc无法识别表结构变化及相关增量信息获取的问题,以提高源数据库增量数据获取的可靠性和准确性,在将表结构信息发送至目的数据库之后,再利用fn_dblog从源数据库的日志中扫描获取当前次扫描对应的日志,并对当前次扫描对应的日志进行解析,以获得增量之后,将增量数据发送至目的数据库,以实现对源数据库中增量数据的同步,且由于先进行表结构变化信息的同步后进行增量数据的同步,因此,则可以提高增量数据同步的准确性。另外,由于本技术是借助源数据库自身的日志进行增量数据的获取,无需依赖自增字段,因此,可以提高源数据库增量数据获取的可靠性和准确性。
58.具体可以参见图2,其示出了本技术实施例提供的增量数据获取及处理流程图,本
申请实施例提供的一种增量数据同步方法,在利用fn_dblog对最后一次扫描对应的日志进行解析,获取增量数据之后,还可以包括:
59.获取被标记为待复制状态的日志,并将日志的状态从待复制状态修改为已分发状态。
60.在本技术中,由于开启了源数据库的cdc机制,同时禁用了捕获作用,若不主动修改日志的状态,会导致源数据库日志不断增长,进而影响源数据库磁盘和系统的稳定,因此,在利用fn_dblog对最后一次扫描对应的日志进行解析,获取增量数据之后,可以通过调用sp_repltrans来获取被标记为待复制状态的日志,然后,再调用sp_repldone以将日志的状态从待复制状态修改为已分发状态,从而允许源数据库中的日志被截断或收缩,进而缩小日志的大小。
61.本技术实施例提供的一种增量数据同步方法,还可以包括:
62.判断源数据库中日志的大小是否超过预设阈值;
63.若是,则将日志的状态从待复制状态修改为已分发状态。
64.在本技术中,考虑到开启源数据库的cdc机制,同时禁用捕获作用,若不主动修改日志的状态,则会导致源数据库日志不断增长,进而影响源数据库磁盘和系统的稳定,同时为了避免增量数据过程出现异常而导致源数据库中的日志长时间没法完成利用fn_dblog的扫描获取和解析,从而由此导致源数据库中日志量过多,为此,本技术建立监控作业,利用监控作业在增量数据同步过程中定期判断源数据库中日志的大小是否超过预设阈值,若源数据库中日志的大小未超过预设阈值,则表明源数据库中的日志大小未对源数据库构成威胁,因此,可以返回利用监控作业定期判断源数据库中日志的大小是否超过预设阈值的步骤,以实现对源数据库中日志的监控,若源数据库中日志的大小超过预设阈值,则表明源数据库中的日志大小可能已经或者即将对源数据库构成威胁,因此,则可以调用sp_repldone来将日志的状态从待复制状态修改为已分发状态,从而允许源数据库中的日志被截断或收缩,进而缩小日志的大小,以避免影响源数据库磁盘和系统的稳定。
65.需要说明的是,上述提及的预设阈值的大小具体可以根据源数据库的情况进行设置,本技术对此不做限定。
66.本技术实施例提供的一种增量数据同步方法,利用fn_dblog从源数据库的日志中扫描获取当前次扫描对应的日志,可以包括:
67.根据设置的结束lsn、预设查询条数及上次扫描时对应的最大lsn,利用fn_dblog从源数据库的日志中扫描获取当前次扫描对应的日志;其中,当当前次扫描为第一次扫描时,则上次扫描时对应的最大lsn为设置的初始lsn。
68.在本技术中,在利用fn_dblog从源数据库的日志中扫描获取当前次扫描对应的日志时,若当前次扫描为第一次扫描,则可以根据设置的初始lsn(log sequence number,日志序列号)及预设查询条数判断当前次扫描对应的最大lsn(也即为初始lsn加上预设查询条数所得到的lsn)是否小于结束lsn,若是,则利用fn_dblog在当前次扫描中扫描获取预设查询条数条日志,并将当前次扫描对应的最大lsn作为第二次扫描的起始点,若否,则利用fn_dblog在当前次扫描中扫描获取从初始lsn到结束lsn之间的日志,并结束对日志的扫描;若当前次扫描为除第一次扫描之外的扫描,则可以根据上一次扫描对应的最大lsn及预设查询条数判断当前次扫描对应的最大lsn(也即为上一次扫描对应的最大lsn加上预设查
询条数所得到的lsn)是否小于结束lsn,若是,则利用fn_dblog在当前次扫描中扫描获取预设查询条数条日志,并将当前次扫描对应的最大lsn作为下一次扫描的起始点,若否,则利用fn_dblog在当前次扫描中扫描获取从上一次扫描对应的最大lsn到结束lsn之间的日志,并结束对日志的扫描。其中,预设查询条数的大小可以根据实际需要进行设置,例如可以为2000。
69.也就是说,在本技术中,可以根据设置的初始lsn、结束lsn及预设查询条数,利用fn_dblog从源数据库中初始lsn对应的日志开始(也即将初始lsn作为第一次扫描的起始点),扫描获取预设查询条数条日志,并将当前次扫描对应的最大lsn作为下一次扫描的起始点进行扫描获取,直至当前次扫描对应的最大lsn大于或等于结束lsn为止(需要完成当前次扫描)。
70.通过上述过程可以准确且有效地进行日志扫描,从而便于准确且高效地进行表结构变化信息和增量数据的获取。
71.本技术实施例提供的一种增量数据同步方法,还可以包括:
72.若确定表结构变化信息出现错误,则进行报错。
73.在本技术中,在从源数据库中获取当前次扫描对应的表结构信息,将当前次扫描对应的表结构信息与上次扫描时对应的表结构信息进行对比,以获取表结构变化信息时,若确定表结构变化信息出现错误,此时,则可以进行报错,以便于相关人员可以及时获知相关信息,并及时进行处理,以避免对源数据库的运行造成影响。另外,在进行报错的同时,可以拒绝执行将表结构变化信息发送至目的数据库及利用fn_dblog从源数据库的日志中扫描获取当前次扫描对应的日志等的步骤,以避免目的数据库所在的目的端获取到的错误的表结构变化信息和增量数据。
74.本技术实施例提供的一种增量数据同步方法,还可以包括:
75.将表结构变化信息及增量数据存储在本地日志文件中;
76.将表结构变化信息和增量数据分别发送至目的数据库,可以包括:
77.定时从本地日志文件中获取表结构变化信息及增量数据,并将获取到的表结构变化信息及增量数据分别发送至目的数据库;其中,表结构变化信息先于增量数据发送至目的数据库。
78.在本技术中,在当前次扫描对应的表结构信息与上次扫描时对应的表结构信息进行对比,以获取表结构变化信息之后,可以将表结构变化信息存储在本地日志文件中,而且在利用fn_dblog从源数据库的日志中扫描获取当前次扫描对应的日志,并对当前次扫描对应的日志进行解析,获取增量数据之后,也可以将增量数据存储在本地日志文件中,也即将每次扫描前获取到的表结构变化信息以及每次扫描及解析后获取到的增量数据存储在本地日志文件中,以便于后续一起发送多次扫描前获取到的表结构信息至目的数据库,且一起发送多次扫描及解析获取到的增量数据至目的数据库(需要说明的是,在进行发送时,先一起发送多次扫描前获取到的表结构信息至目的数据库,然后,再一次发送多次扫描及解析获取到的增量数据至目的数据库),从而避免频繁进行表结构变化信息和增量数据发送及频繁进行目的数据库访问。
79.在上述基础上,在将表结构变化信息和增量数据分别发送至目的数据库时,具体可以定时从本地日志文件中获取表结构变化信息及增量数据,并先将获取到的表结构变化
信息发送至目的数据库,然后,再将获取到的增量数据发送至目的数据库,也即表结构变化信息需要先于增量数据发送至目的数据库,以便于可以基于表结构变化信息准确地进行增量数据的同步。其中,定时时间的大小可以根据源数据库的业务或者增量数据同步需求进行设置,以避免频繁进行表增量信息和增量数据发送。
80.其中,在定时从本地日志文件中获取表结构变化信息及增量数据之前,可以根据源数据库的业务设置时间段,然后,在所设置的时间段内定时从本地日志文件中获取表结构变化信息及增量数据,并将获取到的表结构变化信息及增量数据分别发送至目的数据库,以避开业务高峰时期,从而避免对生产系统产生影响。
81.参见图3,其示出了本技术实施例提供的增量同步示意图,本技术实施例提供的一种增量数据同步方法,将表结构变化信息及增量数据分别发送至目的数据库,可以包括:
82.将表结构变化信息及增量数据分别传入消息中间件,以通过消息中间件将表结构变化信息及增量数据分别传输至目的数据库所在的目的端,由目的端从消息中间件中分别拉取表结构变化信息及增量数据并分别加载到目的数据库中。
83.在本技术中,在将表结构变化信息及增量数据分别发送至目的数据库时,具体可以借助消息中间件进行实现,具体地,可以将表结构变化信息及增量数据分别传入消息中间件(表结构变化信息先于增量数据传入消息中间件中),通过消息中间件对表结构变化信息及增量数据分别进行实时高效传输,以通过消息中间件将表结构变化信息及增量数据分别前后传输至目的端一侧,然后,目的端则从消息中间件中分别前后拉取表结构变化信息及增量数据(先拉取表结构变化信息后拉取增量数据),并根据需要进行解析,且将解析得到的表结构变化信息及增量数据加载至目的数据库中。其中,上述提及的消息中间件具体可以为nats,其是一个开源、轻量级、高性能的分布式消息中间件,当然,也可以选用其他消息中间件进行传输。
84.通过借助消息中间件可以实现表增量信息及增量数据的高效传输。
85.本技术实施例还提供了一种增量数据同步装置,参见图4,其示出了本技术实施例提供的一种增量数据同步装置的结构示意图,可以包括:
86.控制模块41,用于控制源数据库开启cdc,并禁用cdc中的捕获作业,以使源数据库中日志的状态被标记为待复制状态;
87.第一获取模块42,用于从源数据库中获取当前次扫描对应的表结构信息,将当前次扫描对应的表结构信息与上次扫描时对应的表结构信息进行对比,以获取表结构变化信息,且将表结构变化信息发送至目的数据库;
88.第二获取模块43,用于利用fn_dblog从源数据库的日志中扫描获取当前次扫描对应的日志,并对当前次扫描对应的日志进行解析,获取增量数据,并将增量数据发送至目的数据库。
89.本技术实施例提供的一种增量数据同步装置,还可以包括:
90.第三获取模块,用于在利用fn_dblog对最后一次扫描对应的日志进行解析,获取增量数据之后,获取被标记为待复制状态的日志,并将日志的状态从待复制状态修改为已分发状态。
91.本技术实施例提供的一种增量数据同步装置,还可以包括:
92.判断模块,用于判断源数据库中日志的大小是否超过预设阈值;
93.修改模块,用于若源数据库中日志的大小超过预设阈值,则将日志的状态从待复制状态修改为已分发状态。
94.本技术实施例提供的一种增量数据同步装置,第二获取模块43可以包括:
95.扫描获取单元,用于根据设置的结束lsn、预设查询条数及上次扫描时对应的最大lsn,利用fn_dblog从源数据库的日志中扫描获取当前次扫描对应的日志;其中,当当前次扫描为第一次扫描时,则上次扫描时对应的最大lsn为设置的初始lsn。
96.本技术实施例提供的一种增量数据同步装置,还可以包括:
97.报错模块,用于若确定表结构变化信息出现错误,则进行报错。
98.本技术实施例提供的一种增量数据同步装置,还可以包括:
99.存储模块,用于将表结构变化信息及增量数据存储在本地日志文件中;
100.增量数据同步装置可以包括:
101.发送单元,用于定时从本地日志文件中获取表结构变化信息及增量数据,并将获取到的表结构变化信息及增量数据分别发送至目的数据库;其中,表结构变化信息先于增量数据发送至目的数据库。
102.本技术实施例提供的一种增量数据同步装置,发送单元可以包括:
103.传入子单元,用于将表结构变化信息及增量数据分别传入消息中间件,以通过消息中间件将表结构变化信息及增量数据分别传输至目的数据库所在的目的端,由目的端从消息中间件中分别拉取表结构变化信息及增量数据并分别加载到目的数据库中。
104.本技术实施例还提供了一种增量数据同步设备,参见图5,其示出了本技术实施例提供的一种增量数据同步设备的结构示意图,可以包括:
105.存储器51,用于存储计算机程序;
106.处理器52,用于执行存储器51存储的计算机程序时可实现如下步骤:
107.控制源数据库开启cdc,并禁用cdc中的捕获作业,以使源数据库中日志的状态被标记为待复制状态;从源数据库中获取当前次扫描对应的表结构信息,将当前次扫描对应的表结构信息与上次扫描时对应的表结构信息进行对比,以获取表结构变化信息,且将表结构变化信息发送至目的数据库;利用fn_dblog从源数据库的日志中扫描获取当前次扫描对应的日志,并对当前次扫描对应的日志进行解析,获取增量数据,并将增量数据发送至目的数据库。
108.本技术实施例还提供了一种可读存储介质,可读存储介质中存储有计算机程序,计算机程序被处理器执行时可实现如下步骤:
109.控制源数据库开启cdc,并禁用cdc中的捕获作业,以使源数据库中日志的状态被标记为待复制状态;从源数据库中获取当前次扫描对应的表结构信息,将当前次扫描对应的表结构信息与上次扫描时对应的表结构信息进行对比,以获取表结构变化信息,且将表结构变化信息发送至目的数据库;利用fn_dblog从源数据库的日志中扫描获取当前次扫描对应的日志,并对当前次扫描对应的日志进行解析,获取增量数据,并将增量数据发送至目的数据库。
110.该可读存储介质可以包括:u盘、移动硬盘、只读存储器(read-only memory,rom)、随机存取存储器(randomaccess memory,ram)、磁碟或者光盘等各种可以存储程序代码的介质。
111.本技术提供的一种增量数据同步装置、设备及可读存储介质中相关部分的说明可以参见本技术实施例提供的一种增量数据同步方法中对应部分的详细说明,在此不再赘述。
112.需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个
……”
限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。另外,本技术实施例提供的上述技术方案中与现有技术中对应技术方案实现原理一致的部分并未详细说明,以免过多赘述。
113.对所公开的实施例的上述说明,使本领域技术人员能够实现或使用本技术。对这些实施例的多种修改对本领域技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本技术的精神或范围的情况下,在其它实施例中实现。因此,本技术将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1