人大金仓KFS增量解析原理-Logminer

KFS增量解析原理-Logminer

关键字:

KFS,增量解析,Oracle,Logminer

概述

KFS源端的工作流分为两个阶段:binlog-to-q和q-to-kufl。binlog-to-q阶段,KFS从源端的数据库日志中抽取增量数据,经过extractor模块解析封装后,以DBMSEvent的形式在内存队列queue中暂存,此阶段的主要工作是将数据库的元组信息抽取转化为DBMSEvent,我们称此阶段为“解析”阶段。对于不同的数据库,我们增量抽取解析方式不同,Oracle提供了一个对外接口-Logminer,用户可以使用该接口来获取指定范围内的增量数据,本来将简要介绍KFS通过Logminer获取Oracle的增量数据。

增量解析

增量抽取与解析是KFS进行数据同步所要进行的第一个动作,抽取解析过程因为数据源的不同会导致实现方式的不同,目前KFS支持抽取众多源日志,例如Oracle的Redo、MySQL的Binlog、KES V8的WAL、SQL Server的WAL,对于不同的数据库,我们增量抽取解析方式不同,

Logminer

对于Oracle数据库,所有对用户数据和数据字典的改变都记录在Oracle的Redo Log中,因此,Redo Log包含了所有进行恢复操作所需要的信息。但是原始Redo Log文件不易于阅读,因此,Oracle从8i开始提供了一个分析工具-Logminer,使用该工具可以获取Redo Log文件中的具体内容,KFS实现了通过Logminer获取Oracle的增量数据。

KFS增量解析流程-Logminer

KFS通过Logminer获取Oracle增量数据时的运行线程共有3个,如图所示

2021-05-21_163424

三个线程,分别是OracleLogminerReaderExtractor、OracleLogminerReaderThread、OracleLogminerParserThread,OracleLogminerReaderExtractor线程启动后,它会判断OracleLogminerReaderThread线程的状态,如果未启动,则将其启动;OracleLogminerReaderThread线程会判断OracleLogminerParserThread线程的状态,如果未启动,则将其启动,OracleLogmienrReaderThread会启动Logminer,不断查询Oracle的变更记录并将SQL放入ReaderThread和ParserThread的通信队列中;OracleLogminerParserThread会不断从SQL队列中取出具体的对象进行解析,解析后封装为DBMSEvent(在KFS流水线中流转的一种数据结构)并放入ReaderExactor和ParserThread的通信队列中,ReaderExactor从队列中取出对象后,进行下一阶段的操作。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值