CN116881354A - 一种异构数据库间不中断复制方法及系统 - Google Patents

一种异构数据库间不中断复制方法及系统 Download PDF

Info

Publication number
CN116881354A
CN116881354A CN202310678457.7A CN202310678457A CN116881354A CN 116881354 A CN116881354 A CN 116881354A CN 202310678457 A CN202310678457 A CN 202310678457A CN 116881354 A CN116881354 A CN 116881354A
Authority
CN
China
Prior art keywords
replication
message middleware
link
distributed message
data
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
CN202310678457.7A
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.)
Industrial and Commercial Bank of China Ltd ICBC
Original Assignee
Industrial and Commercial Bank of China Ltd ICBC
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 Industrial and Commercial Bank of China Ltd ICBC filed Critical Industrial and Commercial Bank of China Ltd ICBC
Priority to CN202310678457.7A priority Critical patent/CN116881354A/zh
Publication of CN116881354A publication Critical patent/CN116881354A/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
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/16Error detection or correction of the data by redundancy in hardware
    • G06F11/20Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements
    • G06F11/202Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where processing functionality is redundant
    • G06F11/2023Failover techniques
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/3003Monitoring arrangements specially adapted to the computing system or computing system component being monitored
    • G06F11/302Monitoring arrangements specially adapted to the computing system or computing system component being monitored where the computing system component is a software system
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/3055Monitoring arrangements for monitoring the status of the computing system or of the computing system component, e.g. monitoring if the computing system is on, off, available, not available
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/546Message passing systems or structures, e.g. queues
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/54Indexing scheme relating to G06F9/54
    • G06F2209/547Messaging middleware
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

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

Abstract

本文涉及大数据领域,提供了一种异构数据库间不中断复制方法及系统,方法包括:读取并解析源数据库的日志文件得到源数据库的操作记录,将操作记录转换成符合第一分布式消息中间件的结构化数据后由主复制链路发送至第一分布式消息中间件;从第一分布式消息中间件读取操作记录的结构化数据,将读取到的结构化数据转换为目标数据库的执行语句,将执行语句执行到目标数据库中;监控主复制链路的状态,当主复制链路的状态为中断时启动第一备复制链路,以使第一备复制链路获取操作记录的结构化数据并发送至第一分布式消息中间件。本实施例能够实现不中断复制,且能够简化链路结构、节约资源消耗、减轻源数据库的负载压力。

Description

一种异构数据库间不中断复制方法及系统
技术领域
本文涉及大数据领域,尤其涉及一种异构数据库间不中断复制方法及系统。
背景技术
异构数据库复制指的是在多个类型不同、结构不同的数据库之间进行数据传输的技术(例如DB2到Oracle、DB2到GaussDB),现有技术中,常见的异构数据库复制产品包括QREP、CDC、DRS等,这些异构数据库复制产品存在如下缺陷:
(1)大多需要通过搭建多条完整的数据复制链路来实现高可用,存在资源消耗大的问题,且会给源数据库带来较大的负载压力,导致复制性能低下,产生资源浪费;
(2)信息化时代下业务数据与日俱增,异构数据库之间的复制常因负载过大、网络抖动等因素导致传输中断,且因其高可用能力不足无法快速恢复环境,在对时效性要求极高的业务场景下,只能人工承受损失,会带来不可估量的影响;
(3)中断恢复后的断点续传能力不足,为避免丢数漏数只能将所有数据都重新发送一次,存在资源浪费;
(4)因异构数据库之间存在较大差异,导致多类型数据库之间的一致性协调能力不够,存在架构不清晰、运维成本高的问题。
发明内容
本文用于解决现有技术中异构数据库间数据复制存在源数据库负载压力大,进而导致复制性能低下,产生资源浪费的问题。
为了解决上述技术问题,本文一方面提供一种异构数据库间不中断复制方法,预先构建主复制链路及第一备复制链路,分别连接第一分布式消息中间件,所述方法包括:
读取并解析源数据库的日志文件得到源数据库的操作记录,将所述操作记录转换成符合第一分布式消息中间件的结构化数据后由所述主复制链路发送至第一分布式消息中间件;
从所述第一分布式消息中间件读取操作记录的结构化数据,将读取到的结构化数据转换为目标数据库的执行语句,将执行语句执行到目标数据库中;
监控主复制链路的状态,当主复制链路的状态为中断时启动所述第一备复制链路,以使所述第一备复制链路获取操作记录的结构化数据并发送至所述第一分布式消息中间件。
本文进一步实施例中,还包括:
确定复制状态并存储于复制状态表中;
其中,所述复制状态包括:发送成功的操作记录在源数据库中的日志位点、操作时间及在第一分布式消息中间件中的偏移量;
当主复制链路的状态为中断时,所述第一备复制链路根据复制状态表中发生中断时刻的日志点位,获取操作记录的结构化数据并发送至所述第一分布式消息中间件。
本文进一步实施例中,发生中断的时刻根据主复制链路状态为中断的时刻及主复制链路状态的监测时间间隔确定。
本文进一步实施例中,还预先构建有第二备复制链路,连接第二分布式消息中间件,用于与所述主复制链路同步将操作记录的结构化数据发送至所述第二分布式消息中间件,所述方法还包括:
监控第一备复制链路的状态及第二备复制链路的状态;
当第一备复制链路的状态为中断且第二备复制链路正常时将所述第二备复制链路连接至第一分布式消息中间件,以使所述第二备复制链路根据所述复制状态表中发生中断时刻的日志位点,获取操作记录的结构化数据并发送至所述第一分布式消息中间件。
本文进一步实施例中,所述方法还包括:
确定发送成功的操作记录在第二分布式消息中间件中的偏移量并记录于复制状态表中;
监控所述第一分布式消息中间件的状态,当所述第一分布式消息中间件的状态为中断时,保持所述第二备复制链路连接第二分布式消息中间件,根据发生中断时刻日志点位在第二分布式消息中间件中的偏移量,从所述第二分布式消息中间件读取操作记录的结构化数据。
本文进一步实施例中,还包括:
监测复制状态表中第一分布式消息中间件与第二分布式消息中间件中的偏移量是否不一致;
监测各复制链路发送数据量的总和与从分布式消息中间件获取的数据量是否不一致;
监测各分布式消息中间件是否达到存储上限;
若至少存在一个监测结果为是,则发出报警。
本文进一步实施例中,将读取到的结构化数据转换为目标数据库的执行语句之前,还包括:
确定读取到的结构化数据的数据源;
从预处理配置表中查询所述数据源的处理规则;
若查询成功,则根据查询出的处理规则对读取到的结构化数据进行处理,将处理后的数据转换为目标数据库的执行语句;若查询失败,则将读取到的结构化数据转换为目标数据库的执行语句。
本文另一方面,提供一种异构数据库间不中断复制系统,所述系统包括:日志解析单元、主复制链路、监控单元、第一备复制链路、第一分布式消息中间件、数据消费单元及数据处理单元;
所述日志解析单元用于读取并解析源数据库的日志文件得到源数据库的操作记录,将所述操作记录转换为符合第一分布式消息中间件的结构化数据;
所述主复制链路连接所述日志解析单元及所述第一分布式消息中间件,用于将操作记录的结构化数据发送至所述第一分布式消息中间件;
所述监控单元连接所述主复制链路及第一备复制链路,第一备复制链路连接第一分布式消息中间件,用于监控主复制链路的状态,当主复制链路的状态为中断时启动所述第一备复制链路,以使所述第一备复制链路获取操作记录的结构化数据并发送至所述第一分布式消息中间件;
所述第一分布式消息中间件用于缓存操作记录的结构化数据;
所述数据消费单元连接所述第一分布式消息中间件及所述数据处理单元,用于从所述第一分布式消息中间件读取操作记录的结构化数据;
所述数据处理单元用于将读取到的结构化数据转换为目标数据库的执行语句,将执行语句执行到目标数据库中。
本文进一步实施例中,所述数据消费单元包括多个,所述监控单元还用于:
计算所述数据消费单元获取速率与各复制链路发送速率的比值;
根据所述比值,将相应数据量的数据消费单元连接至当前有效的复制链路,启动连接好的数据消费单元。
本文进一步实施例中,所述系统还包括:所述监控单元还用于:
确定复制状态并记录于复制状态表中,其中,所述复制状态包括:发送成功的操作记录在源数据库中的日志位点、操作时间及在第一分布式消息中间件中的偏移量;
当主复制链路的状态为中断时,控制所述第一备复制链路根据复制状态表中发生中断时刻的日志点位,获取操作记录的结构化数据并发送至所述第一分布式消息中间件。
本文进一步实施例中,所述系统还包括:第二备复制链路及第二分布式消息中间件,所述第二备复制链路未启用时连接所述第二分布式消息中间件,用于与所述主复制链路同步将操作记录的结构化数据发送至所述第二分布式消息中间件;
所述监控单元还用于:监控第一备复制链路的状态及第二备复制链路的状态,当第一备复制链路的状态为中断且第二备复制链路正常时将所述第二备复制链路连接至第一分布式消息中间件,以使所述第二备复制链路根据所述复制状态表中发生中断时刻的日志位点,获取操作记录的结构化数据并发送至所述第一分布式消息中间件。
本文进一步实施例中,所述监控单元,还用于:
确定发送成功的操作记录在第二分布式消息中间件中的偏移量并记录于复制状态表中;
监控所述第一分布式消息中间件的状态,若所述第一分布式消息中间件的状态为中断时,将所述数据消费单元连接所述第一分布式消息中间件更改为连接所述第二分布式消息中间件,控制所述数据消费单元根据发生中断的日志点位在第二分布式消息中间件中的偏移量,从所述第二分布式消息中间件读取操作记录的结构化数据。
本文进一步实施例中,所述监控单元还用于:
监测复制状态表中第一分布式消息中间件与第二分布式消息中间件中的偏移量是否不一致;
监测各复制链路发送数据量的总和与数据消费单元获取的数据量是否不一致;
监测各分布式消息中间件是否达到存储上限;
若至少存在一个监测结果为是,则发出报警。
本文进一步实施例中,所述数据消费单元包括多个,所述监控单元还用于:
计算所述数据消费单元获取速率与各复制链路发送速率的比值;
根据所述比值,将相应数据量的数据消费单元连接至当前有效的复制链路,启动连接好的数据消费单元。
作为本文进一步实施例中,数据处理单元还用于:确定读取到的结构化数据的数据源;
从预处理配置表中查询所述数据源的处理规则;
若查询成功,则根据查询出的处理规则对读取到的结构化数据进行处理,将处理后的数据转换为目标数据库的执行语句;若查询失败,则将读取到的结构化数据转换为目标数据库的执行语句。
本文另一方面提供一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现前述任一实施例所述的方法。
本文另一方面,提供一种计算机存储介质,其上存储有计算机程序,所述计算机程序被计算机设备的处理器执行时实现前述任一实施例所述的方法。
本文提供的异构数据库间不中断复制方法及系统,通过共享多条链路中的日志解析单元、第一分布式消息中间件、数据消费单元及数据处理单元,能够实现不中断复制的同时简化链路结构、节约资源消耗、减轻源数据库的负载压力;通过记录发送成功的操作记录在源数据库中的日志位点,能够保证在主复制链路中断时,第一备复制链路能够实现断点续传,降低对上下游的影响;通过设置第二备复制链路且与第二分布式消息中间件连接,且与主复制链路同步获取操作记录的结构化数据,能够保证数据不会丢失,同时,还可以在第一备复制链路异常时,将第二备复制链路连接至第一分布式消息中间件,进一步实现高可用;通过记录发送成功的操作记录的结构化数据在各分布式消息中间件中的偏移量,能够保证在第一分布式消息中间件发生故障时,数据消费单元从发生中断时的偏移量快速获取数据,保障高可用的时效性;通过主复制链路、第一备复制链路、第二备复制链路及第二分布式消息中间件的设置,能够保障高可用架构的清晰化,针对不同的故障场景有不同的切换方案,降低故障影响时间,有效提高对外服务的连续性水平。
总结而言,本文提供的方法及系统可在各链路及第一分布式消息中间件故障时实现快速切换,将故障期间服务不可用的时间降低为秒级,有效提升对外服务的连续性水平。
为让本文的上述和其他目的、特征和优点能更明显易懂,下文特举较佳实施例,并配合所附图式,作详细说明如下。
附图说明
为了更清楚地说明本文实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本文的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1示出了本文实施例异构数据库间不中断复制系统的第一结构图;
图2示出了本文实施例异构数据库间不中断复制系统的第二结构图;
图3示出了本文实施例异构数据库间不中断复制系统的第三结构图;
图4示出了本文实施例异构数据库间不中断复制系统的第四结构图;
图5示出了本文实施例异构数据库间不中断复制方法的第一流程图;
图6示出了本文实施例异构数据库间不中断复制方法的第二流程图;
图7示出了本文实施例异构数据库间不中断复制方法的第三流程图;
图8示出了本文实施例异构数据库间不中断复制方法的第四流程图;
图9示出了本文实施例异构数据库间不中断复制方法的第五流程图;
图10示出了本文实施例异构数据库间不中断复制方法的第六流程图;
图11示出了本文具体实施例的异构数据库间不中断复制方法的流程图;
图12示出了本文实施例计算机设备的结构图。
附图符号说明:
101、日志解析单元;
102、主复制链路;
103、监控单元;
104、第一备复制链路;
105、第一分布式消息中间件;
106、数据消费单元;
107、数据处理单元;
108、日志回放单元;
109、第二备复制链路;
110、第二分布式消息中间件;
1202、计算机设备;
1204、处理器;
1206、存储器;
1208、驱动机构;
1210、输入/输出模块;
1212、输入设备;
1214、输出设备;
1216、呈现设备;
1218、图形用户接口;
1220、网络接口;
1222、通信链路;
1224、通信总线。
具体实施方式
下面将结合本文实施例中的附图,对本文实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本文一部分实施例,而不是全部的实施例。基于本文中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本文保护的范围。
需要说明的是,本文的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本文的实施例能够以除了在这里图示或描述的那些以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、装置、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
本说明书提供了如实施例或流程图所述的方法操作步骤,但基于常规或者无创造性的劳动可以包括更多或者更少的操作步骤。实施例中列举的步骤顺序仅仅为众多步骤执行顺序中的一种方式,不代表唯一的执行顺序。在实际中的系统或装置产品执行时,可以按照实施例或者附图所示的方法顺序执行或者并行执行。
需要说明的是,本文的异构数据库间不中断复制方法及系统可用于金融领域,也可用于除金融领域之外的任意领域,本文对异构数据库间不中断复制方法及系统的应用领域不做限定。
本文一实施例中,提供一种异构数据库间不中断复制系统,如图1所示,包括:日志解析单元101、主复制链路102、监控单元103、第一备复制链路104、第一分布式消息中间件105、数据消费单元106及数据处理单元107。
日志解析单元101用于读取并解析源数据库的日志文件得到源数据库的操作记录,将所述操作记录转换为符合第一分布式消息中间件105的结构化数据。
主复制链路102连接日志解析单元101及第一分布式消息中间件105,用于将操作记录的结构化数据发送至第一分布式消息中间件105。
监控单元103连接主复制链路102及第一备复制链路104,第一备复制链路104连接第一分布式消息中间件105,用于监控主复制链路的状态,当主复制链路的状态为中断时启动第一备复制链路104,以使第一备复制链路104获取操作记录的结构化数据并发送至第一分布式消息中间件105。
第一分布式消息中间件105用于缓存操作记录的结构化数据。
数据消费单元106连接第一分布式消息中间件105及数据处理单元107,用于从第一分布式消息中间件105读取操作记录的结构化数据。
数据处理单元107用于读取操作记录的结构化数据,将读取到的结构化数据转换为目标数据库的执行语句,将执行语句执行到目标数据库中。
具体实施时,日志解析单元101可配置于源数据库中,主复制链路102、监控单元103、第一备复制链路104、第一分布式消息中间件105、数据消费单元106及数据处理单元107配置于源数据库及目标数据库之间的中间设备中。
源数据库中存储有多个数据表,如图1中的TableA……Table N。操作记录例如为SQL语句,涉及到的操作包括但不限于UPDATE、DELETE、INSERT、ALTER。源数据库与目标数据库为异构数据库,即源数据库与目标数据中的类型及机构不同,例如DB2到Oracle、DB2到GaussDB,源数据库与目标数据库中至少部分数据相同。
本文所述的分布式消息中间件为KAFKA集群,KAFKA支持在分布式系统中存储、发送、接收消息,在分布式场景下实现跨进程通信,通过分布式部署机制有效保障高可用能力和横向扩展能力,满足数据传输的需求,同时降低多个系统之间的耦合程度,具有高吞吐量、高性能、高可用的优势。将操作记录转换为符合第一分布式消息中间件105的结构化数据例如为JSON、XML、二进制表示等,一实施方式中,操作记录中插入数据的二进制码对应日志文件中的第四位至第八位,则将第四位至第八位的二进制码转换生成可被分布式消息中间识别的数据。只要能将同一条业务链中各种不同类型的数据库的操作记录按一定规则转换成结构化数据,即可通KAFKA实现完整的数据传输通道,实现对多类型数据库之间的一致性协调。
主复制链路102也可以看作为数据发送单元,用于从日志解析单元101获取操作记录的结构化数据并发送至第一分布式消息中间件105。
监控单元103根据日志解析单元101及第一分布式消息中间件105中数据变化情况确定主复制链路102是否中断,具体的,若第一分布式消息中间件105不断产生数据,但第一分布式消息中间件105一段时间之内数据量不变,则认为主复制链路已中断。
第一备复制链路104也可以看作数据发送单元,在主复制链路102有效时,第一备复制链路104处于备用状态,当第一备复制链路104使用时,可将其更新为主复制链路。当然,具体实施时,还可设置多个第一备复制链路104。在终端链路恢复后,将其作为被复制链路。
数据消费单元106为一消费者程序,通过消费者程序可按照顺序从第一分布式消息中间件105中读取代表操作记录的结构化数据。
数据处理单元107转换成目标数据库可执行语句包括DML或DDL语句(例如UPDATE、DELETE、INSERT、ALTER等)。具体实施时,还可设置日志回放单元108,以将目标数据库的执行语句以一定时间间隔(如500MS)执行到目标数据库中,实现数据落盘。
本实施例通过共享多条链路中的日志解析单元、第一分布式消息中间件、数据消费单元及数据处理单元,能够简化链路结构,节约资源消耗,减轻源数据库的负载压力。
本文一实施例中,监控单元103还用于:确定复制状态并记录于复制状态表中,其中,复制状态包括:发送成功的操作记录在源数据库中的日志位点、操作时间及在第一分布式消息中间件中的偏移量;当主复制链路的状态为中断时,控制第一备复制链路104根据复制状态表中发生中断时刻的日志点位,获取操作记录的结构化数据并发送至第一分布式消息中间件105。
操作记录在源数据库中日志位点为操作记录在日志中的记录标识,例如为MySQL数据库中的GTID、Oracle数据库中的SCN号。操作记录在第一分布式消息中间件中的偏移量用于定位操作记录(结构化数据)。
本实施方式通过第一备复制链路104从发生中断时刻的日志点位获取操作记录的结构化数据,能够保障故障恢复后的断点续传能力,降低对上下游的影响,避免全部重传数据导致复制效率低的现象。
本文一实施例中,如图2所示,异构数据库间不中断复制系统还包括:第二备复制链路109及第二分布式消息中间件110,第二备复制链路109未启用时连接第二分布式消息中间件110,用于与主复制链路102同步将操作记录的结构化数据发送至第二分布式消息中间件110。
第二备复制链路109可看作数据发送单元,第二分布式消息中间件110也为KAFKA集群。
监控单元103还用于:监控第一备复制链路的状态及第二备复制链路的状态,当第一备复制链路的状态为中断且第二备复制链路正常时将第二备复制链路109连接至第一分布式消息中间件105,如图3所示,以使第二备复制链路根据复制状态表中发生中断时刻的日志位点,获取操作记录的结构化数据并发送至第一分布式消息中间件105。
实施时,在第一复制链路工作时,若日志解析单元101中的数据及第二分布式消息中间件110中的数据在不断更新,但第一分布式消息中间件105中数据未更新,则第一备复制链路的状态为中断且第二备复制链路正常。
本实施例通过设置第二备复制链路且与第二分布式消息中间件连接,且与主复制链路同步获取操作记录的结构化数据,能够保证数据不会丢失,同时,还可以在第一备复制链路异常时,将第二备复制链路连接至第一分布式消息中间件,进一步实现高可用,降低故障影响时间。
本文进一步实施例中,监控单元103还用于:确定发送成功的操作记录在第二分布式消息中间件中的偏移量并记录于复制状态表中;监控第一分布式消息中间件的状态,若第一分布式消息中间件的状态为中断时,将数据消费单元106连接第一分布式消息中间件105更改为连接第二分布式消息中间件110,如图4所示,控制数据消费单元106根据发生中断的日志点位在第二分布式消息中间件中的偏移量,从第二分布式消息中间件110读取操作记录的结构化数据。
详细的说,发送成功的操作记录在第二分布式消息中间件中的偏移量,用于在故障发生时,定位从第二分布式消息中间件中读取数据的位置。
本实施例能够保证在第一分布式消息中间件发生故障时,切换至从第二分布式消息中间件,且通过根据发生中断的日志点位在第二分布式消息中间件中的偏移量,从第二分布式消息中间件读取操作记录的结构化数据,能够避免重复读取数据,保障高可用的时效性。
本文进一步实施例中,监控单元103还用于:监测复制状态表中第一分布式消息中间件与第二分布式消息中间件中的偏移量是否不一致;监测各复制链路发送数据量的总和与数据消费单元获取的数据量是否不一致;监测各分布式消息中间件是否达到存储上限;若至少存在一个监测结果为是,则发出报警。
本实施例能够及时发现异常,通过发出报警的方式引起相关运维人员注意,尽快排除异常。具体实施时,报警信息可通过短信、邮件、电话等方式发送至运维人员。
本文进一步实施例中,数据消费单元106包括多个,监控单元103还用于:计算数据消费单元获取速率与各复制链路发送速率的比值;根据比值,将相应数据量的数据消费单元连接至当前有效的复制链路,启动连接好的数据消费单元106。
具体实施时,可将比值作为数据消费单元106的开启数量。
复制链路发送数据的速率大于数据消费单元获取数据的速率,这样将会导致大量数据在分布式消息中间件中积压,本实施例通过根据数据消费单元获取速率与各复制链路发送速率的比值启动相应数据的数据消费单元,能够避免分布式消息中间件产生数据积压。
本文进一步实施例中,数据处理单元107还用于:确定读取到的结构化数据的数据源;从预处理配置表中查询数据源的处理规则;若查询成功,则根据查询出的处理规则对读取到的结构化数据进行处理,将处理后的数据转换为目标数据库的执行语句;若查询失败,则将读取到的结构化数据转换为目标数据库的执行语句。
详细的说,各数据源的处理规则可根据实际需求进行配置,处理规则包括但不限于对操作记录的结构化数据进行过滤、对某些字段做特殊化处理等。
本实施例通过开放数据源处理规则的设置,能够提高目标数据库执行语句的个性化筛选,进而满足业务需求。
本文一实施例中,还提供一种异构数据库间不中断复制方法,预先构建主复制链路及第一备复制链路,分别连接第一分布式消息中间件,如图5所示,方法包括:
步骤501,读取并解析源数据库的日志文件得到源数据库的操作记录,将操作记录转换成符合第一分布式消息中间件的结构化数据后由主复制链路发送至第一分布式消息中间件;
步骤502,从第一分布式消息中间件读取操作记录的结构化数据,将读取到的结构化数据转换为目标数据库的执行语句,将执行语句执行到目标数据库中;
步骤503,监控主复制链路的状态,当主复制链路的状态为中断时启动第一备复制链路,以使第一备复制链路获取操作记录的结构化数据并发送至第一分布式消息中间件。
本文进一步实施例中,如图6所示,异构数据库间不中断复制方法还包括:
步骤601,确定复制状态并存储于复制状态表中,其中,所述复制状态包括:发送成功的操作记录在源数据库中的日志位点、操作时间及在第一分布式消息中间件中的偏移量;
步骤602,当主复制链路的状态为中断时,第一备复制链路根据复制状态表中发生中断时刻的日志点位,获取操作记录的结构化数据并发送至第一分布式消息中间件。
本步骤中,发生中断的时刻根据主复制链路状态为中断的时刻及主复制链路状态的监测时间间隔确定。一些实施方式中,发生中断的时刻不小于t1-2×T1,且不大于t1-T1,即可在[t1-2×T1,t1-T1]范围内随机取值。
其中,t中断为发生中断的时刻,T1为主复制链路状态的监测时间间隔,t1为确定主复制链路状态为中断的时刻。
各类中断的时刻均可采专用上述公式确定。
通过上述确定发生中断的时刻,能够避免操作记录结构化数据的遗漏,且不会更多重复发送操作记录的结构化数据。
本文一实施例中,还预先构建有第二备复制链路,连接第二分布式消息中间件,用于与所述主复制链路同步将操作记录的结构化数据发送至所述第二分布式消息中间件,如图7所示,异构数据库间不中断复制方法还包括:
步骤701,监控第一备复制链路的状态及第二备复制链路的状态;
步骤702,当第一备复制链路的状态为中断且第二备复制链路正常时将第二备复制链路连接至第一分布式消息中间件,以使第二备复制链路根据复制状态表中发生中断时刻的日志位点,获取操作记录的结构化数据并发送至第一分布式消息中间件。
本文一实施例中,如图8所示,异构数据库间不中断复制方法还包括:
步骤801,确定发送成功的操作记录在第二分布式消息中间件中的偏移量并记录于复制状态表中;
步骤802,监控第一分布式消息中间件的状态,当第一分布式消息中间件的状态为中断时,保持第二备复制链路连接第二分布式消息中间件,根据发生中断时刻的日志点位在第二分布式消息中间件中的偏移量,从第二分布式消息中间件读取操作记录的结构化数据。
本文一实施例中,如图9所示,异构数据库间不中断复制方法还包括:
步骤901,监测复制状态表中第一分布式消息中间件与第二分布式消息中间件中的偏移量是否不一致;
步骤902,监测各复制链路发送数据量的总和与从分布式消息中间件获取的数据量是否不一致;
步骤903,监测各分布式消息中间件是否达到存储上限;
步骤904,若至少存在一个监测结果为是,则发出报警。
本文一实施例中,如图10所示,上述步骤502将读取到的结构化数据转换为目标数据库的执行语句之前,还包括:
步骤1001,确定读取到的结构化数据的数据源;
步骤1002,从预处理配置表中查询所述数据源的处理规则;
步骤1003,若查询成功,则根据查询出的处理规则对读取到的结构化数据进行处理,将处理后的数据转换为目标数据库的执行语句;若查询失败,则将读取到的结构化数据转换为目标数据库的执行语句。
为了更清楚说明本文技术方案,下面以一具体实施例进行说明,异构数据库间不中断复制系统包括:日志解析单元、主复制链路、监控单元、第一备复制链路、第一KAFKA集群、数据消费单元、数据处理单元、日志回放单元、第二备复制链路及第二KAFKA集群。其中,数据消费单元中配置有消费者程序。
初始状态下,主复制链路连接日志解析单元第一KAFKA集群;第一备复制链路连接日志解析单元第一KAFKA集群,在主复制链路有效时,第一备复制链路处于无效状态,即不从日志解析单元获取数据并发送至第一KAFKA集群;数据消费单元连接第一KAFKA集群及数据处理单元;第二备复制链路连接日志解析单元及第二KAFKA集群,与第一KAFKA集群同步获取操作记录的结构化数据。
除此之外,监控单元连接其它各单元,在复制过程中需按一定时间间隔记录每张表的复制状态,即记录当前复制的最新记录的数据库日志位点、操作时间、该记录在两个分布式消息中间件中的偏移量等信息。
如图11所示,异构数据库间不中断复制方法包括:
步骤1101,日志解析单元读取数据库的日志文件得到各数据库源表的操作记录(例如UPDATE、DELETE、INSERT、ALTER等),将操作记录转换为符合KAFKA的结构化数据。
步骤1102,由主复制链路将操作记录的结构化数据发送到第一KAFKA集群,按一定时间间隔(如10S)将发送成功的消息在源数据库中的日志位点、操作时间、第一KAFKA集群偏移量等信息记录到复制状态表。
步骤1103,消费者程序从第一KAFKA集群中获取操作记录的结构化数据。
步骤1104,数据处理单元根据业务场景自定义对从第一KAFKA集群中消费下来的数据进行加工处理,将其拼接生成可在目标数据库执行的DML或DDL语句(例如UPDATE、DELETE、INSERT、ALTER等)。
步骤1105,日志回放单元将得到的执行语句以一定的时间间隔(如500MS)按顺序执行到目标数据库中,实现数据落盘。
步骤1106,若监控单元识别到主复制链路发生中断,则第一备复制链路开始接管复制,从复制状态表中获取发生中断时刻的源数据库日志位点,将该日志位点之后的数据重新发送到第一KAFKA集群,实现高可用应急切换。
步骤1107,若步骤1106的切换后故障仍存在,则第二备复制链路开始接管复制,将其连接的KAFKA集群地址由第二KAFKA集群修改为第一KAFKA集群,从复制状态表中获取发生中断时刻的源数据库日志位点,将该日志位点之后的数据重新发送到第一KAFKA集群,实现高可用应急。
步骤1108,若步骤1107后故障仍存在,则需提供报警服务由人工接入对具体场景做出分析并解决问题。
若监控发现其中一个KAFKA集群故障无法正常对外提供服务,导致数据未正常在目标库落盘,则执行步骤1109至1111所示。
步骤1109,将消费者程序连接的KAFKA集群地址修改为第二KAFKA集群地址。
步骤1110,从复制状态表中获取复制中断的日志位点在第二KAFKA集群中的偏移量并作为消费起始点。
步骤1111,启动消费者程序,从第二KAFKA集群中获取数据实现数据落盘,完成高可用应急。
本文提供的异构数据库间不中断复制方法及系统具体如下技术效果和优点:
(一)应急步骤简单,高可用架构清晰,针对不同的中断场景有不同的切换方案,降低中断影响时间,有效提高对外服务的连续性水平。
(二)实现断点续传,中断场景下可找到复制中断时最新一条记录的中断位点,并从该位点实现无损续传,降低对上下游的影响。
(三)分布式消息中间件KAFKA自身多副本机制可保证数据不会丢失,进一步提升高可用能力。
本文一实施例中,还提供一种计算机设备,如图12所示,计算机设备1202可以包括一个或多个处理器1204,诸如一个或多个中央处理单元(CPU),每个处理单元可以实现一个或多个硬件线程。计算机设备1202还可以包括任何存储器1206,其用于存储诸如代码、设置、数据等之类的任何种类的信息。非限制性的,比如,存储器1206可以包括以下任一项或多种组合:任何类型的RAM,任何类型的ROM,闪存设备,硬盘,光盘等。更一般地,任何存储器都可以使用任何技术来存储信息。进一步地,任何存储器可以提供信息的易失性或非易失性保留。进一步地,任何存储器可以表示计算机设备1202的固定或可移除部件。在一种情况下,当处理器1204执行被存储在任何存储器或存储器的组合中的相关联的指令时,计算机设备1202可以执行相关联指令的任一操作。计算机设备1202还包括用于与任何存储器交互的一个或多个驱动机构1208,诸如硬盘驱动机构、光盘驱动机构等。
计算机设备1202还可以包括输入/输出模块1210(I/O),其用于接收各种输入(经由输入设备1212)和用于提供各种输出(经由输出设备1214)。一个具体输出机构可以包括呈现设备1216和相关联的图形用户接口1218(GUI)。在其他实施例中,还可以不包括输入/输出模块1210(I/O)、输入设备1212以及输出设备1214,仅作为网络中的一台计算机设备。计算机设备1202还可以包括一个或多个网络接口1220,其用于经由一个或多个通信链路1222与其他设备交换数据。一个或多个通信总线1224将上文所描述的部件耦合在一起。
通信链路1222可以以任何方式实现,例如,通过局域网、广域网(例如,因特网)、点对点连接等、或其任何组合。通信链路1222可以包括由任何协议或协议组合支配的硬连线链路、无线链路、路由器、网关功能、名称服务器等的任何组合。
本文实施例还提供了一种计算机可读存储介质,该计算机可读存储介质上存储有计算机程序,该计算机程序被处理器运行时执行上述方法的步骤。
本文实施例还提供一种计算机可读指令,其中当处理器执行所述指令时,其中的程序使得处理器执行前述任一实施例所述的方法。
应理解,在本文的各种实施例中,上述各过程的序号的大小并不意味着执行顺序的先后,各过程的执行顺序应以其功能和内在逻辑确定,而不应对本文实施例的实施过程构成任何限定。
还应理解,在本文实施例中,术语“和/或”仅仅是一种描述关联对象的关联关系,表示可以存在三种关系。例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。另外,本文中字符“/”,一般表示前后关联对象是一种“或”的关系。
本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本文的范围。
所属领域的技术人员可以清楚地了解到,为了描述的方便和简洁,上述描述的系统、装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
在本文所提供的几个实施例中,应该理解到,所揭露的系统、装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另外,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口、装置或单元的间接耦合或通信连接,也可以是电的,机械的或其它的形式连接。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本文实施例方案的目的。
另外,在本文各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以是两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本文的技术方案本质上或者说对现有技术做出贡献的部分,或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本文各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
本文中应用了具体实施例对本文的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本文的方法及其核心思想;同时,对于本领域的一般技术人员,依据本文的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本文的限制。

Claims (11)

1.一种异构数据库间不中断复制方法,其特征在于,预先构建主复制链路及第一备复制链路,分别连接第一分布式消息中间件,所述方法包括:
读取并解析源数据库的日志文件得到源数据库的操作记录,将所述操作记录转换成符合第一分布式消息中间件的结构化数据后由所述主复制链路发送至第一分布式消息中间件;
从所述第一分布式消息中间件读取操作记录的结构化数据,将读取到的结构化数据转换为目标数据库的执行语句,将执行语句执行到目标数据库中;
监控主复制链路的状态,当主复制链路的状态为中断时启动所述第一备复制链路,以使所述第一备复制链路获取操作记录的结构化数据并发送至所述第一分布式消息中间件。
2.如权利要求1所述的方法,其特征在于,还包括:
确定复制状态并存储于复制状态表中,其中,所述复制状态包括:发送成功的操作记录在源数据库中的日志位点、操作时间及在第一分布式消息中间件中的偏移量;
当主复制链路的状态为中断时,所述第一备复制链路根据复制状态表中发生中断时刻的日志点位,获取操作记录的结构化数据并发送至所述第一分布式消息中间件。
3.如权利要求2所述的方法,其特征在于,发生中断的时刻根据主复制链路状态为中断的时刻及主复制链路状态的监测时间间隔确定。
4.如权利要求2所述的方法,其特征在于,还预先构建有第二备复制链路,连接第二分布式消息中间件,用于与所述主复制链路同步将操作记录的结构化数据发送至所述第二分布式消息中间件,所述方法还包括:
监控第一备复制链路的状态及第二备复制链路的状态;
当第一备复制链路的状态为中断且第二备复制链路正常时将所述第二备复制链路连接至第一分布式消息中间件,以使所述第二备复制链路根据所述复制状态表中发生中断时刻的日志位点,获取操作记录的结构化数据并发送至所述第一分布式消息中间件。
5.如权利要求4所述的方法,其特征在于,所述方法还包括:
确定发送成功的操作记录在第二分布式消息中间件中的偏移量并记录于复制状态表中;
监控所述第一分布式消息中间件的状态,当所述第一分布式消息中间件的状态为中断时,保持所述第二备复制链路连接第二分布式消息中间件,根据发生中断时刻的日志点位在第二分布式消息中间件中的偏移量,从所述第二分布式消息中间件读取操作记录的结构化数据。
6.如权利要求4所述的方法,其特征在于,还包括:
监测复制状态表中第一分布式消息中间件与第二分布式消息中间件中的偏移量是否不一致;
监测各复制链路发送数据量的总和与从分布式消息中间件获取的数据量是否不一致;
监测各分布式消息中间件是否达到存储上限;
若至少存在一个监测结果为是,则发出报警。
7.如权利要求1所述的方法,其特征在于,将读取到的结构化数据转换为目标数据库的执行语句之前,还包括:
确定读取到的结构化数据的数据源;
从预处理配置表中查询所述数据源的处理规则;
若查询成功,则根据查询出的处理规则对读取到的结构化数据进行处理,将处理后的数据转换为目标数据库的执行语句;若查询失败,则将读取到的结构化数据转换为目标数据库的执行语句。
8.一种异构数据库间不中断复制系统,其特征在于,所述系统包括:日志解析单元、主复制链路、监控单元、第一备复制链路、第一分布式消息中间件、数据消费单元及数据处理单元;
所述日志解析单元用于读取并解析源数据库的日志文件得到源数据库的操作记录,将所述操作记录转换为符合第一分布式消息中间件的结构化数据;
所述主复制链路连接所述日志解析单元及所述第一分布式消息中间件,用于将操作记录的结构化数据发送至所述第一分布式消息中间件;
所述监控单元连接所述主复制链路及第一备复制链路,第一备复制链路连接第一分布式消息中间件,用于监控主复制链路的状态,当主复制链路的状态为中断时启动所述第一备复制链路,以使所述第一备复制链路获取操作记录的结构化数据并发送至所述第一分布式消息中间件;
所述第一分布式消息中间件用于缓存操作记录的结构化数据;
所述数据消费单元连接所述第一分布式消息中间件及所述数据处理单元,用于从所述第一分布式消息中间件读取操作记录的结构化数据;
所述数据处理单元用于将读取到的结构化数据转换为目标数据库的执行语句,将执行语句执行到目标数据库中。
9.如权利要求8所述的系统,其特征在于,所述数据消费单元包括多个,所述监控单元还用于:
计算所述数据消费单元获取速率与各复制链路发送速率的比值;
根据所述比值,将相应数据量的数据消费单元连接至当前有效的复制链路,启动连接好的数据消费单元。
10.一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其特征在于,所述处理器执行所述计算机程序时实现权利要求1至7任意一项所述方法。
11.一种计算机存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被计算机设备的处理器执行时实现权利要求1至7任意一项所述方法。
CN202310678457.7A 2023-06-08 2023-06-08 一种异构数据库间不中断复制方法及系统 Pending CN116881354A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202310678457.7A CN116881354A (zh) 2023-06-08 2023-06-08 一种异构数据库间不中断复制方法及系统

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202310678457.7A CN116881354A (zh) 2023-06-08 2023-06-08 一种异构数据库间不中断复制方法及系统

Publications (1)

Publication Number Publication Date
CN116881354A true CN116881354A (zh) 2023-10-13

Family

ID=88261260

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202310678457.7A Pending CN116881354A (zh) 2023-06-08 2023-06-08 一种异构数据库间不中断复制方法及系统

Country Status (1)

Country Link
CN (1) CN116881354A (zh)

Similar Documents

Publication Publication Date Title
WO2017177941A1 (zh) 主备数据库切换方法和装置
CN110990432B (zh) 一种跨机房同步分布式缓存集群的装置和方法
CN106933843B (zh) 数据库心跳检测方法以及装置
CN112506702B (zh) 数据中心容灾方法、装置、设备及存储介质
CN113987064A (zh) 数据处理方法、系统及设备
CN111064626B (zh) 配置更新方法、装置、服务器及可读存储介质
EP3427157B1 (en) Cross-regional data transmission
CN113254275A (zh) 一种基于分布式块设备的MySQL高可用架构方法
CN114900449B (zh) 一种资源信息管理方法、系统及装置
CN110209526A (zh) 一种存储层同步系统、及存储介质
CN111858190A (zh) 提高集群可用性的方法及其系统
CN111309515B (zh) 一种容灾控制方法、装置及系统
CN116185697B (zh) 容器集群管理方法、装置、系统、电子设备及存储介质
CN116881354A (zh) 一种异构数据库间不中断复制方法及系统
CN113821362B (zh) 数据复制方法及装置
CN107404511B (zh) 集群中服务器的替换方法及设备
CN109753292B (zh) 一种在多单实例数据库服务中部署多个应用的方法及装置
CN112835643B (zh) 基于设备影子服务对云对讲设备的管理方法和装置及设备
CN115964436A (zh) 一种数据库集群管理的方法和装置
CN113032477B (zh) 基于gtid的长距离数据同步方法、装置及计算设备
CN108897645B (zh) 一种基于备用心跳磁盘的数据库集群容灾方法和系统
CN113472891A (zh) 一种sdn控制器集群数据处理方法、设备及介质
CN112800028A (zh) 用于MySQL组复制的故障自恢复方法和装置
CN118312230A (zh) 主备配置信息同步方法、装置、计算机设备及存储介质
CN116647453A (zh) 一种基于Redis Cluster的拓扑同步方法

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