CN112698816A - 一种KingBase数据库CDC实现方法 - Google Patents
一种KingBase数据库CDC实现方法 Download PDFInfo
- Publication number
- CN112698816A CN112698816A CN202110006149.0A CN202110006149A CN112698816A CN 112698816 A CN112698816 A CN 112698816A CN 202110006149 A CN202110006149 A CN 202110006149A CN 112698816 A CN112698816 A CN 112698816A
- Authority
- CN
- China
- Prior art keywords
- database
- kingbase
- cdc
- decoding
- slot
- 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.)
- Pending
Links
- 238000000034 method Methods 0.000 title claims abstract description 24
- 230000010076 replication Effects 0.000 claims description 4
- 230000008859 change Effects 0.000 abstract description 2
- 238000006243 chemical reaction Methods 0.000 description 2
- 238000010586 diagram Methods 0.000 description 2
- 238000006467 substitution reaction Methods 0.000 description 2
- 230000006978 adaptation Effects 0.000 description 1
- 230000004075 alteration Effects 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 238000013523 data management Methods 0.000 description 1
- 230000007547 defect Effects 0.000 description 1
- 238000000605 extraction Methods 0.000 description 1
- 230000006870 function Effects 0.000 description 1
- 230000004807 localization Effects 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000008569 process Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/20—Software design
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/242—Query formulation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/27—Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/70—Software maintenance or management
- G06F8/71—Version control; Configuration management
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- Software Systems (AREA)
- General Physics & Mathematics (AREA)
- Databases & Information Systems (AREA)
- Data Mining & Analysis (AREA)
- Computer Security & Cryptography (AREA)
- Computing Systems (AREA)
- Mathematical Physics (AREA)
- Computational Linguistics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明涉及计算机领域,具体提供了一种KingBase数据库CDC实现方法,开启KingBase的WAL日志,通过获取日志并进行日志的逻辑解码,以java代码形式读取日志内容,转换成可执行的增量SQL语句,从目标数据库中获取变化的源数据,在增量至目标数据库中。与现有技术相比,本发明的一种KingBase数据库CDC实现方法,可以在短时间内,快速捕获源库表中变化数据并在目标数据库中实现同步。
Description
技术领域
本发明涉及计算机领域,具体提供一种KingBase数据库CDC实现方法。
背景技术
近些年来,我国对软硬件的国产化的需求更加的刻不容缓,在这 样的背景下,开发、生产环境中对KingBase数据库CDC操作适配仍 不完善,仍有很多项目在使用侵入式的CDC操作,这不仅给源系统带 来了极大的性能影响,同时在在冗杂繁多的数据中,侵入式CDC操作 的执行缓慢,SQL执行错误等问题均难以满足现今业务需要快速准确 的需求,使得国产数据库的实际使用与推广成为问题。
发明内容
本发明是针对上述现有技术的不足,提供一种实用性强的KingBase数据库 CDC实现方法。
本发明解决其技术问题所采用的技术方案是:
一种KingBase数据库CDC实现方法,开启KingBase的WAL日志,通过获 取日志并进行日志的逻辑解码,以java代码形式读取日志内容,转换成可执行 的增量SQL语句,从目标数据库中获取变化的源数据,在增量至目标数据库中。
进一步的,利用Kingbase数据库通过逻辑解码插件test_decoding实现 CDC,首先,修改KingBase数据库的配置文件,wal_level设置为logical逻 辑解码,复制槽数量最小值为1。
进一步的,具体分为以下:
S1、使用NiFi的KingBaseCDC处理器从源库表中读取wal日志,并对日志 进行逻辑解码,转换为增量SQ;
S2、使用NiFi的IPutJDBC、ExecuteSQL处理器,根据提示配置相关的内 容,获取目标数据库连接,在目标数据库执行读取源数据库日志后进行转换的 增量SQL,完成KingBase的CDC操作。
进一步的,KingBaseCDC处理器具体实现如下:
(1)配置KingBaseCDC处理器;
(2)创建复制槽;
(3)创建模拟数据格式;
(4)Java代码读取查询结果;
(5)目标数据库执行。
进一步的,在步骤(1)中,URL为配置数据库地址,Database driver class 选择com.kingbase8.Driver这一匹配驱动,Data Decoder选择test_decoding, 其中,星号为必填项;
test_decoding解码插件,为kingbase自带,wal2json和decoder_raw 插件,自行安装。
进一步的,在步骤(2)中,在代码中使用'test_decoding'解码插件创建 一个名为'regression_slot'的Logical Replication Slot,复制槽:
SELECT*FROM sys_create_logical_replication_slot(‘regression_slot’,‘test_decoding’)。
进一步的,在步骤(3)中,对数据进行DML操作后,可通过 sys_logical_slot_peek_changes或sys_logical_slot_get_changes进行查 看。
进一步的,在步骤(4)中,通过Java代码读取查询结果,将其拼凑成增 量的SQL语句,然后在目标数据库执行。
进一步的,在步骤(5)中,通过使用Nifi的iputJDBC处理器处理数据库 连接,通过ExecuteSQL在目标库执行。
本发明的一种KingBase数据库CDC实现方法和现有技术相比,具有以下突 出的有益效果:
本发明可以在短时间内,快速捕获源库表中变化数据并在目标数据库中实 现同步。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施 例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述 中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创 造性劳动的前提下,还可以根据这些附图获得其他的附图。
附图1是一种KingBase数据库CDC实现方法的流程示意图;
附图2是一种KingBase数据库CDC实现方法中KingbaseCDC处理器基本 配置示意图。
具体实施方式
为了使本技术领域的人员更好的理解本发明的方案,下面结合具体的实施 方式对本发明作进一步的详细说明。显然,所描述的实施例仅仅是本发明一部 分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人 员在没有做出创造性劳动前提下所获得的所有其他实施例都属于本发明保护的 范围。
下面给出一个最佳实施例:
本实施例中的一种KingBase数据库CDC实现方法,通过开启KingBase的 WAL日志后,通过获取日志并进行日志的逻辑解码后,以java代码形式读取日 志内容,转换成可执行的增量SQL语句,从目标数据库中获取变化的源数据, 再增量至目标数据库中。
为利用Kingbase数据库通过逻辑解码插件test_decoding实现CDC首先修 改KingBase数据库的配置文件,wal_level设置为logical逻辑解码,复制槽 数量最小值为1。
以KingBase的两个数据库分别作为源库和目标库为例,具体分为以下:
S1、使用NiFi的KingBaseCDC处理器从源库表中读取wal日志,并对日志 进行逻辑解码,转换为增量SQ;
S2、使用NiFi的IPutJDBC、ExecuteSQL处理器,根据提示配置相关的内 容,然后获取目标数据库连接,可以是KingBase数据库,也可以是其他数据库, 最后在目标数据库执行读取源数据库日志后进行转换的增量SQL,完成 KingBase的CDC操作。
KingBaseCDC处理器具体实现如下:
(1)配置KingBaseCDC处理器:
如图2所示,KingBaseCDC处理器使用需进行配置,其中URL为配置数据 库地址,Database driver class需选择com.kingbase8.Driver这一匹配驱动, Data Decoder需选择test_decoding,其余选项可根据需求自行配置,星号为 必填项。test_decoding解码插件,为kingbase自带,还可选择wal2json、 decoder_raw等插件,需自行安装。
(2)创建复制槽:
在代码中使用'test_decoding'解码插件创建一个名为'regression_slot' 的Logical Replication Slot,复制槽:
SELECT*FROM sys_create_logical_replication_slot(‘regression_slot’,‘test_decoding’);
(3)创建模拟数据格式:
/*建表*/
CREATE TABLE test(id int,name varchar);
INSERT INTO test VALUES(1,'a');
INSERT INTO test VALUES(2,'b');
INSERT INTO test VALUES(3,'c');
INSERT INTO test VALUES(4,'d');
UPDATE test SET name='ccc'WHERE id=3;
DELETE from test WHERE id=4
对数据库进行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进行日志查看并抽取:
SELECT*FROM sys_logical_slot_peek_changes(‘regression_slot’,NULL,NULL);
其日志查看结果如下:
INSERT:id[INTEGER]:1NAME[CHARACTER VARYING]:'a'
INSERT:id[INTEGER]:1NAME[CHARACTER VARYING]:'b'
INSERT:id[INTEGER]:1NAME[CHARACTER VARYING]:'c'
INSERT:id[INTEGER]:1NAME[CHARACTER VARYING]:'d'
INSERT:id[INTEGER]:1NAME[CHARACTER VARYING]:'ccc'
DELETE:(no-tuple-data)
(4)Java代码读取查询结果:
最后,通过Java代码读取上述查询结果,将其拼凑成增量的SQL语句, 然后在目标数据库执行或他用。
(5)目标数据库执行:
通过使用Nifi的iputJDBC处理器处理数据库连接,通过ExecuteSQL在目 标库执行。
如图1所示,整个流程为:
由两个KingBase数据库分别作为源库和目标库,从目标库中的wal日志中 捕获变化的数据源,首先,通过处理器KingBaseCDC完成源数据库的日志逻辑 解码及转换。然后,搭配处理器IPutJDBC、ExecuteSQL对目标数据库执行转换 完成的增量SQL,使用iPutJDBC实现数据同步至其他数据库功能。
上述具体的实施方式仅是本发明具体的个案,本发明的专利保护范围包括 但不限于上述具体的实施方式,任何符合本发明的一种KingBase数据库CDC 实现方法权利要求书的且任何所述技术领域普通技术人员对其做出的适当变化 或者替换,皆应落入本发明的专利保护范围。
尽管已经示出和描述了本发明的实施例,对于本领域的普通技术人员而言, 可以理解在不脱离本发明的原理和精神的情况下可以对这些实施例进行多种变 化、修改、替换和变型,本发明的范围由所附权利要求及其等同物限定。
Claims (9)
1.一种KingBase数据库CDC实现方法,其特征在于,开启KingBase的WAL日志,通过获取日志并进行日志的逻辑解码,以java代码形式读取日志内容,转换成可执行的增量SQL语句,从目标数据库中获取变化的源数据,在增量至目标数据库中。
2.根据权利要求1所述的一种KingBase数据库CDC实现方法,其特征在于,利用Kingbase数据库通过逻辑解码插件test_decoding实现CDC,首先,修改KingBase数据库的配置文件,wal_level设置为logical逻辑解码,复制槽数量最小值为1。
3.根据权利要求2所述的一种KingBase数据库CDC实现方法,其特征在于,具体分为以下:
S1、使用NiFi的KingBaseCDC处理器从源库表中读取wal日志,并对日志进行逻辑解码,转换为增量SQ;
S2、使用NiFi的IPutJDBC、ExecuteSQL处理器,根据提示配置相关的内容,获取目标数据库连接,在目标数据库执行读取源数据库日志后进行转换的增量SQL,完成KingBase的CDC操作。
4.根据权利要求3所述的一种KingBase数据库CDC实现方法,其特征在于,KingBaseCDC处理器具体实现如下:
(1)配置KingBaseCDC处理器;
(2)创建复制槽;
(3)创建模拟数据格式;
(4)Java代码读取查询结果;
(5)目标数据库执行。
5.根据权利要求4所述的一种KingBase数据库CDC实现方法,其特征在于,在步骤(1)中,URL为配置数据库地址,Database driver class选择com.kingbase8.Driver这一匹配驱动,Data Decoder选择test_decoding,其中,星号为必填项;
test_decoding解码插件,为kingbase自带,wal2json和decoder_raw插件,自行安装。
6.根据权利要求4所述的一种KingBase数据库CDC实现方法,其特征在于,在步骤(2)中,在代码中使用'test_decoding'解码插件创建一个名为'regression_slot'的LogicalReplication Slot,复制槽:
SELECT*FROM sys_create_logical_replication_slot(‘regression_slot’,‘test_decoding’)。
7.根据权利要求4所述的一种KingBase数据库CDC实现方法,其特征在于,在步骤(3)中,对数据进行DML操作后,可通过sys_logical_slot_peek_changes或sys_logical_slot_get_changes进行查看。
8.根据权利要求4所述的一种KingBase数据库CDC实现方法,其特征在于,在步骤(4)中,通过Java代码读取查询结果,将其拼凑成增量的SQL语句,然后在目标数据库执行。
9.根据权利要求4所述的一种KingBase数据库CDC实现方法,其特征在于,在步骤(5)中,通过使用Nifi的iputJDBC处理器处理数据库连接,通过ExecuteSQL在目标库执行。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110006149.0A CN112698816A (zh) | 2021-01-05 | 2021-01-05 | 一种KingBase数据库CDC实现方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110006149.0A CN112698816A (zh) | 2021-01-05 | 2021-01-05 | 一种KingBase数据库CDC实现方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN112698816A true CN112698816A (zh) | 2021-04-23 |
Family
ID=75514602
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110006149.0A Pending CN112698816A (zh) | 2021-01-05 | 2021-01-05 | 一种KingBase数据库CDC实现方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112698816A (zh) |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110249321A (zh) * | 2017-09-29 | 2019-09-17 | 甲骨文国际公司 | 用于从分布式数据源中捕获变更数据以供异构目标使用的系统和方法 |
US20190332582A1 (en) * | 2018-04-27 | 2019-10-31 | Oracle International Corporation | System and method for heterogeneous database replication from a remote server |
CN110879813A (zh) * | 2019-11-20 | 2020-03-13 | 浪潮软件股份有限公司 | 一种基于二进制日志解析的MySQL数据库增量同步实现方法 |
-
2021
- 2021-01-05 CN CN202110006149.0A patent/CN112698816A/zh active Pending
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110249321A (zh) * | 2017-09-29 | 2019-09-17 | 甲骨文国际公司 | 用于从分布式数据源中捕获变更数据以供异构目标使用的系统和方法 |
US20190332582A1 (en) * | 2018-04-27 | 2019-10-31 | Oracle International Corporation | System and method for heterogeneous database replication from a remote server |
CN110879813A (zh) * | 2019-11-20 | 2020-03-13 | 浪潮软件股份有限公司 | 一种基于二进制日志解析的MySQL数据库增量同步实现方法 |
Non-Patent Citations (4)
Title |
---|
YOVI: "PostgreSQL增量订阅方案:利用Logical Decoding订阅增量", pages 1 - 3, Retrieved from the Internet <URL:https://developer.aliyun.com/article/750632> * |
徐立臻, 谢鸿强, 董逸生: "数据仓库系统中源数据的提取与集成", 小型微型计算机系统, no. 05, 21 May 2003 (2003-05-21) * |
狂神314: "PostgreSQL逻辑复制槽 pg_recvlogical test_decoding wal2json", pages 2 - 5, Retrieved from the Internet <URL:https://www.cnblogs.com/kuang17/p/10136365.html> * |
赵岩梅;: "论工商行业数据中心建设中数据抽取的技术实现方式", 计算机与现代化, no. 08, 15 August 2009 (2009-08-15) * |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
He et al. | Transform-data-by-example (TDE) an extensible search engine for data transformations | |
US8078582B2 (en) | Data change ordering in multi-log based replication | |
US8086564B2 (en) | Techniques for the logical replication of high-level procedures | |
US7287034B2 (en) | On-demand multi-version data dictionary to support distributed applications | |
US9390124B2 (en) | Version control system using commit manifest database tables | |
US7895172B2 (en) | System and method for writing data dependent upon multiple reads in a distributed database | |
US8615526B2 (en) | Markup language based query and file generation | |
US10437853B2 (en) | Tracking data replication and discrepancies in incremental data audits | |
US20060235899A1 (en) | Method of migrating legacy database systems | |
WO2012018424A2 (en) | Mysql database heterogeneous log based replication | |
JPS62164136A (ja) | デ−タベ−ス・アクセス制御方式 | |
CN108334609B (zh) | Oracle中实现JSON格式数据存取的方法、装置、设备及存储介质 | |
WO2015088994A1 (en) | Building features and indexing for knowledge-based matching | |
CN103019874A (zh) | 基于数据同步实现异常处理的方法及装置 | |
US11586582B2 (en) | Data ingestion system | |
CN114691704A (zh) | 一种基于MySQL binlog的元数据同步方法 | |
CN106708972B (zh) | 一种基于hana数据库利用slt组件对abap程序优化的方法 | |
CN110990055B (zh) | 一种基于程序分析的Pull Request功能分类方法 | |
CN112698816A (zh) | 一种KingBase数据库CDC实现方法 | |
US8630981B1 (en) | Techniques for differencing binary installation packages | |
CN111241065A (zh) | 一种支持国产数据库的安全性多兼容轻量级数据库适配开发与操作装置 | |
US20110047417A1 (en) | Method and system for error detection in pattern definitions | |
CN112765180B (zh) | 一种对db2数据库建表日志列名解析的方法及装置 | |
CN111078273B (zh) | 一种信息获取方法及装置、存储介质 | |
Liu et al. | CloudETL: scalable dimensional ETL for hadoop and hive |
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 |