首页 / 一种LCK实时采集系统

一种LCK实时采集系统实质审查 发明

技术领域

[0001] 本发明涉及数据采集技术领域,特别涉及一种LCK实时采集系统。

相关背景技术

[0002] 大数据时代,企业数据越来越多,许多企业都建立了数据仓库并且由于时效性业务,建立了实时计算的平台,数据仓库和实时计算的建立依赖于数据采集。随着大数据公司业务的不断发展,对数据进行分析T+1的时效性不能满足公司业务的一些实时业务场景。
[0003] 目前,现有技术的数据采集支持的数据源类型太少,没有很好的可视化页面配置,不能灵活的配置, 需要专业的实施人员在Linux环境下操作, 对非技术人员不友好。

具体实施方式

[0017] 以下结合附图对本发明作进一步详细说明。
[0018] 实施例:如图1所示,一种LCK实时采集系统,其中LCK的具体含义为Log&Canal&kafka,译为基于日志和消息队列的实时数据采集,包括:同步任务管理模块、LCK数据库、数据管理模块、数据同步模块和数据采集模块,
所述同步任务管理模块用于供操作人员通过可视化页面完成实时采集任务的构建,并根据实时采集任务生成对应的任务配置表发送至LCK数据库;所述实时采集任务包括源端数据库及其数据类型、目标数据库及其数据类型;
LCK数据库用于存储任务配置表;
所述数据采集模块用于读取LCK数据库中的任务配置表并根据任务配置表与源端数据库连接进行实时数据采集得到采集结果并将采集结果根据目标数据库的认可形式解析为任务数据;
所述数据同步模块用于将解析得到的任务数据同步至目标数据库。
[0019] 所述数据采集模块包括任务读取单元、连接采集单元和解析单元,所述任务读取单元与所述LCK数据库连接用于按存储顺序依次读取任务配置表;所述连接采集单元用于根据任务配置表对应的源端数据库配置适配器,并通过适配器连接源端数据库,根据任务配置表对源端数据库进行实时数据采集得到采集结果;
所述解析单元根据预设的数据规约对采集结果进行解析得到任务数据,所述任务数据为目标数据库认可的数据形式。
[0020] 所述数据同步模块与所述数据数据采集模块之间通过kafka消息中间件来进行异步通信。
[0021] 所述源端数据库至少包括:MySQL、Oracle、SQLserver、PostgreSQL、HANA其一或其任意组合。
[0022] 所述连接采集单元对MySQL数据库进行实时数据采集具体包括:所述连接采集单元模拟MySQL slave的交互协议,向 MySQL master 发送dump 协议, MySQL master收到 dump 请求,推送 binary log至连接采集单元完成实时采集。解析单元解析 binary log 对象(原始为 byte 流)为目标数据库认可的数据形式, 从而实现实时采集。
[0023] 对Oracle数据库的实时采集实现。首先要保证源端数据库开启了归档模式。Oracle数据库所有对用户数据和数据字典的改变都记录在Oracle的Redo Log中,因此,Redo Log包含了所有进行恢复操作所需要的信息。但是,原始的Redo Log文件无法看懂,所以,Oracle从8i以后提供了一个非常有用的分析工具,称为LogMiner。使用该工具可以轻松获得Redo Log文件(包含归档日志文件)中的具体内容。
[0024] 解析单元通过JDBC的方式执行分析过程, 开启LogMiner后将Oracle的Redo Log加载到LogMiner中进行分析,依靠内容视图通过点位控制获取变化的数据(这里的数据类似于执行的SQL语句),解析单元解析数据成为对应目标数据库认可的数据形式,从而实现实时采集。注意: Oracle开启了归档模式会不断的产生Log文件, 需要通过设置使文件保留一定的时间, 或者人为的定时清理它, 否则当日志文件积攒的过多会影响数据库性能。
[0025] 针对Oracle数据库为源, Oracle的redo log组在达到设置的条件(文件大小或在线时间)时会自动发生切换,  如:  从group#1(redo01.log)切换到了group#2(redo02.log), 如果系统不能及时变更会造成系统挖掘不到日志, LCK同步任务如果配置的Oracle为源的任务, 会实时监听在线日志组是否发生了变更, 变更后系统会切换到新的redo log文件开始分析。
[0026] 对SQLserver数据库的实时采集实现。SQLserver必须保证数据库SQL server代理服务是开启的。想要捕获变更需要开启CDC(变更数据捕获)机制, 而且SQLserver的CDC机制颗粒度比较细, 它可以针对库中的某个表开启CDC, 产生的变更数据存于CDC视图中, 而且不需要进行额外的解析, 直接就可以使用。
[0027] 在处理SQLserver采集任务的时候需要对所选的表开启CDC机制, 并读取视图中变化数据, 将数据包装成目标数据库认可的数据形式,从而实现实时采集。
[0028] 对PostgreSQL数据库的实时采集实现。PostgreSQL数据库如果想要捕获变更需要开启逻辑复制槽, 它是事务级别的复制,使用订阅复制槽技术,通过在订阅端回放 WAL 日志中的逻辑条目, 收集数据库或数据库的一个子集中的增量变更, 所以PostgreSQL的复制槽是以数据库为粒度。逻辑复制槽必须与输出插件关联,以确定要将更改如何传播到目标数据库。常见的输出插件包括pgoutput、wal2json等, LCK采用的是wal2json方式。
[0029] 通过wal2json方式获取增量变更, 由于是json格式数据, 系统可以轻松的将数据包装成目标数据库认可的数据形式,从而实现实时采集。
[0030] 对HANA数据库的实时采集实现。HANA数据库没有像其他数据库一样提供日志开发能力, 但我们可以通过创建Trigger实现增量变更的抓取, 创建Trigger前需要根据目标表创建对应的日志采集表, 通过Trigger将变更数据自动插入到日志采集表中, 有了日志采集表LCK想要获取增量变更就变的十分容易了。
[0031] 系统读取日志采集表, 而且得到的数据不需要任何解析, 只需要将数据包装成目标数据库认可的数据形式,即可实现实时采集。
[0032] 注意: 通过Trigger创建的日志采集表是一张物理表, 需要占用数据库资源, 而且不能修改表结构, 更不能删除它。
[0033] 还包括断线恢复模块,所述断线恢复模块包括采集恢复单元和同步恢复单元,所述采集恢复单元和同步恢复单元分别设置于所述数据采集模块和数据同步模块处;所述采集恢复单元用于在数据采集模块和源端数据库中断通信时进行重连并恢复采集结果;
所述同步恢复单元用于在数据同步模块和目标数据库中断通信时进行重连并恢复同步的任务数据。
[0034] 所述采集恢复单元包括采集临时存储子单元、采集断线子单元和采集恢复单元,所述采集断线子单元用于在实时数据采集过程中与所述源端数据库通信中断时,发出警报信号并自动与所述源端数据库进行重连直至通信恢复;所述采集临时存储子单元用于在接收到警报信号后将已经采集到的采集结果作为中断结果临时存储至采集临时存储子单元;
所述采集恢复单元在数据采集模块与源端数据库恢复通信后控制数据采集模块重新开始实时数据采集得到恢复结果,通过恢复结果与中断结果的数据比对和处理后得到新的采集结果。
[0035] 所述同步恢复单元包括同步临时存储子单元、所述同步断线子单元用于在数据同步模块在数据同步过程中与目标数据库通信中断时,发出中断信号并自动与所述目标数据库进行重连直至通信恢复;
所述同步临时存储子单元在接收到中断信号后调取通信中断前最近发送的任务数据存储至临时存储子单元;
所述同步恢复子单元在数据同步模块与目标数据库恢复通信后向所述目标数据库发送断线恢复指令,所述断线恢复指令用于控制目标数据库将最后接收到的任务数据打包为反馈信息后发回同步恢复子单元并删除目标数据库内的该条任务数据;所述同步恢复子单元接收到反馈信息后将同步临时存储子单元内得任务数据重新同步至目标数据库,并将反馈信息内的任务数据与同步临时存储子单元内的任务数据进行比对得到通信中断信息存储至同步临时存储子单元。
[0036] 还包括监控存储分析模块,所述监控存储分析模块与所述数据同步模块连接,用于对数据同步模块向目标数据库同步的所有任务数据进行监控记录。
[0037] 所述监控存储分析模块采用Elasticsearch存储监控数据。
[0038] 本发明相比较Canal和Maxwell, 增加了4种类型的数据库作为源端, 并支持大部分种类的数据库为目标, 提高了对实时采集的支持范围。普通到的业务人员可以通过可视化页面完成实时采集任务的构建,不再需要专业人员操作,操作门槛降低。只需要在同步任务管理模块的可视化页面即可达到操控任务启停, 一些复杂的操作统统交给系统处理,通过监控存储分析模块记载同步的状态和数据, 当同步失败也有据可查, 并且配有饼状图和柱状图用于统计分析。设置的断线恢复模块,避免通信停止或发生故障导致数据的丢失,保证系统运行的可靠性。
[0039] 以上所述的实施方式,并不构成对该技术方案保护范围的限定。任何在上述实施方式的精神和原则之内所作的修改、等同替换和改进等,均应包含在该技术方案的保护范围之内。

当前第1页 第1页 第2页 第3页