CN113626453A - 一种元数据变更捕获方法 - Google Patents

一种元数据变更捕获方法 Download PDF

Info

Publication number
CN113626453A
CN113626453A CN202110868149.1A CN202110868149A CN113626453A CN 113626453 A CN113626453 A CN 113626453A CN 202110868149 A CN202110868149 A CN 202110868149A CN 113626453 A CN113626453 A CN 113626453A
Authority
CN
China
Prior art keywords
metadata
cdc
change
ddl
database
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
Application number
CN202110868149.1A
Other languages
English (en)
Inventor
石梦飞
鲍之骁
徐扬
刘文硕
袁声思
田祥雨
沈瑜
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Shanghai Yunxi Technology Co ltd
Original Assignee
Inspur Cloud Information Technology Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Inspur Cloud Information Technology Co Ltd filed Critical Inspur Cloud Information Technology Co Ltd
Priority to CN202110868149.1A priority Critical patent/CN113626453A/zh
Publication of CN113626453A publication Critical patent/CN113626453A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/23Updating
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/21Design, administration or maintenance of databases
    • G06F16/214Database migration support
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/22Indexing; Data structures therefor; Storage structures
    • G06F16/2282Tablespace storage structures; Management thereof
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/27Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Databases & Information Systems (AREA)
  • Data Mining & Analysis (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computing Systems (AREA)
  • Software Systems (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本发明涉及数据库数据捕获技术领域,具体提供了一种元数据变更捕获方法,具有一下步骤:S1、在分布式数据库执行CDC语句并带有元数据捕获功能;S2、用户执行DDL操作,数据库服务语法解析SQL生成语法树,再通过语法树生成执行计划;S3、数据库将执行计划下发给各个执行节点执行,计划执行完成后,将元数据的变更记录更新至系统表中,监控器将这些元数据变更记录推送到changefeed中;S4、判断changefeed发送模式是否为DDL发送模式,如果是,则直接发送DDL;如不是,等待发送模式切换为DDL发送模式后方可发出。与现有技术相比,本发明无需改变数据库的去中心化结构,不依赖中心节点的授时服务,通过一系列判断来保证捕获DDL的事务语义,不依赖于中心节点数据库仍保有良好的可拓展性。

Description

一种元数据变更捕获方法
技术领域
本发明涉及数据库数据捕获技术领域,具体提供一种元数据变更捕获方法。
背景技术
在大型分布式数据库系统中,捕获元数据变更面临着很大的挑战,我们既希望可以随着集群规模无限拓展,同时又希望保证强大的事务语义。当前已知数据库CDC功能对于捕获元数据变更主要采取一下两种策略:
(1)通过外部程序抽取日志文件,并在外部进行事务重组
该方案在外部建立一个专门用于抽取分析发送的CDC集群,抽取数据库日志并对内容进行重新排序,以此保证发送数据的事务语义。
(2)仅支持捕获数据变更,不支持捕获元数据变更
该方案认为元数据变更在数据同步时为罕见操作,可以通过DBA手动改造目标库的结构来保证数据迁移的成功。
方案(1)需要记录额外的日志,占用额外的系统进程资源,增加IO压力,而且大多需要依赖于中心节点去保证外部程序的高可用。方案(2)如果不支持对元数据变更的捕获,依赖人工改造目标数据库结构,对数据迁移同步带来未知的风险。
发明内容
本发明是针对上述现有技术的不足,提供一种实用性强的元数据变更捕获方法。
本发明解决其技术问题所采用的技术方案是:
一种元数据变更捕获方法,具有一下步骤:
S1、在分布式数据库执行CDC语句并带有元数据捕获功能;
S2、用户执行DDL操作,数据库服务语法解析SQL生成语法树,再通过语法树生成执行计划;
S3、数据库将执行计划下发给各个执行节点执行,计划执行完成后,将元数据的变更记录更新至系统表中,监控器将这些元数据变更记录推送到changefeed中;
S4、判断changefeed发送模式是否为DDL发送模式,如果是,则直接发送DDL;如不是,等待发送模式切换为DDL发送模式后方可发出。。
进一步的,在步骤S1中,创建CDC的具体操作包括:
S101、创建CDC语句;
S102、CDC开启对元数据变更捕获后,会在数据库内部打开对记录表结构变更的系统表的监控。
进一步的,在步骤S2中,生成执行计划后,首先查询操作对象的CDC注册信息,判断是否创建了CDC。
进一步的,在步骤S2中,判断是否创建CDC的步骤为:
a)、如果没有创建CDC,则生成正常的执行计划;
b)、如果发现已经创建了CDC,则根据CDC注册信息生成CDC处理器,并将执行计划和CDC处理器封装为执行计划的派生对象。
进一步的,在步骤S3中,进一步包括:
S301、如果存在CDC处理器,且打开了对元数据的变更捕获,则将元数据的变更记录推送至changefeed中:
S302、如果不存在CDC处理器,或没打开对元数据的变更捕获,事务直接提交。
进一步的,在步骤S4中,进一步包括:
S401、如果当前changefeed的发送模式为DDL发送模式,则发送DDL到指定位置,并读取临时文件中的DML,随后更新changfeed状态为DML发送模式。
S402、如果当前changefeed的发送模式为其他模式,则需要阻塞DDL发送进程,等待发送模式被其他进程更新为DDL发送模式。
进一步的,changefeed发送DML需要满足以下条件:
(1)当前发送模式为DML发送模式;
(2)lastDDLSendTime小于ModificationTime;
如果不满足上诉条件,则DML不会直接发送而是记录到临时文件中,等待DDL发送完毕后读取临时文件中的DML内容。
进一步的,changefeed的模式切换需满足以下条件:
(1)ChangeFeedSyncDML切换为ChangeFeedExecDDL
a)DDL对应的blockTime非空,这意味着当前有阻塞着的DDL等待发送;
b)lastDMLTransactionCommitTime小于等于sfTime,这意味着上一次DML的事务提交时间小于各个range的以解析时间;
(2)ChangeFeedExecDDL转换为ChangeFeedWaitToExecDDL;捕获到元数据变更但还没有成功发送;
(3)ChangeFeedWaitToExecDDL转换为ChangeFeedSyncDML;
元数据变更已经成功发送。
进一步的,异步启动带有元数据变更监控的CDC处理器,对元数据变更进行监控,将数据发送至数据池。
进一步的,异步启动带有元数据变更监控的CDC处理器,对元数据变更的监控,将数据发送至数据池,这一过程的具体操作为:
a)、开启对用户表监控的同时,开启一个特殊的监控程序,监控记录表结构变更的系统表;
b)、解析并重组捕获到的数据,依据表的唯一标识进行过滤;
c)、连接外部的数据池,并将表元数据变更输出到外部的数据池。
本发明的一种元数据变更捕获方法和现有技术相比,具有以下突出的有益效果:
(1)本发明可以很好的实现对表结构变更的捕获,无需改变数据库的去中心化结构,不依赖中心节点的授时服务,而是通过DDL与DML携带的时间戳切换发送模式,通过一系列判断来保证捕获DDL的事务语义,不依赖于中心节点数据库仍保有良好的可拓展性。
(2)本发明不依赖于额外的日志系统,降低存储空间的占用,减少计算、IO资源的占用,降低网络负载,提升变化数据捕获效率和实时性,提高系统性能。
(3)本发明相较于不支持捕获元数据变更的CDC功能,在数据迁移与同步时,不会因元数据变更而导致迁移与同步任务失败,也无需DBA手动进行DDL的迁移,带来了更好的用户体验。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
附图1是一种元数据变更捕获方法中步骤S1中流程示意图;
附图2是一种元数据变更捕获方法中步骤S2-S4的流程示意图;
附图3是一种元数据变更捕获方法中CDC处理器处理DDL的流程示意图;
附图4是一种元数据变更捕获方法中CDC处理器处理DML的流程示意图。
具体实施方式
为了使本技术领域的人员更好的理解本发明的方案,下面结合具体的实施方式对本发明作进一步的详细说明。显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例都属于本发明保护的范围。
下面给出一个最佳实施例:
如图1-4所示,本实施例中的一种元数据变更捕获方法,具有一下步骤:
S1、在分布式数据库执行CDC语句并带有元数据捕获功能;
S2、用户执行DDL操作,数据库服务语法解析SQL生成语法树,再通过语法树生成执行计划;
S3、数据库将执行计划下发给各个执行节点执行,计划执行完成后,将元数据的变更记录更新至系统表中,监控器将这些元数据变更记录推送到changefeed中;
S4、判断changefeed发送模式是否为DDL发送模式,如果是,则直接发送DDL;如不是,等待发送模式切换为DDL发送模式后方可发出。
其中,在步骤S1中,创建CDC的具体操作包括:
S101、创建CDC语句;
S102、CDC开启对元数据变更捕获后,会在数据库内部打开对记录表结构变更的系统表的监控。
在步骤S2中,生成执行计划后,首先查询操作对象的CDC注册信息,判断是否创建了CDC;
a)、如果没有创建CDC,则生成正常的执行计划;
b)、如果发现已经创建了CDC,则根据CDC注册信息生成CDC处理器,并将执行计划和CDC处理器封装为执行计划的派生对象。
在步骤S3中,进一步包括:
S301、如果存在CDC处理器,且打开了对元数据的变更捕获,则将元数据的变更记录推送至changefeed中:
S302、如果不存在CDC处理器,或没打开对元数据的变更捕获,事务直接提交。
在步骤S4中,进一步包括:
S401、如果当前changefeed的发送模式为DDL发送模式,则发送DDL到指定位置,并读取临时文件中的DML,随后更新changfeed状态为DML发送模式。
S402、如果当前changefeed的发送模式为其他模式,则需要阻塞DDL发送进程,等待发送模式被其他进程更新为DDL发送模式。
其中,changefeed发送DML需要满足以下条件:
(1)当前发送模式为DML发送模式;
(2)lastDDLSendTime小于ModificationTime;
如果不满足上诉条件,则DML不会直接发送而是记录到临时文件中,等待DDL发送完毕后读取临时文件中的DML内容。
changefeed的模式切换需满足以下条件:
(1)ChangeFeedSyncDML切换为ChangeFeedExecDDL
a)DDL对应的blockTime非空,这意味着当前有阻塞着的DDL等待发送;
b)lastDMLTransactionCommitTime小于等于sfTime,这意味着上一次DML的事务提交时间小于各个range的以解析时间;
(2)ChangeFeedExecDDL转换为ChangeFeedWaitToExecDDL;
捕获到元数据变更但还没有成功发送;
(3)ChangeFeedWaitToExecDDL转换为ChangeFeedSyncDML;
元数据变更已经成功发送。
其中,DDL的具体格式为:
{
“Schema”:<表所在模式名称>,
“TableName”:<表名>,
“TableID”:<表ID>,
“BeforeTableName”:<对表重命名,重命名前表名>,
“Column”:<列描述符,创建表时为该表所有列。增加与删除列为对应列>,
不同操作对应不同的变更
“Operate”:<操作类型>,
“Ts”:<组装DDL语句的LOCAL TIME>,
}
异步启动带有元数据变更监控的CDC处理器,对元数据变更的监控,将数据发送至数据池,这一过程的具体操作为:
a)、开启对用户表监控的同时,开启一个特殊的监控程序,监控记录表结构变更的系统表;
b)、解析并重组捕获到的数据,依据表的唯一标识进行过滤;
c)、连接外部的数据池,并将表元数据变更输出到外部的数据池。
捕获DDL后重组后输出到数据池的具体格式为:
{
“Schema”:<表所在模式名称>,
“TableName”:<表名>,
“TableID”:<表ID>,
“BeforeTableName”:<对表重命名,重命名前表名>,
“Column”:<列描述符,创建表时为该表所有列。增加与删除列为对应列>,
不同操作对应不同的描述符
“Operate”:<操作类型>,
“Ts”:<组装DDL语句的LOCAL TIME>,
}
上述具体的实施方式仅是本发明具体的个案,本发明的专利保护范围包括但不限于上述具体的实施方式,任何符合本发明的一种元数据变更捕获方法权利要求书的且任何所述技术领域普通技术人员对其做出的适当变化或者替换,皆应落入本发明的专利保护范围。
尽管已经示出和描述了本发明的实施例,对于本领域的普通技术人员而言,可以理解在不脱离本发明的原理和精神的情况下可以对这些实施例进行多种变化、修改、替换和变型,本发明的范围由所附权利要求及其等同物限定。

Claims (10)

1.一种元数据变更捕获方法,其特征在于,具有一下步骤:
S1、在分布式数据库执行CDC语句并带有元数据捕获功能;
S2、用户执行DDL操作,数据库服务语法解析SQL生成语法树,再通过语法树生成执行计划;
S3、数据库将执行计划下发给各个执行节点执行,计划执行完成后,将元数据的变更记录更新至系统表中,监控器将这些元数据变更记录推送到changefeed中;
S4、判断changefeed发送模式是否为DDL发送模式,如果是,则直接发送DDL;如不是,等待发送模式切换为DDL发送模式后方可发出。
2.根据权利要求1所述的一种元数据变更捕获方法,其特征在于,在步骤S1中,创建CDC的具体操作包括:
S101、创建CDC语句;
S102、CDC开启对元数据变更捕获后,会在数据库内部打开对记录表结构变更的系统表的监控。
3.根据权利要求2所述的一种元数据变更捕获方法,其特征在于,在步骤S2中,生成执行计划后,首先查询操作对象的CDC注册信息,判断是否创建了CDC。
4.根据权利要求3所述的一种元数据变更捕获方法,其特征在于,在步骤S2中,判断是否创建CDC的步骤为:
a)、如果没有创建CDC,则生成正常的执行计划;
b)、如果发现已经创建了CDC,则根据CDC注册信息生成CDC处理器,并将执行计划和CDC处理器封装为执行计划的派生对象。
5.根据权利要求4所述的一种元数据变更捕获方法,其特征在于,在步骤S3中,进一步包括:
S301、如果存在CDC处理器,且打开了对元数据的变更捕获,则将元数据的变更记录推送至changefeed中:
S302、如果不存在CDC处理器,或没打开对元数据的变更捕获,事务直接提交。
6.根据权利要求5所述的一种元数据变更捕获方法,其特征在于,在步骤S4中,进一步包括:
S401、如果当前changefeed的发送模式为DDL发送模式,则发送DDL到指定位置,并读取临时文件中的DML,随后更新changfeed状态为DML发送模式。
S402、如果当前changefeed的发送模式为其他模式,则需要阻塞DDL发送进程,等待发送模式被其他进程更新为DDL发送模式。
7.根据权利要求6所述的一种元数据变更捕获方法,其特征在于,changefeed发送DML需要满足以下条件:
(1)当前发送模式为DML发送模式;
(2)lastDDLSendTime小于ModificationTime;
如果不满足上诉条件,则DML不会直接发送而是记录到临时文件中,等待DDL发送完毕后读取临时文件中的DML内容。
8.根据权利要求7所述的一种元数据变更捕获方法,其特征在于,changefeed的模式切换需满足以下条件:
(1)ChangeFeedSyncDML切换为ChangeFeedExecDDL
a)DDL对应的blockTime非空,这意味着当前有阻塞着的DDL等待发送;
b)lastDMLTransactionCommitTime小于等于sfTime,这意味着上一次DML的事务提交时间小于各个range的以解析时间;
(2)ChangeFeedExecDDL转换为ChangeFeedWaitToExecDDL;捕获到元数据变更但还没有成功发送;
(3)ChangeFeedWaitToExecDDL转换为ChangeFeedSyncDML;元数据变更已经成功发送。
9.根据权利要求1所述的一种元数据变更捕获方法,其特征在于,异步启动带有元数据变更监控的CDC处理器,对元数据变更进行监控,将数据发送至数据池。
10.根据权利要求9所述的一种元数据变更捕获方法,其特征在于,异步启动带有元数据变更监控的CDC处理器,对元数据变更的监控,将数据发送至数据池,这一过程的具体操作为:
a)、开启对用户表监控的同时,开启一个特殊的监控程序,监控记录表结构变更的系统表;
b)、解析并重组捕获到的数据,依据表的唯一标识进行过滤;
c)、连接外部的数据池,并将表元数据变更输出到外部的数据池。
CN202110868149.1A 2021-07-30 2021-07-30 一种元数据变更捕获方法 Pending CN113626453A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202110868149.1A CN113626453A (zh) 2021-07-30 2021-07-30 一种元数据变更捕获方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202110868149.1A CN113626453A (zh) 2021-07-30 2021-07-30 一种元数据变更捕获方法

Publications (1)

Publication Number Publication Date
CN113626453A true CN113626453A (zh) 2021-11-09

Family

ID=78381636

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202110868149.1A Pending CN113626453A (zh) 2021-07-30 2021-07-30 一种元数据变更捕获方法

Country Status (1)

Country Link
CN (1) CN113626453A (zh)

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108431808A (zh) * 2015-12-15 2018-08-21 微软技术许可有限责任公司 对分区的数据存储空间当中的结构化数据记录的提醒处理
KR20190063835A (ko) * 2017-11-30 2019-06-10 주식회사 리얼타임테크 인-메모리 데이터베이스의 실시간 데이터 변경 처리 시스템
CN111782671A (zh) * 2020-07-01 2020-10-16 浪潮云信息技术股份公司 一种基于分布式数据库实现cdc的优化方法
US20200356474A1 (en) * 2019-05-10 2020-11-12 Microsoft Technology Licensing, Llc Object Storage Change-Events
CN112231407A (zh) * 2020-10-22 2021-01-15 北京人大金仓信息技术股份有限公司 PostgreSQL数据库的DDL同步方法、装置、设备和介质

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108431808A (zh) * 2015-12-15 2018-08-21 微软技术许可有限责任公司 对分区的数据存储空间当中的结构化数据记录的提醒处理
KR20190063835A (ko) * 2017-11-30 2019-06-10 주식회사 리얼타임테크 인-메모리 데이터베이스의 실시간 데이터 변경 처리 시스템
US20200356474A1 (en) * 2019-05-10 2020-11-12 Microsoft Technology Licensing, Llc Object Storage Change-Events
CN111782671A (zh) * 2020-07-01 2020-10-16 浪潮云信息技术股份公司 一种基于分布式数据库实现cdc的优化方法
CN112231407A (zh) * 2020-10-22 2021-01-15 北京人大金仓信息技术股份有限公司 PostgreSQL数据库的DDL同步方法、装置、设备和介质

Similar Documents

Publication Publication Date Title
CN107506451B (zh) 用于数据交互的异常信息监控方法及装置
CN110209726B (zh) 分布式数据库集群系统、数据同步方法及存储介质
CN109800222B (zh) 一种HBase二级索引自适应优化方法和系统
CN107122355B (zh) 数据迁移系统和方法
CN107122360B (zh) 数据迁移系统和方法
US9031997B2 (en) Log file compression
CN107122361B (zh) 数据迁移系统和方法
CN110175213A (zh) 一种基于SCN方式的Oracle数据库同步系统及方法
CN101807210B (zh) 一种数据库间数据同步的方法、系统及设备
CN111324610A (zh) 一种数据同步的方法及装置
WO2014169738A1 (zh) 主、备数据库及一致性检测、修复方法和装置、存储介质
CN104809201A (zh) 一种数据库同步的方法和装置
CN108121827B (zh) 一种全量数据的同步方法及装置
JP2014523024A (ja) 増分データの抽出
WO2012083679A1 (zh) 一种数据迁移方法、数据迁移装置及数据迁移系统
CN104809199A (zh) 一种数据库同步的方法和装置
CN107870982B (zh) 数据处理方法、系统和计算机可读存储介质
US9317205B2 (en) Information processing system and control method thereof
CN112685433A (zh) 元数据更新方法、装置、电子设备及计算机可读存储介质
CN109145155A (zh) 海量遥感影像元数据高并发入库处理方法
CN113626453A (zh) 一种元数据变更捕获方法
WO2024001039A1 (zh) 一种维护区块链数据的方法、装置、电子设备和存储介质
WO2024001029A1 (zh) 一种维护区块链数据的方法、装置、电子设备和存储介质
CN111177133A (zh) 一种对多元数据的处理插入方法
CN115658815A (zh) 基于cdc实现的数据同步的方法

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
TA01 Transfer of patent application right

Effective date of registration: 20221228

Address after: Room 305-22, Building 2, No. 1158 Zhangdong Road and No. 1059 Dangui Road, China (Shanghai) Pilot Free Trade Zone, Pudong New Area, Shanghai, 200120

Applicant after: Shanghai Yunxi Technology Co.,Ltd.

Address before: 250100 No. 1036 Tidal Road, Jinan High-tech Zone, Shandong Province, S01 Building, Tidal Science Park

Applicant before: Inspur cloud Information Technology Co.,Ltd.

TA01 Transfer of patent application right