一种KingBase数据库CDC实现方法与流程

文档序号:24800824发布日期:2021-04-23 15:58阅读:579来源:国知局
一种kingbase数据库cdc实现方法
技术领域
:1.本发明涉及计算机领域,具体提供一种kingbase数据库cdc实现方法。
背景技术
::2.近些年来,我国对软硬件的国产化的需求更加的刻不容缓,在这样的背景下,开发、生产环境中对kingbase数据库cdc操作适配仍不完善,仍有很多项目在使用侵入式的cdc操作,这不仅给源系统带来了极大的性能影响,同时在在冗杂繁多的数据中,侵入式cdc操作的执行缓慢,sql执行错误等问题均难以满足现今业务需要快速准确的需求,使得国产数据库的实际使用与推广成为问题。技术实现要素:3.本发明是针对上述现有技术的不足,提供一种实用性强的kingbase数据库cdc实现方法。4.本发明解决其技术问题所采用的技术方案是:5.一种kingbase数据库cdc实现方法,开启kingbase的wal日志,通过获取日志并进行日志的逻辑解码,以java代码形式读取日志内容,转换成可执行的增量sql语句,从目标数据库中获取变化的源数据,在增量至目标数据库中。6.进一步的,利用kingbase数据库通过逻辑解码插件test_decoding实现cdc,首先,修改kingbase数据库的配置文件,wal_level设置为logical逻辑解码,复制槽数量最小值为1。7.进一步的,具体分为以下:8.s1、使用nifi的kingbasecdc处理器从源库表中读取wal日志,并对日志进行逻辑解码,转换为增量sq;9.s2、使用nifi的iputjdbc、executesql处理器,根据提示配置相关的内容,获取目标数据库连接,在目标数据库执行读取源数据库日志后进行转换的增量sql,完成kingbase的cdc操作。10.进一步的,kingbasecdc处理器具体实现如下:11.(1)配置kingbasecdc处理器;12.(2)创建复制槽;13.(3)创建模拟数据格式;14.(4)java代码读取查询结果;15.(5)目标数据库执行。16.进一步的,在步骤(1)中,url为配置数据库地址,databasedriverclass选择com.kingbase8.driver这一匹配驱动,datadecoder选择test_decoding,其中,星号为必填项;17.test_decoding解码插件,为kingbase自带,wal2json和decoder_raw插件,自行安装。18.进一步的,在步骤(2)中,在代码中使用'test_decoding'解码插件创建一个名为'regression_slot'的logicalreplicationslot,复制槽:19.select*fromsys_create_logical_replication_slot(‘regression_slot’,‘test_decoding’)。20.进一步的,在步骤(3)中,对数据进行dml操作后,可通过sys_logical_slot_peek_changes或sys_logical_slot_get_changes进行查看。21.进一步的,在步骤(4)中,通过java代码读取查询结果,将其拼凑成增量的sql语句,然后在目标数据库执行。22.进一步的,在步骤(5)中,通过使用nifi的iputjdbc处理器处理数据库连接,通过executesql在目标库执行。23.本发明的一种kingbase数据库cdc实现方法和现有技术相比,具有以下突出的有益效果:24.本发明可以在短时间内,快速捕获源库表中变化数据并在目标数据库中实现同步。附图说明25.为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。26.附图1是一种kingbase数据库cdc实现方法的流程示意图;27.附图2是一种kingbase数据库cdc实现方法中kingbasecdc处理器基本配置示意图。具体实施方式28.为了使本
技术领域
:的人员更好的理解本发明的方案,下面结合具体的实施方式对本发明作进一步的详细说明。显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例都属于本发明保护的范围。29.下面给出一个最佳实施例:30.本实施例中的一种kingbase数据库cdc实现方法,通过开启kingbase的wal日志后,通过获取日志并进行日志的逻辑解码后,以java代码形式读取日志内容,转换成可执行的增量sql语句,从目标数据库中获取变化的源数据,再增量至目标数据库中。31.为利用kingbase数据库通过逻辑解码插件test_decoding实现cdc首先修改kingbase数据库的配置文件,wal_level设置为logical逻辑解码,复制槽数量最小值为1。32.以kingbase的两个数据库分别作为源库和目标库为例,具体分为以下:33.s1、使用nifi的kingbasecdc处理器从源库表中读取wal日志,并对日志进行逻辑解码,转换为增量sq;34.s2、使用nifi的iputjdbc、executesql处理器,根据提示配置相关的内容,然后获取目标数据库连接,可以是kingbase数据库,也可以是其他数据库,最后在目标数据库执行读取源数据库日志后进行转换的增量sql,完成kingbase的cdc操作。35.kingbasecdc处理器具体实现如下:36.(1)配置kingbasecdc处理器:37.如图2所示,kingbasecdc处理器使用需进行配置,其中url为配置数据库地址,databasedriverclass需选择com.kingbase8.driver这一匹配驱动,datadecoder需选择test_decoding,其余选项可根据需求自行配置,星号为必填项。test_decoding解码插件,为kingbase自带,还可选择wal2json、decoder_raw等插件,需自行安装。38.(2)创建复制槽:39.在代码中使用'test_decoding'解码插件创建一个名为'regression_slot'的logicalreplicationslot,复制槽:40.select*fromsys_create_logical_replication_slot(‘regression_slot’,‘test_decoding’);41.(3)创建模拟数据格式:42./*建表*/43.createtabletest(idint,namevarchar);44.insertintotestvalues(1,'a');45.insertintotestvalues(2,'b');46.insertintotestvalues(3,'c');47.insertintotestvalues(4,'d');48.updatetestsetname='ccc'whereid=3;49.deletefromtestwhereid=450.对数据库进行dml操作后,可通过sys_logical_slot_peek_changes或sys_logical_slot_get_changes进行查看。两者区别在于sys_logical_slot_peek_changes可以多次查询记录,sys_logical_slot_get_changes,在查询过记录后,便会删除记录,这里使用sys_logical_slot_peek_changes进行日志查看并抽取:51.select*fromsys_logical_slot_peek_changes(‘regression_slot’,null,null);52.其日志查看结果如下:53.insert:id[integer]:1name[charactervarying]:'a'[0054]insert:id[integer]:1name[charactervarying]:'b'[0055]insert:id[integer]:1name[charactervarying]:'c'[0056]insert:id[integer]:1name[charactervarying]:'d'[0057]insert:id[integer]:1name[charactervarying]:'ccc'[0058]delete:(no‑tuple‑data)[0059](4)java代码读取查询结果:[0060]最后,通过java代码读取上述查询结果,将其拼凑成增量的sql语句,然后在目标数据库执行或他用。[0061](5)目标数据库执行:[0062]通过使用nifi的iputjdbc处理器处理数据库连接,通过executesql在目标库执行。[0063]如图1所示,整个流程为:[0064]由两个kingbase数据库分别作为源库和目标库,从目标库中的wal日志中捕获变化的数据源,首先,通过处理器kingbasecdc完成源数据库的日志逻辑解码及转换。然后,搭配处理器iputjdbc、executesql对目标数据库执行转换完成的增量sql,使用iputjdbc实现数据同步至其他数据库功能。[0065]上述具体的实施方式仅是本发明具体的个案,本发明的专利保护范围包括但不限于上述具体的实施方式,任何符合本发明的一种kingbase数据库cdc实现方法权利要求书的且任何所述
技术领域
:普通技术人员对其做出的适当变化或者替换,皆应落入本发明的专利保护范围。[0066]尽管已经示出和描述了本发明的实施例,对于本领域的普通技术人员而言,可以理解在不脱离本发明的原理和精神的情况下可以对这些实施例进行多种变化、修改、替换和变型,本发明的范围由所附权利要求及其等同物限定。当前第1页1 2 3 当前第1页1 2 3 
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1