一种PostgreSQL数据库索引增量同步方法及系统与流程

文档序号:37549280发布日期:2024-04-08 13:56阅读:8来源:国知局
本发明属于数据库同步,具体涉及一种postgresql数据库索引增量同步方法及系统。
背景技术
::1、在关系型数据库中,ddl(data definition language)和dml(data manipulationlanguage)是两种最基本的sql语言类型。ddl语言用于定义和管理数据库对象,如表、索引、触发器、视图、存储过程等;而dml语言则用于对数据库中的数据进行查询、插入、修改和删除等操作。2、数据库ddl(data definition language)增量同步是指在数据库中进行结构性变化时,将这些变化同步到其他相同结构的数据库中,以保证这些数据库具有相同的结构和定义。3、现有的postgresql数据库ddl增量同步技术是利用触发器的方式,当执行ddl语句时把执行的ddl语句保存到辅助表中,然后利用数据库数据同步技术把辅助表的数据同步到目标库中,再把辅助表的ddl语句在目标库中执行,以此实现ddl同步。在整个数据库所有表都进行同步的场景中,不需要对ddl语句执行的目标进行识别判断,这种同步方式是可行的。4、但是,遇到只需要同步部分表的索引的场景时,对于postgresql数据库索引变更的ddl语句,如删除索引的ddl,在触发器触发的时候,数据库中的索引已经发生了变化,索引已经被删除,导致无法查询到删除的索引属于哪个表,也查不到被删除的索引的语句信息,导致无法判断是否需要同步该索引ddl语句。技术实现思路1、本发明的目的在于提供一种postgresql数据库索引增量同步方法及系统,支持只同步特定表的ddl语句,同步效率更高,可配置性更强,以解决上述
背景技术
:中提出现有技术中的问题。2、为实现上述目的,本发明采用了如下技术方案:一种postgresql数据库索引增量同步方法,包括:在源端postgresql数据库创建第一辅助表,并对数据库查询把所有的索引信息存储至所述第一辅助表;在源端postgresql数据库创建第二辅助表,所述第二辅助表中包括ddl执行事件信息;创建源端postgresql数据库触发器进行监听所述ddl执行事件信息,在执行ddl语句时根据ddl语句类型不同执行存储逻辑;利用数据同步工具将第二辅助表同步到目标数据库;在所述目标数据库中配置所述触发器监听目标数据库的insert操作,执行insert事件的语句中的ddl语句,进行特定表的ddl同步。3、优选地,所述索引信息包括索引名称、所属表名称和数据库实例名称。4、优选地,所述ddl执行事件信息包括ddl语句类型、ddl目标数据库实例名称、ddl对象名称、ddl父对象名称、ddl执行语句和ddl执行时间。5、优选地,所述ddl语句类型包括create function,create table,alter table,drop table,create index和drop index。6、优选地,所述存储逻辑包括:当ddl语句类型为create index时,采用第一存储方法;当ddl语句类型为drop table时,采用第二存储方法;当ddl语句类型为其余的类型时,采用第三存储方法。7、优选地,所述第一存储方法,包括:获取当前的索引名称、所属表名称和数据库实例名称存入所述第一辅助表中;获取当前的ddl语句类型、ddl目标数据库实例名称、ddl对象名称、ddl父对象名称、ddl执行语句、ddl执行时间存入第二辅助表中。8、优选地,所述第二存储方法包括:根据当前的索引名称、数据库实例名称从第一辅助表中查找对应的所属表名称;然后获取当前的ddl语句类型、ddl目标数据库实例名称、ddl对象名称、ddl父对象名称、ddl执行语句、ddl执行时间存入第二辅助表中。9、优选地,所述第三存储方法包括:获取当前的ddl语句类型、ddl目标数据库实例名称、ddl对象名称、ddl父对象名称、ddl执行语句、ddl执行时间存入第二辅助表中。10、优选地,所述目标数据库中包括第三辅助表,所述第三辅助表用于存储insert事件。11、另一方面,本发明提出一种postgresql数据库索引增量同步系统,包括:12、创建模块一,用于在源端postgresql数据库创建第一辅助表,并对数据库查询把所有的索引信息存储至所述第一辅助表;13、创建模块二,在源端postgresql数据库创建第二辅助表,所述第二辅助表中包括ddl执行事件信息;14、判断模块,用于创建源端postgresql数据库触发器进行监听所述ddl执行事件信息,在执行ddl语句时根据ddl语句类型不同执行存储逻辑;15、存储模块,用于利用数据同步工具将第二辅助表同步到目标数据库;16、同步模块,用于在所述目标数据库中配置所述触发器监听目标数据库的insert操作,执行insert事件的语句中的ddl语句,进行特定表的ddl同步。17、本发明的技术效果和优点:本发明提出的一种postgresql数据库索引增量同步方法及系统,与现有技术相比,具有以下优点:18、在源端postgresql数据库创建第一辅助表,并对数据库查询把所有的索引信息存储至第一辅助表,在源端postgresql数据库创建第二辅助表,第二辅助表中包括ddl执行事件信息,创建源端postgresql数据库触发器进行监听ddl执行事件信息,在执行ddl语句时根据ddl语句类型不同执行存储逻辑,利用数据同步工具将第二辅助表同步到目标数据库,在目标数据库中配置触发器监听目标数据库的insert操作,执行insert事件的语句中的ddl语句,进行特定表的ddl同步,支持只同步特定表的ddl语句,同步效率更高,可配置性更强,对源库的改动小,不需要在源库lib目录下添加预设so文件配置,触发器配置均为postgresql已有的内置函数,兼容性、可移植性更强。技术特征:1.一种postgresql数据库索引增量同步方法,其特征在于,包括:2.根据权利要求1所述的一种postgresql数据库索引增量同步方法,其特征在于,所述索引信息包括索引名称、所属表名称和数据库实例名称。3.根据权利要求2所述的一种postgresql数据库索引增量同步方法,其特征在于,所述ddl执行事件信息包括ddl语句类型、ddl目标数据库实例名称、ddl对象名称、ddl父对象名称、ddl执行语句和ddl执行时间。4.根据权利要求3所述的一种postgresql数据库索引增量同步方法,其特征在于,所述ddl语句类型包括create function,create table,alter table,drop table,createindex和drop index。5.根据权利要求4所述的一种postgresql数据库索引增量同步方法,其特征在于,所述存储逻辑包括:6.根据权利要求5所述的一种postgresql数据库索引增量同步方法,其特征在于,所述第一存储方法,包括:获取当前的索引名称、所属表名称和数据库实例名称存入所述第一辅助表中;获取当前的ddl语句类型、ddl目标数据库实例名称、ddl对象名称、ddl父对象名称、ddl执行语句、ddl执行时间存入第二辅助表中。7.根据权利要求5所述的一种postgresql数据库索引增量同步方法,其特征在于,所述第二存储方法包括:根据当前的索引名称、数据库实例名称从第一辅助表中查找对应的所属表名称;然后获取当前的ddl语句类型、ddl目标数据库实例名称、ddl对象名称、ddl父对象名称、ddl执行语句、ddl执行时间存入第二辅助表中。8.根据权利要求5所述的一种postgresql数据库索引增量同步方法,其特征在于,所述第三存储方法包括:获取当前的ddl语句类型、ddl目标数据库实例名称、ddl对象名称、ddl父对象名称、ddl执行语句、ddl执行时间存入第二辅助表中。9.根据权利要求1所述的一种postgresql数据库索引增量同步方法,其特征在于,所述目标数据库中包括第三辅助表,所述第三辅助表用于存储insert事件。10.一种postgresql数据库索引增量同步系统,其特征在于,包括:技术总结本发明属于数据库同步
技术领域
:,具体涉及一种PostgreSQL数据库索引增量同步方法及系统,在源端PostgreSQL数据库创建第一辅助表,并对数据库查询把所有的索引信息存储至第一辅助表,在源端PostgreSQL数据库创建第二辅助表,第二辅助表中包括DDL执行事件信息,创建源端PostgreSQL数据库触发器进行监听DDL执行事件信息,在执行DDL语句时根据DDL语句类型不同执行存储逻辑,利用数据同步工具将第二辅助表同步到目标数据库,在目标数据库中配置触发器监听目标数据库的INSERT操作,执行INSERT事件的语句中的DDL语句,进行特定表的DDL同步,支持只同步特定表的DDL语句,同步效率更高,可配置性更强,对源库的改动小,不需要在源库lib目录下添加预设so文件配置。技术研发人员:陆文成受保护的技术使用者:天翼云科技有限公司技术研发日:技术公布日:2024/4/7
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1