CN116932649A - 数据库同步方法、数据库同步设备以及可读存储介质 - Google Patents

数据库同步方法、数据库同步设备以及可读存储介质 Download PDF

Info

Publication number
CN116932649A
CN116932649A CN202310898334.4A CN202310898334A CN116932649A CN 116932649 A CN116932649 A CN 116932649A CN 202310898334 A CN202310898334 A CN 202310898334A CN 116932649 A CN116932649 A CN 116932649A
Authority
CN
China
Prior art keywords
change
database
synchronization
synchronous
change information
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
CN202310898334.4A
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.)
China Merchants Bank Co Ltd
Original Assignee
China Merchants Bank 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 China Merchants Bank Co Ltd filed Critical China Merchants Bank Co Ltd
Priority to CN202310898334.4A priority Critical patent/CN116932649A/zh
Publication of CN116932649A publication Critical patent/CN116932649A/zh
Pending legal-status Critical Current

Links

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/27Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
    • 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/23Updating
    • G06F16/2358Change logging, detection, and notification

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

本发明涉及信息同步技术领域,尤其涉及一种数据库同步方法、数据库同步设备以及可读存储介质。所述方法应用于数据库同步系统,数据库同步系统包括日志解析模块、同步判断模块和同步执行模块,所述方法包括以下步骤:在日志解析模块监测到有变更记录更新时,根据变更记录获取变更信息,并将变更信息封装成变更信息表后,发送至同步判断模块;在同步判断模块接收到变更信息表后,根据变更信息表,确定变更记录的变更来源;当变更来源为业务变更操作时,同步执行模块根据变更信息表,生成携带同步标识的同步执行语句,并将同步执行语句发送至目标数据库执行。实现了数据库与数据库之间的双向同步操作的同时,还可以防止同步死循环的发生。

Description

数据库同步方法、数据库同步设备以及可读存储介质
技术领域
本发明涉及信息同步技术领域,尤其涉及一种数据库同步方法、数据库同步设备以及可读存储介质。
背景技术
在多个数据库之间进行数据同步,常用的方法是通过增加特殊表的方式,实现数据库之间的同步。通过在每个需要进行同步的数据库中创建一个特殊的同步表,用于记录变更信息;在每次进行数据变更操作(如新增、修改、删除)时,在同步表中插入一条相应的记录,记录变更操作的相关信息,如表名、操作类型、数据内容、时间戳等;每个数据库定期读取同步表中的变更记录;根据同步表中的变更记录,将变更数据按照同步规则和映射关系,同步到目标数据库中。
由于通过增加特殊表的方式实现数据库之间的同步,无法准确判断数据库中数据的变更是由业务操作产生的还是同步操作产生的,因此,在对数据库进行双向同步的时候,会出现数据库之间反复同步同一数据的情况,导致数据库进入同步死循环。因此,常用的数据库双向同步方法,存在无法避免数据库进入同步死循环的问题。
上述内容仅用于辅助理解本发明的技术方案,并不代表承认上述内容是现有技术。
发明内容
本发明的主要目的在于提供一种数据库同步方法,旨在解决常用的数据库双向同步方法,存在无法避免数据库进入同步死循环的问题。
为实现上述目的,本发明提供的一种数据库同步方法,应用于数据库同步系统,所述数据库同步系统包括日志解析模块、同步判断模块和同步执行模块,所述数据库同步方法包括:
在所述日志解析模块监测到有变更记录更新时,根据所述变更记录获取变更信息,并将所述变更信息封装成变更信息表后,发送至所述同步判断模块;
在所述同步判断模块接收到所述变更信息表后,根据所述变更信息表,确定所述变更记录的变更来源;
当所述变更来源为业务变更操作时,所述同步执行模块根据所述变更信息表,生成携带同步标识的同步执行语句,并将所述同步执行语句发送至目标数据库执行,以实现数据库同步操作。
可选地,所述在所述同步判断模块接收到所述变更信息表后,根据所述变更信息表,确定所述变更记录的变更来源的步骤之后,还包括:
当所述变更来源为数据库同步操作时,所述同步执行模块执行变更记录删除操作。
可选地,所述在所述同步判断模块接收到所述变更信息表后,根据所述变更信息表,确定所述变更记录的变更来源的步骤包括:
于所述变更信息表中调用变更语句,并对所述变更语句进行分析,以确定所述变更语句是否携带同步标识;
若所述变更语句携带所述同步标识,确定所述变更来源为所述数据库同步操作;
若所述变更语句未携带所述同步标识,确定所述变更来源为所述业务变更操作。
可选地,所述当所述变更来源为业务变更操作时,所述同步执行模块根据所述变更信息表,生成携带同步标识的同步执行语句的步骤包括:
获取所述变更信息表中的所述变更信息;
根据所述变更信息,确定待同步数据,以及确定源数据库和所述目标数据库之间的映射关系;
基于所述待同步数据、所述映射关系,将所述源数据库的变更信息转换为所述目标数据库的变更信息;
添加同步标识到所述目标数据库的变更信息中,生成所述携带同步标识的同步执行语句。
可选地,所述当所述变更来源为业务变更操作时,所述同步执行模块根据所述变更信息表,生成携带同步标识的同步执行语句,并将所述同步执行语句发送至目标数据库执行,以实现数据库同步操作的步骤之后,还包括:
当所述目标数据库接收到所述携带同步标识的同步执行语句后,执行所述同步执行语句,目标数据库的变更信息;
将所述目标数据库的变更信息应用于所述目标数据库,实现所述数据库同步操作。
可选地,所述变更记录包括表变更记录和字段变更记录,所述在所述日志解析模块监测到有变更记录更新时,根据所述变更记录获取变更信息,并将所述变更信息封装成变更信息表后,发送至所述同步判断模块的步骤包括:
根据所述表变更记录,生成表结构变更信息表;
根据所述字段变更记录,生成字段变更信息表。
可选地,所述在所述同步判断模块接收到所述变更信息表后,根据所述变更信息表,确定所述变更记录的变更来源的步骤之后,还包括:
根据所述变更来源,确定是否执行所述数据库同步操作;
若所述表变更记录和所述字段变更记录的变更来源,均为数据库同步操作,确定不执行所述数据库同步操作,并删除所述表变更记录和所述字段变更记录;
若所述表变更记录,和/或所述字段变更记录的变更来源,为业务变更操作,确定执行所述数据库同步操作。
可选地,所述当所述变更来源为业务变更操作时,所述同步执行模块根据所述变更信息表,生成携带同步标识的同步执行语句的步骤包括:
基于所述表结构变更信息表和所述字段变更信息表,确定源数据库和目标数据库之间的表结构映射关系和字段映射关系;
根据所述表结构映射关系和所述表结构变更信息表,生成携带同步标识的表同步执行语句;
根据所述字段映射关系和所述字段变更信息表,生成携带同步标识的字段同步执行语句。
此外,为实现上述目的,本发明还提供一种数据库同步设备,所述数据库同步设备包括存储器、处理器及存储在所述存储器上并可在所述处理器上运行的数据库同步程序,所述数据库同步程序被所述处理器执行时实现如上所述的数据库同步方法的步骤。
此外,为实现上述目的,本发明还提供一种计算机可读存储介质,所述计算机可读存储介质上存储有数据库同步程序,所述数据库同步程序被处理器执行时实现如上所述的数据库同步方法的步骤。
本发明实施例提供了数据库同步方法、数据库同步设备以及可读存储介质,通过在所述日志解析模块监测到有变更记录更新时,根据所述变更记录获取变更信息,并将所述变更信息封装成变更信息表后,发送至所述同步判断模块;在所述同步判断模块接收到所述变更信息表后,根据所述变更信息表,确定所述变更记录的变更来源;当所述变更来源为业务变更操作时,所述同步执行模块根据所述变更信息表,生成携带同步标识的同步执行语句,并将所述同步执行语句发送至目标数据库执行。可以在实现数据库与数据库之间的双向同步操作的同时,通过将同步标识附加在同步执行语句中,在目标数据库执行该语句之后再次通过日志解析模块进行监测和判断;如果目标数据库再次将同步操作记录到日志中,由于同步标识的存在,同步判断模块可以判断出该变更记录是已经进行过同步操作的,从而避免再次进行数据库同步操作,进而可以防止同步死循环的发生。
附图说明
图1为本发明实施例涉及的数据库同步设备的硬件运行环境的架构示意图;
图2为本发明数据库同步方法的第一实施例的流程示意图;
图3为本发明数据库同步方法的第二实施例的流程示意图;
图4为本发明数据库同步方法的第三实施例的流程示意图;
图5为本发明数据库同步方法的第四实施例的流程示意图;
图6为本发明数据库同步方法的第五实施例的流程示意图;
图7为本发明数据库同步方法的第六实施例的系统架构示意图。
本发明目的的实现、功能特点及优点将结合实施例,参照附图作进一步说明。
具体实施方式
本申请数据库同步方法,通过在日志解析模块监测到有变更记录更新时,根据变更记录获取变更信息,并将变更信息封装成变更信息表后,发送至同步判断模块;在同步判断模块接收到变更信息表后,根据变更信息表,确定变更记录的变更来源;当变更来源为业务变更操作时,同步执行模块根据变更信息表,生成携带同步标识的同步执行语句,并将同步执行语句发送至目标数据库执行。实现了数据库与数据库之间的双向同步操作的同时,还可以防止同步死循环的发生。
为了更好地理解上述技术方案,下面将参照附图更详细地描述本公开的示例性实施例。虽然附图中显示了本公开的示例性实施例,然而应当理解,可以以各种形式实现本公开而不应被这里阐述的实施例所限制。相反,提供这些实施例是为了能够更透彻地理解本公开,并且能够将本公开的范围完整地传达给本领域的技术人员。
作为一种实现方案,图1为本发明实施例方案涉及的数据库同步设备的硬件运行环境的架构示意图。
如图1所示,该数据库同步设备可以包括:处理器101,例如中央处理器(CentralProcessing Unit,CPU),存储器102,通信总线103。其中,存储器102可以是高速的随机存取存储器(Random Access Memory,RAM)存储器,也可以是稳定的非易失性存储器(Non-Volatile Memory,NVM),例如磁盘存储器。存储器102可选的还可以是独立于前述处理器101的存储装置。通信总线103用于实现这些组件之间的连接通信。
本领域技术人员可以理解,图1中示出的结构并不构成对数据库同步设备的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。
如图1所示,作为一种计算机可读存储介质的存储器102中可以包括操作系统、数据存储模块、网络通信模块、用户接口模块以及数据库同步程序。
在图1所示的数据库同步设备中,处理器101、存储器102可以设置在数据库同步设备中,所述数据库同步设备通过处理器101调用存储器102中存储的数据库同步程序,并执行以下操作:
在所述日志解析模块监测到有变更记录更新时,根据所述变更记录获取变更信息,并将所述变更信息封装成变更信息表后,发送至所述同步判断模块;
在所述同步判断模块接收到所述变更信息表后,根据所述变更信息表,确定所述变更记录的变更来源;
当所述变更来源为业务变更操作时,所述同步执行模块根据所述变更信息表,生成携带同步标识的同步执行语句,并将所述同步执行语句发送至目标数据库执行,以实现数据库同步操作。
在一实施例中,处理器101可以用于调用存储器102中存储的数据库同步程序,并执行以下操作:
当所述变更来源为数据库同步操作时,所述同步执行模块执行变更记录删除操作。
在一实施例中,处理器101可以用于调用存储器102中存储的数据库同步程序,并执行以下操作:
于所述变更信息表中调用变更语句,并对所述变更语句进行分析,以确定所述变更语句是否携带同步标识;
若所述变更语句携带所述同步标识,确定所述变更来源为所述数据库同步操作;
若所述变更语句未携带所述同步标识,确定所述变更来源为所述业务变更操作。
在一实施例中,处理器101可以用于调用存储器102中存储的数据库同步程序,并执行以下操作:
获取所述变更信息表中的所述变更信息;
根据所述变更信息,确定待同步数据,以及确定源数据库和所述目标数据库之间的映射关系;
基于所述待同步数据、所述映射关系,将所述源数据库的变更信息转换为所述目标数据库的变更信息;
添加同步标识到所述目标数据库的变更信息中,生成所述携带同步标识的同步执行语句。
在一实施例中,处理器101可以用于调用存储器102中存储的数据库同步程序,并执行以下操作:
当所述目标数据库接收到所述携带同步标识的同步执行语句后,执行所述同步执行语句,目标数据库的变更信息;
将所述目标数据库的变更信息应用于所述目标数据库,实现所述数据库同步操作。
在一实施例中,处理器101可以用于调用存储器102中存储的数据库同步程序,并执行以下操作:
根据所述表变更记录,生成表结构变更信息表;
根据所述字段变更记录,生成字段变更信息表。
在一实施例中,处理器101可以用于调用存储器102中存储的数据库同步程序,并执行以下操作:
根据所述变更来源,确定是否执行所述数据库同步操作;
若所述表变更记录和所述字段变更记录的变更来源,均为数据库同步操作,确定不执行所述数据库同步操作,并删除所述表变更记录和所述字段变更记录;
若所述表变更记录,和/或所述字段变更记录的变更来源,为业务变更操作,确定执行所述数据库同步操作。
在一实施例中,处理器101可以用于调用存储器102中存储的数据库同步程序,并执行以下操作:
基于所述表结构变更信息表和所述字段变更信息表,确定源数据库和目标数据库之间的表结构映射关系和字段映射关系;
根据所述表结构映射关系和所述表结构变更信息表,生成携带同步标识的表同步执行语句;
根据所述字段映射关系和所述字段变更信息表,生成携带同步标识的字段同步执行语句。
基于上述门禁系统的硬件架构,提出本发明身份验证方法的实施例。
参照图2,在第一实施例中,所述数据库同步方法包括以下步骤:
步骤S100:在所述日志解析模块监测到有变更记录更新时,根据所述变更记录获取变更信息,并将所述变更信息封装成变更信息表后,发送至所述同步判断模块。
在本实施例中,数据库同步系统的日志解析模块对数据库的日志进行监听,以捕获由变更操作产生的变更记录。可以理解的是,对数据库的日志进行监听,指的是日志解析模块对数据库的日志进行实时的读取和解析。
可选地,对于会自动记录所有的数据变更操作,并提供API接口或查询接口来查询和获取变更记录的数据库,日志解析模块可以通过该API接口或查询接口来获取数据库的变更记录。
需要说明的是,数据库的变更操作包括但不限于向数据库表中添加新的数据,从数据库表中删除指定的数据,修改数据库表中已存在的数据的值,表结构的添加、删除、修改,修改数据库对象的名称等。
在本实施例中,日志解析模块通过对捕获到的变更记录进行解析,进而获取数据库的变更信息。
变更信息包括但不限于变更语句、变更表名、变更操作、变更事务id、变更前的数据、变更后的数据等。
具体地,日志解析模块对数据库的日志格式进行分析,以确定日志的结构;根据日志的结构,确定日志中变更记录的位置;定位到变更记录的位置,对变更记录进行监听;当有变更记录更新时,读取该变更记录至数据库同步系统,并对该变更记录进行解析,提取变更记录中的变更信息。
按照变更信息表格式,将变更信息封装成变更信息表,并将变更信息表传输至数据库同步系统的同步判断模块。
步骤S200:在所述同步判断模块接收到所述变更信息表后,根据所述变更信息表,确定所述变更记录的变更来源。
在本实施例中,数据库同步系统的同步判断模块对接收到的变更信息表进行解析,以确定该变更记录的来源,即确定该变更记录是由数据库同步操作产生的,还是由业务变更操作产生的。
可选地,可以采用同步标识的方式确定变更记录的来源。具体地,在数据库同步系统每次对目标数据库进行数据库同步操作时,在目标数据库的变更记录中添加一个同步标识,标识该变更记录是由数据库同步操作产生的,进而使同步判断模块可以通过验证同步标识的方式确定该变更记录来源,即是否是由数据库同步操作产生的。
在一具体实施方式中,可以采用同步操作日志的方式确定变更记录的来源。具体地,在数据库同步系统每次对目标数据库进行数据库同步操作之后,生成同步操作信息,并将同步操作信息保存到同步操作日志,进而使同步判断模块可以通过查询同步操作日志,以确定同步操作日志中,是否包括与该变更信息表中的变更信息对应的同步操作信息,进而确定变更记录来源,即是否是由数据库同步操作产生的。
在另一具体实施方式中,可以采用同步操作时间戳的方式确定变更记录的来源。具体地,在数据库同步系统每次对目标数据库进行数据库同步操作时,在目标数据库的变更记录中添加一个时间戳,用以表示该变更记录是在数据库同步操作执行的时间范围内产生的,进而使同步判断模块可以通过比较变更记录的时间戳和数据库同步操作的时间范围,确定变更记录的来源,即是否是由数据库同步操作产生的。
步骤S300:当所述变更来源为业务变更操作时,所述同步执行模块根据所述变更信息表,生成携带同步标识的同步执行语句,并将所述同步执行语句发送至目标数据库执行,以实现数据库同步操作。
在本实施例中,若数据库同步系统通过同步判断模块,确定变更记录的来源为业务变更操作,则同步执行模块根据日志解析模块生成的变更信息表,确定源数据库与目标数据库之间的映射关系;基于该映射关系,生成携带同步标识的同步执行语句。
需要说明的是,每一个数据库都可以是源数据库和目标数据库,但是,当一个数据库为源数据库时,该数据库不能同时为目标数据库;与之对应的,当一个数据库为目标数据库时,该数据库不能同时为源数据库。
可选地,数据库同步系统的同步执行模块可以根据映射关系,通过拼接SQL(Structured Query Language,结构化查询语言)语句的方式生成携带同步标识的同步执行语句。具体地,可以根据变更信息表中的变更信息,生成INSERT、DELETE和/或UPDATE等语句,并在生成的语句中添加同步标识,进而生成携带同步标识的同步执行语句。
示例性地,假设有两个数据库,源数据库A和目标数据库B,它们之间需要进行数据库同步操作。
数据库同步系统通过日志解析模块对数据库A的日志进行监听,捕获源数据库A由变更操作产生的变更记录,并解析该变更记录获取变更信息。假设捕获到一条变更记录:
变更语句:INSERT INTO customers(name,age,email)VALUES('John',25,'john@example.com')
变更表名:customers
变更操作:INSERT
变更事务id:12345
变更前的数据:无
变更后的数据:('John',25,'john@example.com')
根据变更信息表格式,将变更信息封装成变更信息表,并发送至同步判断模块。
数据库同步系统的同步判断模块接收到变更信息表后分析变更信息表中的变更语句,确定该变更语句未携带同步标识,变更记录的变更来源为业务变更操作。
数据库同步系统的同步执行模块根据变更信息表生成携带同步标识的同步执行语句:
INSERT INTO customers(name,age,email)VALUES('John',25,'john@example.com')--Sync
该同步执行语句携带了同步标识"--Sync",表示该变更记录是由数据库同步操作产生的。
将该语句发送至目标数据库B执行,目标数据库B执行该同步执行语句,添加了一条新的记录到表customers中。
通过以上步骤,源数据库A中的数据变更操作被同步到了目标数据库B中。
在本实施例提供的技术方案中,通过在所述日志解析模块监测到有变更记录更新时,根据所述变更记录获取变更信息,并将所述变更信息封装成变更信息表后,发送至所述同步判断模块;在所述同步判断模块接收到所述变更信息表后,根据所述变更信息表,确定所述变更记录的变更来源;当所述变更来源为业务变更操作时,所述同步执行模块根据所述变更信息表,生成携带同步标识的同步执行语句,并将所述同步执行语句发送至目标数据库执行,以实现数据库同步操作。由于在实现数据库与数据库之间的双向同步操作时,将同步标识附加在同步执行语句中,使目标数据库执行该语句之后,目标数据库的变更记录携带同步标识,进而使同步判断模块可以判断出该变更记录是已经进行过同步操作的,从而可以避免数据库同步系统对该变更操作再次进行数据库同步操作,进而可以防止同步死循环的发生。
进一步地,基于上述实施例,在一实施例中,所述在所述同步判断模块接收到所述变更信息表后,根据所述变更信息表,确定所述变更记录的变更来源的步骤之后,还包括:
步骤S400:当所述变更来源为数据库同步操作时,所述同步执行模块执行变更记录删除操作。
可选地,数据库同步系统的同步执行模块可以通过生成相记录删除语句,并将记录删除语句发送至源数据库执行,以实现将变更记录从源数据库的日志中删除。示例性地,在SQL语言中,可以使用DELETE语句来删除变更记录。
需要说明的是,在双向同步过程中,如果不进行删除操作,数据库之间可能会出现相互同步的循环,导致同一操作在不同数据库中反复执行,造成数据的不一致性和冲突。
在本实施例提供的技术方案中,当所述变更来源为数据库同步操作时通过执行变更记录删除操作,将来源为数据库同步操作的变更记录删除。可以确保每条变更记录只会被执行一次,进而可以防止数据库之间在进行双向同步时重复执行同一数据库同步操作。
进一步地,基于上述实施例,在一实施例中,所述在所述同步判断模块接收到所述变更信息表后,根据所述变更信息表,确定所述变更记录的变更来源的步骤包括:
步骤S230:于所述变更信息表中调用变更语句,并对所述变更语句进行分析,以确定所述变更语句是否携带同步标识;
步骤S240:若所述变更语句携带所述同步标识,确定所述变更来源为所述数据库同步操作;
步骤S250:若所述变更语句未携带所述同步标识,确定所述变更来源为所述业务变更操作。
在本实施例中,由于数据库同步系统的同步执行模块生成的同步执行语句携带有同步标识,因此,当目标数据库执行该同步执行语句,实现数据库同步之后,其产生的变更记录中包含的变更语句信息,会携带有该同步标识。因此,同步判断模块可以通过分析变更信息表中的变更语句,确定该变更语句是否携带有同步标识,进而确定变更记录的变更来源是否为数据库同步操作。
可选地,数据库同步系统先预设一同步标识,在进行变更来源判断时,可以通过比对,确定变更语句中是否包含与该同步标识一致的字符串;若是,则该变更语句包含同步标识,进而确定变更来源为数据库同步操作;若否,则该变更语句不包含同步标识,进而确定变更来源为业务变更操作。
需要说明的是,预设的同步标识,应当与数据库中的SQL语句区别开,避免数据库在执行SQL语句时,出现执行冲突。
在本实施例提供的技术方案中,由于通过变更语句是否携带同步标识,确定所述变更来源为数据库同步操作还是业务变更操作,所以可以确保同步判断模块能够准确地确定变更记录的变更来源,进而提高同步判断的准确性和可靠性,进一步避免了错误的同步操作或删除操作。
参照图3,基于上述实施例,在第二实施例中,所述当所述变更来源为业务变更操作时,所述同步执行模块根据所述变更信息表,生成携带同步标识的同步执行语句的步骤包括:
步骤S310:获取所述变更信息表中的所述变更信息;
步骤S320:根据所述变更信息,确定待同步数据,以及确定源数据库和所述目标数据库之间的映射关系;
步骤S330:基于所述待同步数据、所述映射关系,将所述源数据库的变更信息转换为所述目标数据库的变更信息;
步骤S340:添加同步标识到所述目标数据库的变更信息中,生成所述携带同步标识的同步执行语句。
在本实施例中,变更信息表记录了源数据库中发生变更的数据,包括表名、操作类型和变更后的数据等内容,进而可以根据变更信息表中的表名和操作类型,确定待同步数据。
可选地,可以通过对比变更信息表中,变更前的数据和变更后的数据,确定源数据库与目标数据库之间的映射关系。
根据变更信息表中的变更信息,确定源数据库和所述目标数据库之间的映射关系,其中,映射关系包括表名映射关系、字段映射关系和操作类型映射关系等。
在本实施例中,将变更信息表中的表名、字段信息和/或操作类型等待同步数据,根据映射关系进行转换。若字段信息为待同步数据,则进行字段映射;若表名为待同步数据,则进行表名映射。
由于源数据库和目标数据库之间可能存在不同的数据结构和格式,因此,需要根据映射关系和变更信息,生成同步执行语句,以便在目标数据库中能够正确地进行同步操作。
在本实施例提供的技术方案中,通过根据变更信息,确定待同步数据,以及源数据库和目标数据库之间的映射关系,明确了数据库同步的范围,进一步确保数据库同步系统只同步需要同步的数据。在确定了待同步数据和映射关系之后,将源数据库的变更信息转换为目标数据库的变更信息,通过这样的转换,在数据库同步过程中,变更信息能够正确地被转换和同步,进一步保证了数据库同步的准确性。通过添加同步标识到目标数据库的变更信息中,以标识这些变更信息是由数据库同步系统生成的,使目标数据库执行同步操作之后,目标数据库的变更记录携带同步标识,进而防止数据库同步系统对该变更操作反复进行同步操作。
进一步地,基于上述实施例,在一实施例中,变更信息表可以包括表结构变更信息表和字段变更信息表。可选地,可以根据表结构变更信息表和/或字段变更信息表,生成携带同步标识的表同步执行语句和/或字段同步执行语句。
在本实施例中,先通过数据库同步系统的同步执行模块对表结构变更信息表和/或字段变更信息表进行解析;获取表结构变更信息表中的表结构变更前数据以及表结构变更后数据,和/或字段变更信息表中的字段变更前数据以及字段变更后数据。
再通过对比表结构变更前数据以及表结构变更后数据,确定表结构映射关系,和/或通过对比字段变更前数据以及字段变更后数据,确定字段映射关系。其中,表结构映射关系为源数据库与目标数据库之间的表结构映射关系;字段映射关系为源数据库与目标数据库之间的字段映射关系。
最后,可以根据表结构映射关系和表结构变更信息表,生成携带同步标识的表同步执行语句;和/或根据字段映射关系和字段变更信息表,生成携带同步标识的字段同步执行语句。
可选地,由于变更操作前后,数据库的表和字段名称可能不完全相同,或者存在命名规范差异,因此,可以根据表和字段的名称对应关系来确定映射关系。由于变更操作前后,数据库的字段数据类型和长度可能不完全相同,因此,可以根据数据类型的兼容性和长度的兼容性来确定映射关系。例如,变更操作前后,数据库的VARCHAR(100)类型字段变更为VARCHAR(255)类型字段,因此需要建立从VARCHAR(100)类型字段映射到VARCHAR(255)类型字段的映射关系。
可选地,生成同步执行语句的方法包括但不限于使用命令行工具、特定编程语言的库和框架等。实例性地,采用命令行工具生成同步执行语句,例如,在MySQL中,使用mysqldump命令导出数据库表结构和字段,并将其保存为SQL文件。示例性地,采用特定编程语言的库和框架生成同步执行语句,例如,采用Java中的Hibernate框架,使用SchemaExport生成数据库表同步执行语句。
在本实施例提供的技术方案中,由于同步执行模块通过确定表结构和字段的映射关系,并根据这些映射关系和变更信息表生成携带同步标识的表同步执行语句和字段同步执行语句,进而使数据库同步操作能够正确地将源数据库的表结构和字段同步到目标数据库,因此,可以进一步精确数据库之间进行同步操作时,表结构和字段的同步。
参照图4,基于上述实施例,在第三实施例中,所述当所述变更来源为业务变更操作时,所述同步执行模块根据所述变更信息表,生成携带同步标识的同步执行语句,并将所述同步执行语句发送至目标数据库执行,以实现数据库同步操作的步骤之后,还包括:
步骤S500:当所述目标数据库接收到所述携带同步标识的同步执行语句后,执行所述同步执行语句,获得目标数据库的变更信息;
步骤S600:将所述目标数据库的变更信息应用于所述目标数据库,实现所述数据库同步操作。
在本实施例中,在目标数据库接收到携带同步标识的同步执行语句之后,解析该同步执行语句,获取表名、字段信息、操作类型等变更信息;根据表名和字段信息,验证目标数据库中是否存在对应的表和字段;若不存在,进行相应的创建和/或修改表结构操作,以确保正确地应用变更信息;根据操作类型,执行与作类型相应的数据库操作,将变更信息应用到目标数据库中。
目标数据库根据同步执行语句执行相应的插入、更新、删除等操作,将变更操作应用到目标数据库中。
在目标数据库完成数据库同步操作之后,更新一条携带同步标识的变更记录,用于防止数据库同步进入死循环。
在本实施例提供的技术方案中,目标数据库接收到所述携带同步标识的同步执行语句后,通过执行同步执行语句,获得目标数据库的变更信息,并应用该变更信息,从而将源数据库中的变更操作同步到目标数据库中,进而实现数据库同步。
参照图5,基于上述实施例,在第四实施例中,所述变更记录包括表变更记录和字段变更记录,所述在所述日志解析模块监测到有变更记录更新时,根据所述变更记录获取变更信息,并将所述变更信息封装成变更信息表后,发送至所述同步判断模块的步骤包括:
步骤S710:根据所述表变更记录,生成表结构变更信息表;
步骤S720:根据所述字段变更记录,生成字段变更信息表。
在本实施例中,在日志解析模块监测到有表变更记录更新时,获取表变更记录中的表变更信息,表变更信息包括但不限于表名、操作类型等;将表名、操作类型等表变更信息,根据表变更信息表格式,封装成表结构变更信息表。
在日志解析模块监测到有字段变更记录更新时,获取字段变更记录中的字段变更信息,字段变更信息包括字段值、字段类型、操作类型等;将字段值、字段类型、操作类型等字段变更信息,根据表变更信息表格式,封装成字段结构变更信息表。
在本实施例提供的技术方案中,通过将表和字段的变更记录转化为相应的表变更信息和字段变更信息,并将其封装为相应的表结构变更信息表和字段变更信息表,使变更信息表中包含了所有表和字段的变更信息,供同步判断模块和同步执行模块调用。
参照图6,基于上述实施例,在第五实施例中,所述在所述同步判断模块接收到所述变更信息表后,根据所述变更信息表,确定所述变更记录的变更来源的步骤之后,还包括:
步骤S730:根据所述变更来源,确定是否执行所述数据库同步操作;
步骤S740:若所述表变更记录和所述字段变更记录的变更来源,均为数据库同步操作,确定不执行所述数据库同步操作,并删除所述表变更记录和所述字段变更记录;
步骤S750:若所述表变更记录,和/或所述字段变更记录的变更来源,为业务变更操作,确定执行所述数据库同步操作。
在本实施例中,根据表结构变更信息表和字段变更信息表中的信息,确定表变更记录和字段变更记录的变更来源,以确定是否执行数据库同步操作。
当表变更记录和字段变更记录的变更来源均为数据库同步操作时,说明该表变更记录和字段变更记录为之前的数据库同步操作产生的,因此不需要再次执行数据库同步操作。
在确定不执行数据库同步操作之后,可以将表变更记录和字段变更记录从变更信息表中删除,以防止数据库同步操作进入死循环。
在本实施例中,数据库同步操作包括表结构同步操作和字段同步操作。当表变更记录的变更来源为业务变更操作,而字段变更记录的变更来源为数据库同步操作时,只执行表结构同步操作;当字段变更记录的变更来源为业务变更操作,而表变更记录的变更来源为数据库同步操作时,只执行字段同步操作;表变更记录和字段变更记录的变更来源均为业务变更操作时,同时执行表结构同步操作和字段同步操作。
在本实施例提供的技术方案中,通过表变更记录和所述字段变更记录的变更来源,判断是否执行数据库同步操作,并在确定执行数据库同步操作后,进一步确定执行表结构同步操作和/或字段同步操作,进而提高了数据库同步的精确性。
图7为本发明数据库同步方法的第六实施例的系统架构示意图。
在本实施例中,日志解析模块100,用于实时监听源数据库400的日志,并根据捕获到的变更记录解析出源数据库400的变更语句、变更表名、变更操作、变更事务ID、变更前的数据和变更后的数据等变更信息。然后,将这些变更信息封装成变更信息表,然后发送给数据库同步系统的同步判断模块200。
同步判断模块200,用于对接收到的变更信息表进行解析,并确定变更记录是由数据库同步操作产生的,还是由业务变更操作产生的。
同步执行模块300,用于根据日志解析模块100生成的变更信息表,确定源数据库400与目标数据库500之间的映射关系;基于变更信息表和该映射关系,生成携带同步标识的同步执行语句;将同步执行语句发送至目标数据库500执行,以实现数据库同步操作。
此外,本领域普通技术人员可以理解的是实现上述实施例的方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成。该计算机程序包括程序指令,计算机程序可以存储于一存储介质中,该存储介质为计算机可读存储介质。该程序指令被数据库同步设备中的至少一个处理器执行,以实现上述方法的实施例的流程步骤。
因此,本发明还提供一种计算机可读存储介质,所述计算机可读存储介质存储有数据库同步程序,所述数据库同步程序被处理器执行时实现如上实施例所述的数据库同步方法的各个步骤。
其中,所述计算机可读存储介质可以是U盘、移动硬盘、只读存储器(Read-OnlyMemory,ROM)、磁碟或者光盘等各种可以存储程序代码的计算机可读存储介质。
需要说明的是,由于本申请实施例提供的存储介质,为实施本申请实施例的方法所采用的存储介质,故而基于本申请实施例所介绍的方法,本领域所属人员能够了解该存储介质的具体结构及变形,故而在此不再赘述。凡是本申请实施例的方法所采用的存储介质都属于本申请所欲保护的范围。
本领域内的技术人员应明白,本发明的实施例可提供为方法、系统或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
应当注意的是,在权利要求中,不应将位于括号之间的任何参考符号构造成对权利要求的限制。单词“包含”不排除存在未列在权利要求中的部件或步骤。位于部件之前的单词“一”或“一个”不排除存在多个这样的部件。本发明可以借助于包括有若干不同部件的硬件以及借助于适当编程的计算机来实现。在列举了若干装置的单元权利要求中,这些装置中的若干个可以是通过同一个硬件项来具体体现。单词第一、第二以及第三等的使用不表示任何顺序。可将这些单词解释为名称。
尽管已描述了本发明的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例做出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本发明范围的所有变更和修改。
显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。

Claims (10)

1.一种数据库同步方法,其特征在于,应用于数据库同步系统,所述数据库同步系统包括日志解析模块、同步判断模块和同步执行模块,所述数据库同步方法包括:
在所述日志解析模块监测到有变更记录更新时,根据所述变更记录获取变更信息,并将所述变更信息封装成变更信息表后,发送至所述同步判断模块;
在所述同步判断模块接收到所述变更信息表后,根据所述变更信息表,确定所述变更记录的变更来源;
当所述变更来源为业务变更操作时,所述同步执行模块根据所述变更信息表,生成携带同步标识的同步执行语句,并将所述同步执行语句发送至目标数据库执行,以实现数据库同步操作。
2.如权利要求1所述的数据库同步方法,其特征在于,所述在所述同步判断模块接收到所述变更信息表后,根据所述变更信息表,确定所述变更记录的变更来源的步骤之后,还包括:
当所述变更来源为数据库同步操作时,所述同步执行模块执行变更记录删除操作。
3.如权利要求2所述的数据库同步方法,其特征在于,所述在所述同步判断模块接收到所述变更信息表后,根据所述变更信息表,确定所述变更记录的变更来源的步骤包括:
于所述变更信息表中调用变更语句,并对所述变更语句进行分析,以确定所述变更语句是否携带同步标识;
若所述变更语句携带所述同步标识,确定所述变更来源为所述数据库同步操作;
若所述变更语句未携带所述同步标识,确定所述变更来源为所述业务变更操作。
4.如权利要求1所述的数据库同步方法,其特征在于,所述当所述变更来源为业务变更操作时,所述同步执行模块根据所述变更信息表,生成携带同步标识的同步执行语句的步骤包括:
获取所述变更信息表中的所述变更信息;
根据所述变更信息,确定待同步数据,以及确定源数据库和所述目标数据库之间的映射关系;
基于所述待同步数据、所述映射关系,将所述源数据库的变更信息转换为所述目标数据库的变更信息;
添加同步标识到所述目标数据库的变更信息中,生成所述携带同步标识的同步执行语句。
5.如权利要求1所述的数据库同步方法,其特征在于,所述当所述变更来源为业务变更操作时,所述同步执行模块根据所述变更信息表,生成携带同步标识的同步执行语句,并将所述同步执行语句发送至目标数据库执行,以实现数据库同步操作的步骤之后,还包括:
当所述目标数据库接收到所述携带同步标识的同步执行语句后,执行所述同步执行语句,获得目标数据库的变更信息;
将所述目标数据库的变更信息应用于所述目标数据库,实现所述数据库同步操作。
6.如权利要求1所述的数据库同步方法,其特征在于,所述变更记录包括表变更记录和字段变更记录,所述在所述日志解析模块监测到有变更记录更新时,根据所述变更记录获取变更信息,并将所述变更信息封装成变更信息表后,发送至所述同步判断模块的步骤包括:
根据所述表变更记录,生成表结构变更信息表;
根据所述字段变更记录,生成字段变更信息表。
7.如权利要求6所述的数据库同步方法,其特征在于,所述在所述同步判断模块接收到所述变更信息表后,根据所述变更信息表,确定所述变更记录的变更来源的步骤之后,还包括:
根据所述变更来源,确定是否执行所述数据库同步操作;
若所述表变更记录和所述字段变更记录的变更来源,均为数据库同步操作,确定不执行所述数据库同步操作,并删除所述表变更记录和所述字段变更记录;
若所述表变更记录,和/或所述字段变更记录的变更来源,为业务变更操作,确定执行所述数据库同步操作。
8.如权利要求6所述的数据库同步方法,其特征在于,所述当所述变更来源为业务变更操作时,所述同步执行模块根据所述变更信息表,生成携带同步标识的同步执行语句的步骤包括:
基于所述表结构变更信息表和所述字段变更信息表,确定源数据库和目标数据库之间的表结构映射关系和字段映射关系;
根据所述表结构映射关系和所述表结构变更信息表,生成携带同步标识的表同步执行语句;
根据所述字段映射关系和所述字段变更信息表,生成携带同步标识的字段同步执行语句。
9.一种数据库同步设备,其特征在于,所述数据库同步设备包括:存储器、处理器及存储在所述存储器上并可在所述处理器上运行的数据库同步程序,所述数据库同步程序配置为实现如权利要求1至8中任一项所述的数据库同步方法的步骤。
10.一种可读存储介质,其特征在于,所述可读存储介质上存储有数据库同步程序,所述数据库同步程序被处理器执行时实现如权利要求1至8任一项所述的数据库同步方法的步骤。
CN202310898334.4A 2023-07-20 2023-07-20 数据库同步方法、数据库同步设备以及可读存储介质 Pending CN116932649A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202310898334.4A CN116932649A (zh) 2023-07-20 2023-07-20 数据库同步方法、数据库同步设备以及可读存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202310898334.4A CN116932649A (zh) 2023-07-20 2023-07-20 数据库同步方法、数据库同步设备以及可读存储介质

Publications (1)

Publication Number Publication Date
CN116932649A true CN116932649A (zh) 2023-10-24

Family

ID=88376964

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202310898334.4A Pending CN116932649A (zh) 2023-07-20 2023-07-20 数据库同步方法、数据库同步设备以及可读存储介质

Country Status (1)

Country Link
CN (1) CN116932649A (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN117349297A (zh) * 2023-12-06 2024-01-05 江西云眼视界科技股份有限公司 一种基于表结构变更的数据交换方法及系统

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN117349297A (zh) * 2023-12-06 2024-01-05 江西云眼视界科技股份有限公司 一种基于表结构变更的数据交换方法及系统

Similar Documents

Publication Publication Date Title
CN107515874B (zh) 一种分布式非关系型数据库中同步增量数据的方法与设备
CN103793432B (zh) 一种数据库读写分离方法及装置
CN111782265B (zh) 基于字段级血缘关系的软件资源系统及其建立方法
AU2017268630A1 (en) Method, device, server and storage apparatus of reviewing SQL
CN109933632B (zh) 一种数据库的数据迁移方法、装置及设备
CN112632038A (zh) 数据库迁移方法、装置、终端及存储介质
CN111209344A (zh) 数据同步方法及装置
CN112307124B (zh) 数据库同步验证方法、装置、设备及存储介质
CN116932649A (zh) 数据库同步方法、数据库同步设备以及可读存储介质
CN111158741A (zh) 监控业务模块对第三方类库依赖关系变化的方法及装置
CN113626416A (zh) 数据校验的方法、装置、计算设备和存储介质
CN112231407A (zh) PostgreSQL数据库的DDL同步方法、装置、设备和介质
CN114647698A (zh) 数据同步方法、装置及计算机存储介质
EP3929882A1 (en) Access control
CN111339118A (zh) 基于Kubernetes的资源变更历史记录方法及装置
CN114490554A (zh) 数据同步方法及其装置、电子设备及存储介质
CN114238527A (zh) 基于对象关系映射的数据处理方法和数据处理装置
CN110688147A (zh) 一种进行元数据打包与解析的方法
CN112015463B (zh) 一种配置版本管理装置及其工作方法
CN109254856B (zh) 智能pos服务端提供接口给客户端的方法
JP5337187B2 (ja) 移行テスト支援システム、移行テスト支援プログラム、移行テスト支援方法
Chandrasekaran et al. Matching scenarios with timing constraints
CN115544169A (zh) 一种数据同步方法、装置、设备及存储介质
CN106873956B (zh) 基于连续关键字的代码补全方法及装置
CN111639478B (zh) 一种基于excel文档的数据自动稽核方法及系统

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