CN115438122A - 数据异构同步*** - Google Patents
数据异构同步*** Download PDFInfo
- Publication number
- CN115438122A CN115438122A CN202211017289.9A CN202211017289A CN115438122A CN 115438122 A CN115438122 A CN 115438122A CN 202211017289 A CN202211017289 A CN 202211017289A CN 115438122 A CN115438122 A CN 115438122A
- Authority
- CN
- China
- Prior art keywords
- data
- database
- kafka
- source
- synchronization
- 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
Images
Classifications
-
- 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
- G06F16/273—Asynchronous replication or reconciliation
-
- 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/22—Indexing; Data structures therefor; Storage structures
- G06F16/2282—Tablespace storage structures; Management thereof
-
- 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/23—Updating
-
- 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/28—Databases characterised by their database models, e.g. relational or object models
- G06F16/284—Relational databases
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
- G06F9/546—Message passing systems or structures, e.g. queues
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/54—Indexing scheme relating to G06F9/54
- G06F2209/547—Messaging middleware
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Databases & Information Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Data Mining & Analysis (AREA)
- Software Systems (AREA)
- Computing Systems (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明提出一种数据异构同步***,包括源端数据库和目标端数据库;对于源端数据库***数据获取,基于canal开源组件进行,canal伪装成mysql的从库,从而监听到mysql主数据库中的binlog日志,作为数据同步的源头;采用kafka消息中间件,作为数据缓存、削峰的工具;配置开启canal监听数据库binlog,将获取后binlog日志信息解析后以Json格式同步写入到kafka消息队列集群中,下一步的数据同步采用集群的方式对kafka中的数据进行分布式消费,以提高数据同步的效率和稳定性、容错性;消费kafka中的数据同步到一种或多种目标端数据库中。
Description
技术领域
本发明涉及计算机技术领域,尤其涉及一种数据异构同步***。
背景技术
为解决软件***大数据量场景下的高并发、高吞吐等性能要求,现有技术往往会采取对现有数据库进行分库分表、读写分离等方案对原有的业务***进行改造;同时为满足对大数据表查询检索的快速响应,可通过引入了搜索引擎和缓存数据库的方式,进而提升***查询统计等功能接口的响应效率。
基于上述***的改造需求,需要将原本同一个库/表的数据进行分库存储,并且还需要将分散的数据同步到搜索引擎、缓存数据库等异构的数据库中;同时针对下游的数据统计分析***需求,需要将分库后的数据合并到一个汇总的分析数据库表中,以便于下游***对数据分析统计的使用。因此,一种高效的、低耦合数据异构同步技术就成为业务***改造的关键。
发明内容
为了解决现有技术存在的缺陷和不足的问题,解决现有***改造存在的技术难点,本发明提出一种数据异构同步***。提供一种数据同步速度快、吞吐量大、耦合性地的异构数据同步技术应用。
本发明涉及的核心技术应用点如下:
1、本发明中涉及的数据同步***包括源端数据库、目标端数据库;
2、对于源数据库***数据获取,本发明是基于canal开源组件进行的,canal可伪装成mysql的从库,从而监听到mysql主数据库中的binlog日志,作为数据同步的源头。
3、本发明需满足数据同步的实时性和大吞吐量的要求,避免在数据量较大时同步造成的数据堵塞、错误阻断等异常情况;本发明引入kafka消息中间件,作为数据缓存、削峰的工具。配置开启canal监听数据库binlog,将获取后binlog日志信息解析后以Json格式同步写入到kafka消息队列集群中,下一步的数据同步可采用集群的方式对kafka中的数据进行分布式消费,提高数据同步的效率和稳定性、容错性。
4、消费kafka中的数据将同步多种数据库中,本发明实现了对多种常用数据库的设配,包括elasticsearch、redis、mysql、pgsql等库,同时需要支持不同数据格式的转换。
5、考虑数据同步后源库和目标库的数据一致性是极其主要的,本发明为实现数据异构同步后的数据对账功能,基于kafka的消息队列数量及消费情况,核对源数据库和目标库中数据量,并针对未成功消费的数据增加数据补偿同步的机制。
为了达到上述目的,本发明具体采用如下技术方案:
一种数据异构同步***,其特征在于:包括源端数据库和目标端数据库;对于源端数据库***数据获取,基于canal开源组件进行,canal伪装成mysql的从库,从而监听到mysql主数据库中的binlog日志,作为数据同步的源头;采用kafka消息中间件,作为数据缓存、削峰的工具;配置开启canal监听数据库binlog,将获取后binlog日志信息解析后以Json格式同步写入到kafka消息队列集群中,下一步的数据同步采用集群的方式对kafka中的数据进行分布式消费,以提高数据同步的效率和稳定性、容错性;消费kafka中的数据同步到一种或多种目标端数据库中。
进一步地,所述目标端数据库为elasticsearch、redis、mysql、pgsql中的一种或多种。
进一步地,在消费kafka中的数据同步到一种或多种目标端数据库中之后,基于kafka的消息队列数量及消费情况,核对源数据库和目标库中数据量,并针对未成功消费的数据进行数据补偿同步。
进一步地,该***的工作过程包括以下步骤:
步骤S1:采用canal作为采集源数据的工具,基于主从复制的协议从mysql主节点中获取binlog日志数据,canal模拟mysql的slave节点;
步骤S2:配置canal相关信息,包括源数据库信息、需同步源表信息、写入的kafka数据源信息、kafka主题,并开启canal监听程序,将数据库表变更信息以json格式写入到kafka中;
步骤S3:根据kafka的主题topic,声明一个监听类用于接收相应topic的kafka消息数据;
步骤S4:解析kafka消息中的JSON数据;
步骤S5:配置同步目标数据库的信息,对应写入的目标数据的类型;
步骤S6:根据不同的目标数据库,设配不同数据库的处理和写入或更新程序,用于生成更新语句、更新逻辑,为数据更新做准备;
步骤S7:连接配置的目标数据库,构建执行器,将生成更新语句、更新逻辑进行执行,达到目标数据库同步的效果;
步骤S8:对同步的数据进行数据对账,以校验源数据和目标数据库的数据量是否一致。
进一步地,在步骤S2中,若需同时同步多个表,将同一个库中的多个表数据同步到同一个kafka的topic中;并在步骤S4中通过表名进行区分,便于做多表合并时的处理。
进一步地,在步骤S4中,JSON数据中包括的信息有:
1)变更类型type,包括:新增、修改和删除;
2)源库、表信息,包括:源表的数据字段类型、长度的修改表结构信息;
3)变更数据集,以k-v的形式存储的表数据内容,数据主键,变更前的数据内容。
进一步地,步骤S5中对每个表配置源表和目标表的映射关系。
进一步地,步骤S7中基于步骤S6生成的可执行的sql或者请求,在数据批量或密集关系的场景下,将以分批的形式将数据进行归集,并以固定的频次调用执行器,以避免频繁调用执行器导致的目标数据库并发压力。
进一步地,在步骤S8中,基于kafka的消息队列数量及消费情况,核对源数据库和目标库中数据量,并针对未成功消费的数据进行数据补偿同步。
进一步地,所述数据补偿同步以设定的时间频率进行数据校验,如发现数据校验问题,则根据情况判断是否执行补偿机制进行数据修复;若补偿机制无法满足或存在数据缺失问题,则通知进行人工处理。
相比于现有技术,本发明及其优选方案的有益效果主要包括:
1、只需要对canal进行源数据库连接信息的配置,即可监听获取到数据库的变更信息;
2、可对数据库表进行实时的增量同步,不需要进行全量同步,效率高;
3、基于Kafka消息中间件的高并发、高吞吐优势,在高并发数据的传输中,大大增加的数据同步的实时性、稳定性和容错性;
4、对已有***功能代码进行改造,不依赖于数据库的触发器、定时任务,对已有***不会造成入侵性;
5、同步不需要数据表的增量字段,避免了频繁查询判断源表造成的源***负担;同时不需要记录增量信息减少了临时表的引入,增加数据同步的复杂度;
6、支持数据库表信息更新信息的同步,自动识别出数据表的DDL语句,可在同步程序中进行适配更新,减少了人工干预;
7、***对数据同步、对账机制进行监控,如果出现问题会及时进行告警和处理。
附图说明
下面结合附图和具体实施方式对本发明进一步详细的说明:
图1为本发明实施例***工作流程步骤示意图。
具体实施方式
为让本专利的特征和优点能更明显易懂,下文特举实施例,并配合附图,作详细说明如下:
如图1所示,本实施例提供的数据异构同步***,其主要按如下步骤实现:
步骤S1:本实施例采用canal作为采集源数据的工具,canal是基于主从复制的协议从mysql主节点中获取binlog日志数据,canal模拟mysql的slave节点;
步骤S2:配置canal相关信息,包括源数据库信息、需同步源表信息、写入的kafka数据源信息、kafka主题等,并开启canal监听程序,将数据库表变更信息以json格式写入到kafka中;
步骤S3:根据kafka的主题topic,声明一个监听类用于接收相应topic的kafka消息数据。
步骤S4:解析kafka消息中的JSON数据,JSON数据中包括的主要信息有:
变更类型type(新增/修改/删除);
源库、表信息,其中包括源表的数据字段类型、长度等修改表结构信息;
变更数据集,以k-v的形式存储的表数据内容,数据主键,变更前的数据内容等;
步骤S5:配置同步目标数据库的信息,对应写入的目标数据支持多种,包括mysql、elasticsearch、redis等;
步骤S6:根据不同的目标数据库,设配不同数据库的处理和写入或更新程序,用于生成更新语句、更新逻辑,为数据更新做准备;
步骤S7:连接配置的目标数据库,构建执行器,将生成更新语句、更新逻辑进行执行,达到目标数据库同步的效果;
步骤S8:对同步的数据进行数据对账,以校验源数据和目标数据库的数据量是否一致。本发明基于kafka的消息队列数量及消费情况,核对源数据库和目标库中数据量,并针对未成功消费的数据增加数据补偿同步的机制。
本实施例中,步骤S2中,若需同时同步多个表,可将同一个库中的多个表数据同步到同一个kafka的topic中;并在步骤S4中通过表名进行区分,便于做多表合并时的处理。
本实施例中,步骤S5中具体实现逻辑为:可对每个表配置源表和目标表的映射关系;有时可能场景需要更进一步字段间的映射关系,以满足数据异构同步中复杂的业务场景,如多表数据合并、数据格式转换、数据过滤等场景。
本实施例中,步骤S7中是基于步骤S6生成的可执行的sql或者请求,在数据批量/密集关系的场景下,将以分批的形式将数据进行归集,并以固定的频次调用执行器,避免频繁调用执行器导致的目标数据库并发压力,优化加快数据同步的效率和稳定性。
本实施例中,步骤S8中,可以每小时或者每日等时间频率进行数据校验,如果发现数据校验问题,可根据情况判断是否执行补偿机制进行数据修复;若补偿机制无法满足或存在数据缺失问题,则需要以消息通知的形式告知开发或实施人员进行人工处理。
本实施例提供的以上方案可以代码化的形式存储在计算机可读取存储介质中,并以计算机程序的方式进行实现,并通过计算机硬件输入计算所需的基本参数信息,并输出计算结果。
本领域内的技术人员应明白,本发明的实施例可提供为方法、装置、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本发明是参照根据本发明实施例的方法、设备(装置)、和计算机程序产品的流程图来描述的。应理解可由计算机程序指令实现流程图中的每一流程、以及流程图中的流程结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程图中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程中指定的功能的步骤。
最后应当说明的是:以上实施例仅用以说明本发明的技术方案而非对其限制,尽管参照上述实施例对本发明进行了详细的说明,所属领域的普通技术人员应当理解:依然可以对本发明的具体实施方式进行修改或者等同替换,而未脱离本发明精神和范围的任何修改或者等同替换,其均应涵盖在本发明的权利要求保护范围之内。
本专利不局限于上述最佳实施方式,任何人在本专利的启示下都可以得出其它各种形式的数据异构同步***,凡依本发明申请专利范围所做的均等变化与修饰,皆应属本专利的涵盖范围。
Claims (10)
1.一种数据异构同步***,其特征在于:包括源端数据库和目标端数据库;对于源端数据库***数据获取,基于canal开源组件进行,canal伪装成mysql的从库,从而监听到mysql主数据库中的binlog日志,作为数据同步的源头;采用kafka消息中间件,作为数据缓存、削峰的工具;配置开启canal监听数据库binlog,将获取后binlog日志信息解析后以Json格式同步写入到kafka消息队列集群中,下一步的数据同步采用集群的方式对kafka中的数据进行分布式消费,以提高数据同步的效率和稳定性、容错性;消费kafka中的数据同步到一种或多种目标端数据库中。
2.根据权利要求1所述的数据异构同步***,其特征在于:所述目标端数据库为elasticsearch、redis、mysql、pgsql中的一种或多种。
3.根据权利要求1所述的数据异构同步***,其特征在于:在消费kafka中的数据同步到一种或多种目标端数据库中之后,基于kafka的消息队列数量及消费情况,核对源数据库和目标库中数据量,并针对未成功消费的数据进行数据补偿同步。
4.根据权利要求1所述的数据异构同步***,其特征在于:其工作过程包括以下步骤:
步骤S1:采用canal作为采集源数据的工具,基于主从复制的协议从mysql主节点中获取binlog日志数据,canal模拟mysql的slave节点;
步骤S2:配置canal相关信息,包括源数据库信息、需同步源表信息、写入的kafka数据源信息、kafka主题,并开启canal监听程序,将数据库表变更信息以json格式写入到kafka中;
步骤S3:根据kafka的主题topic,声明一个监听类用于接收相应topic的kafka消息数据;
步骤S4:解析kafka消息中的JSON数据;
步骤S5:配置同步目标数据库的信息,对应写入的目标数据的类型;
步骤S6:根据不同的目标数据库,设配不同数据库的处理和写入或更新程序,用于生成更新语句、更新逻辑,为数据更新做准备;
步骤S7:连接配置的目标数据库,构建执行器,将生成更新语句、更新逻辑进行执行,达到目标数据库同步的效果;
步骤S8:对同步的数据进行数据对账,以校验源数据和目标数据库的数据量是否一致。
5.根据权利要求4所述的数据异构同步***,其特征在于:在步骤S2中,若需同时同步多个表,将同一个库中的多个表数据同步到同一个kafka的topic中;并在步骤S4中通过表名进行区分,便于做多表合并时的处理。
6.根据权利要求4所述的数据异构同步***,其特征在于:
在步骤S4中,JSON数据中包括的信息有:
1)变更类型type,包括:新增、修改和删除;
2)源库、表信息,包括:源表的数据字段类型、长度的修改表结构信息;
3)变更数据集,以k-v的形式存储的表数据内容,数据主键,变更前的数据内容。
7.根据权利要求4所述的数据异构同步***,其特征在于:步骤S5中对每个表配置源表和目标表的映射关系。
8.根据权利要求4所述的数据异构同步***,其特征在于:步骤S7中基于步骤S6生成的可执行的sql或者请求,在数据批量或密集关系的场景下,将以分批的形式将数据进行归集,并以固定的频次调用执行器,以避免频繁调用执行器导致的目标数据库并发压力。
9.根据权利要求4所述的数据异构同步***,其特征在于:在步骤S8中,基于kafka的消息队列数量及消费情况,核对源数据库和目标库中数据量,并针对未成功消费的数据进行数据补偿同步。
10.根据权利要求4所述的数据异构同步***,其特征在于:所述数据补偿同步以设定的时间频率进行数据校验,如发现数据校验问题,则根据情况判断是否执行补偿机制进行数据修复;若补偿机制无法满足或存在数据缺失问题,则通知进行人工处理。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211017289.9A CN115438122A (zh) | 2022-08-24 | 2022-08-24 | 数据异构同步*** |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211017289.9A CN115438122A (zh) | 2022-08-24 | 2022-08-24 | 数据异构同步*** |
Publications (1)
Publication Number | Publication Date |
---|---|
CN115438122A true CN115438122A (zh) | 2022-12-06 |
Family
ID=84245184
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202211017289.9A Pending CN115438122A (zh) | 2022-08-24 | 2022-08-24 | 数据异构同步*** |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115438122A (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116760463A (zh) * | 2023-08-09 | 2023-09-15 | 中国电信股份有限公司 | 光纤光缆的监控方法及装置、存储介质和电子设备 |
CN116821245A (zh) * | 2023-07-05 | 2023-09-29 | 贝壳找房(北京)科技有限公司 | 分布式场景下数据聚合同步方法及存储介质 |
CN117633104A (zh) * | 2023-11-06 | 2024-03-01 | 湖北华中电力科技开发有限责任公司 | 通过增量数据通道实现督办工单协同的方法及装置 |
-
2022
- 2022-08-24 CN CN202211017289.9A patent/CN115438122A/zh active Pending
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116821245A (zh) * | 2023-07-05 | 2023-09-29 | 贝壳找房(北京)科技有限公司 | 分布式场景下数据聚合同步方法及存储介质 |
CN116760463A (zh) * | 2023-08-09 | 2023-09-15 | 中国电信股份有限公司 | 光纤光缆的监控方法及装置、存储介质和电子设备 |
CN116760463B (zh) * | 2023-08-09 | 2023-11-10 | 中国电信股份有限公司 | 光纤光缆的监控方法及装置、存储介质和电子设备 |
CN117633104A (zh) * | 2023-11-06 | 2024-03-01 | 湖北华中电力科技开发有限责任公司 | 通过增量数据通道实现督办工单协同的方法及装置 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN115438122A (zh) | 数据异构同步*** | |
US11604804B2 (en) | Data replication system | |
CN104679841B (zh) | 一种消费端数据流复制方法及*** | |
CN109710388B (zh) | 数据读取方法、装置、电子设备以及存储介质 | |
CN112445863B (zh) | 一种数据实时同步方法及*** | |
US20150032695A1 (en) | Client and server integration for replicating data | |
CN109376196B (zh) | 一种redo日志批量同步方法及装置 | |
CN113792094A (zh) | 一种数据同步***、方法、设备及介质 | |
CN114691704A (zh) | 一种基于MySQL binlog的元数据同步方法 | |
CN113868028A (zh) | 一种在数据节点上回放日志的方法、数据节点及*** | |
CN112163038A (zh) | 跨集群数据同步方法、装置、设备及存储介质 | |
CN105353988A (zh) | 一种元数据读写方法及装置 | |
CN112241437A (zh) | 数据库多主同步的回环控制方法、装置、设备及存储介质 | |
CN115033646A (zh) | 一种基于Flink&Doris构建实时数仓***的方法 | |
CN111400097A (zh) | 数据的备份方法、装置、***和计算机可读存储介质 | |
CN113946628A (zh) | 一种基于***的数据同步方法及装置 | |
CN114428820A (zh) | 分布式数据实时同步的方法、***和数据同步设备 | |
CN114218193A (zh) | 数据迁移方法、装置、计算机设备和可读存储介质 | |
CN112800060B (zh) | 数据处理方法、装置、计算机可读存储介质及电子设备 | |
WO2024109253A1 (zh) | 一种数据备份方法、***和设备 | |
CN113297159A (zh) | 数据存储方法以及装置 | |
CN112052295A (zh) | 一种数据同步方法、装置、电子设备和可读存储介质 | |
CN116340114A (zh) | 一种流式处理日志告警方法 | |
CN115658815A (zh) | 基于cdc实现的数据同步的方法 | |
CN115080666A (zh) | 数据同步方法、***、电子设备及存储介质 |
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 |