CN112328702B - 数据同步方法及系统 - Google Patents

数据同步方法及系统 Download PDF

Info

Publication number
CN112328702B
CN112328702B CN202011403522.8A CN202011403522A CN112328702B CN 112328702 B CN112328702 B CN 112328702B CN 202011403522 A CN202011403522 A CN 202011403522A CN 112328702 B CN112328702 B CN 112328702B
Authority
CN
China
Prior art keywords
data
database
server
preprocessed
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.)
Active
Application number
CN202011403522.8A
Other languages
English (en)
Other versions
CN112328702A (zh
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 Citic Bank Corp Ltd
Original Assignee
China Citic Bank Corp 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 Citic Bank Corp Ltd filed Critical China Citic Bank Corp Ltd
Priority to CN202011403522.8A priority Critical patent/CN112328702B/zh
Publication of CN112328702A publication Critical patent/CN112328702A/zh
Application granted granted Critical
Publication of CN112328702B publication Critical patent/CN112328702B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

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/2365Ensuring data consistency and integrity

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)
  • Computer Security & Cryptography (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本申请公开了一种数据同步方法及系统。该方法包用于数据同步系统,所述系统包括数据同步装置、第一服务器和第二服务器,包括:所述数据同步装置采集第一数据库的原始数据;其中,所述原始数据包括第一数据、第二数据和第三数据,所述第一数据包括所述第一数据库中的目录表数据;所述第二数据包括所述第一数据库的目录表WAL日志数据,所述第三数据包括所述第一数据库的数据表WAL日志数据;所述数据同步装置分别为所述第一数据、第二数据和第三数据添加时间信息,得到预处理数据;所述数据同步装置将所述预处理数据依据所述时间信息同步到第二数据中,其中,所述第一数据库包括Hbase数据库,所述第二数据库包括MySQL数据库。本申请提供的实施例解决了相关技术中两个数据库无法实时同步的问题。

Description

数据同步方法及系统
技术领域
本申请涉及软件工程技术领域,具体而言,涉及一种数据同步方法及系统。
背景技术
Hbase是一种分布式的、多版本的、面向列的非关系型数据库,背景技术中可以实现Hbase数据库到MySQL数据库的同步。
现有实现Hbase数据同步到MySQL的实例,可以通过kettle组件实现该功能。但该组件同步Hbase到mysql时只能通过批量同步,无法实现实时同步的功能,存在一定延迟。且在同步前需先配置表的映射结构、无法实时同步DDL更新,当出现新建表或更新表结构时,会出现表同步失败,前期同步数据失效,需要重新手动配置重新同步,故kettle只能支持DML操作,且现有kettle的增量同步也只是同步快速的调取job任务,进行批量同步。
发明内容
本申请提供一种数据同步方法及,以解决相关技术中,通过组件无法实现实时同步且只能批量同步的问题。
根据本申请的一个方面,提供了一种数据同步方法,该方法应用于数据同步系统,该系统包括数据同步装置、第一服务器和第二服务器,方法包括:
数据同步装置采集第一数据库的原始数据;其中,原始数据包括第一数据、第二数据和第三数据,第一数据包括第一数据库中的目录表数据;第二数据包括第一数据库的目录表WAL日志数据,第三数据包括第一数据库的数据表WAL日志数据;
数据同步装置分别为第一数据、第二数据和第三数据添加时间信息,得到预处理数据;
数据同步装置将预处理数据依据时间信息同步到第二数据中,其中,第一数据库包括Hbase数据库,第二数据库包括MySQL数据库。
在一些实施例中,数据同步装置将预处理数据依据时间信息同步到第二数据中包括:
数据同步装置将预处理数据均写入到第一服务器,并通过第一服务器转发给第二服务器;
第二服务器解析预处理数据,并基于预处理数据中的时间信息将原始数据同步到第二数据库。
在一些实施例中,该方法还包括:
第二服务器基于第一数据、第二数据和第三数据,识别针对第一数据库的操作动作,并将操作动作和对应的操作数据同步到第二数据库中。
在一些实施例中,基于第一数据、第二数据和第三数据,识别针对第一数据库的操作动作包括:
将第一数据库中的目录表数据和存储的目录表数据比较;
检测第一数据库中的目录表数据是否增加至少一行数据;
如果是,则提取出增加的至少一行数据对应的表名、及区域Region信息;
基于表名和Region信息生成与MySQL数据库对应的建表语句并写入到MySQL数据库中。
在一些实施例中,基于第一数据、第二数据和第三数据,识别针对第一数据库的操作动作包括:
检测第一数据库中的目录表的WAL日志信息;目录表的WAL日志信息记录有目录表的插入、更新和删除操作;
如果目录表的WAL日志信息标识从第一数据库中删除了第一Region信息,则从第二数据库中删除与第一Region信息对应的表。
在一些实施例中,基于第一数据、第二数据和第三数据,识别针对第一数据库的操作动作包括:
将第一数据库中的数据表的、WAL日志数据和存储的数据表日志数据比较;
检测第一数据库中的数据表是否存在DDL操作;
如果是,则从数据表的WAL日志数据中提取所DDL操作、对应的表名和/或列名,并基于表明和/或列名,将DDL操作同步到第二数据库。
在一些实施例中,基于第一数据、第二数据和第三数据,识别针对第一数据库的操作动作包括:
基于第一数据、第二数据和第三数据,周期性识别针对第一数据库的操作动作。
在一些实施例中,第一服务器是kafka集群,第二服务器是flink集群。
根据本发明实施例的另一方面,还提供了一种数据同步系统,该系统包括数据同步装置、第一服务器和第二服务器,其中,
数据同步装置采集第一数据库的原始数据;其中,原始数据包括第一数据、第二数据和第三数据,第一数据包括第一数据库中的目录表数据;第二数据包括第一数据库的目录表WAL日志数据,第三数据包括第一数据库的数据表WAL日志数据;
数据同步装置分别为第一数据、第二数据和第三数据添加时间信息,得到预处理数据;
数据同步装置将预处理数据依据时间信息同步到第二数据中,其中,第一数据库包括Hbase数据库,第二数据库包括MySQL数据库。
在一些实施例中,数据同步装置将预处理数据依据时间信息同步到第二数据中包括:
数据同步装置将预处理数据均写入到第一服务器,并通过第一服务器转发给第二服务器;
第二服务器解析预处理数据,并基于预处理数据中的时间信息将原始数据同步到第二数据库。
本公开实施例可以实现Hbase数据库到MySQL数据库的数据同步,并同步DDL操作,保证数据一致性。
附图说明
构成本申请的一部分的附图用来提供对本申请的进一步理解,本申请的示意性实施例及其说明用于解释本申请,并不构成对本申请的不当限定。在附图中:
图1是Hbase数据库的数据管理层次结构示意图;
图2是本公开实施例提供的Hbase数据表的WAL日志结构示意图;
图3是本公开实施例提供的一种数据同步系统结构示意图;
图4是根据本申请实施例提供的flink窗口示意图;
图5是根据本申请实施例提供的Watermark示意图;
图6是本申请实施例提供的DDL操作进行映射流程示意图;
图7是本申请实施例提供的
图8是根据本申请实施例提供的数据同步方法的流程图;以及
图9是根据本申请实施例提供的数据同步系统的结构图。
具体实施方式
需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互组合。下面将参考附图并结合实施例来详细说明本申请。
为了使本技术领域的人员更好地理解本申请方案,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分的实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本申请保护的范围。
需要说明的是,本申请的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本申请的实施例。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
Hbase是一种分布式的、多版本的、面向列的非关系型数据库,其主要包含Client、Hmaster、HRegionServer、Zookeeper,其中HRegionServer是Hbase的核心模块,它本身数据管理具有层次结构,图1是Hbase数据库的管理层次结构示意图。
默认情况下,Hbase数据库中所有写入、更新、删除操作都会把数据先写入HLog,再写入MemStore。
Hlog即为WAL(Write-Ahead Logging)日志,其以sequenceFile的格式存储,记录了数据的归属信息、keyvalue对象,以及sequence number和timestamp。HRegionServer数据先写入到hlog中,然后再写入到hregion中的hfile,因此hlog是用来防止内存中数据丢失,用来进行丢失数据的恢复。
表1是本公开实施例提供的Hbase表的结构图。
表1
如表1所示的Hbase表包括:主键Row Key,时间戳Time Stamp等,下面是具体的解释:
Table中的记录按照Row Key排序
Qualifier:标签,也称为列
Column Family:列簇,Table在水平方向有一个或者多个Column Family组成,一个Column Family中可以由任意多个Column组成,即Column Family支持动态扩展,无需预先定义Column的数量以及类型,所有Column均以二进制格式存储,用户需要自行进行类型转换。
Timestamp:时间戳,每次数据操作对应的时间戳,可以看作是数据的versionnumber。
Value:存储实际的数据
Hbase:meta表:Hbase有一个叫做Meta的特殊的目录表,用于保存集群中regions的位置信息(region列表)。ZooKeeper存储着Meta表的位置。该目录表存储了在系统上的一系列的分区region信息。并且meta表的信息存储在Hbase集群的zookeeper上。而Hbase表中的所有行都按照行键的字典序排列(Key Range),表在行的方向上分割为多个HRegion,HRegion是HBase中分布式存储和负载均衡的最小单元,因此Hbase:meta表包含关于Hbase集群所有的表信息,通过scan meta表比对缓存可以判断是否新增表。
kafka是一种中间件,负责发布和订阅消息流,类似于消息队列,以容错的方式记录数据流,以文件的方式存储消息流。可以在系统或应用程序之间构建可靠的用于传输实时数据管道,消息队列功能。
表2是Hbase数据库中的Meta表的结构。
表2
rowKey组成:([table],[region start key],[region id])
1.rowkey中第一个分隔符前存的是表名;(table)
2.第二分隔符前存的是region的第一个rowKey:
1)如果这个地方为空的话,表明这是table的第一个region。并且如果一个region中startkey和endkey都为空的为,表明这个table只有一个region;
2)在meta表中,startkey靠前的region会排在startkey靠后的region前面。(Hbase中的keys按照字段顺序排序的)。
3.region id代表region的id,通常基于region创建时的timestamp;
4.regioninfo是HRegionInfo的序列化值;
5.server是指服务器的地址和端口;
6.serverstartcode是指服务开始的timestamp。
图2是本公开实施例提供的Hbase数据表的WAL日志结构示意图。该数据表的WAL日志包含HlogKey和KeyValue,它使用Hadoop的SequenceFile,它将记录存储为key/values的数据集,对于WAL,key是一个HLogKey的实例。KeyValue不仅包括row,column family,qualifier,timestamp,value,还包括“Key Type”,可以用Key Type代表一个“put”或“delete”操作。
HlongKye存放KeyValue的归属信息,比如region或者表名同时还包括sequencenumber,和“写入时间”,writeTime是一个记录数据何时写入到log的时间戳。其中sequencenumber的起始值为0,或者是最近一次存入文件系统中sequence number,WAL日志可以根据它追踪数据改变。
图3是本公开实施例提供的一种数据同步系统结构示意图,如图3所示的系统包括Hbase集群(Hbase数据库)、kafka集群、flink集群和MySQL集群。
数据采集器中的meta表采集器通过scan操作遍历Hbase数据库中的Hbase:meta目录表,并添加事件时间event time记录读入时间并写入到kafka集群,flink读取和缓存表数据。
WAL日志采集器分为2块,一部分负责实时读取Hbase:meta目录表的WAL日志,并解析日志事件时间为eventtime也写入kafka集群中,另一部分采集Hbase数据表的WAL日志,作为数据同步的主体。
kafka是一种中间件,负责发布和订阅消息流,类似于消息队列,以容错的方式记录数据流,以文件的方式存储消息流。可以在系统或应用程序之间构建可靠的用于传输实时数据管道,消息队列功能。
flink是一个开源的分布式、高性能、高可用、准确的流处理框架,主要由Java代码实现,支持实时流(stream)处理和批(batch)处理,本专利主要利用的是该组件如下特点:
有状态计算的Exactly-once语义,保证执行一次且成功执行
支持带有事件时间(event time)语义的流处理和窗口处理
支持高度灵活的窗口(window)操作
轻量的容错处理(fault tolerance)
支持高吞吐、低延迟、高性能的流处理
支持savepoints机制(一般手动触发)
专利中kafka消息流的事件时间event time是消息中包含的记录时间,一般是消息自带的事件戳。而flink的窗口如4图所示。在进行流式多流关联计算时需要使用窗口,flink在一定时间范围内对eventtime在这段时间的数据进行汇总统计处理。
对事件时间统计时还需使用watermark以保证数据一致性。Watermark(水位)可解决延迟数据等待,保证时间段内事件时间相近的数据在一个窗口中,watermark示意图如图5所示。
为了便于flink的统计,引入了窗口计算。watermark是用于处理乱序事件的,而正确的处理乱序事件,通常用watermark机制结合window来实现。
示例的,流处理从事件产生,到流经source,再到operator,中间是有一个过程和时间的。虽然大部分情况下,流到operator的数据都是按照事件产生的时间顺序来的,但是也不排除由于网络、背压等原因,导致乱序的产生(out-of-order或者说late element)。
但是对于late element,必须要有个机制来保证一个特定的时间后,必须触发window去进行计算了。这个特别的机制,就是watermark。
假如设置10s的时间窗口(window),那么0~10s,10~20s都是一个窗口,以0~10s为例,0位start-time,10为end-time。假如有4个数据的event-time分别是8(A),12.5(B),9(C),13.5(D),我们设置Watermarks为当前所有到达数据event-time的最大值减去延迟值3.5秒,也就是说对于迟到的数据,我们只等你3.5秒。
当A到达的时候,watermarks为max{8}-3.5=8-3.5=4.5<10,不会触发计算。
当B到达的时候,watermarks为max(12.5,8)-3.5=12.5-3.5=9<10,不会触发计算。
C到达的时候,watermarks为max(12.5,8,9)-3.5=12.5-3.5=9<10,不会触发计算。
D到达的时候,watermarks为max(13.5,12.5,8,9)-3.5=13.5-3.5=10=10,触发计算。
触发计算的时候,会将AC(因为他们都小于10)都计算进去。
通过上面这种方式,我们就将迟到的C计算进去了。
图6为本公开实施例提供的DDL操作进行映射流程示意图,会根据meta表的增量表数据、meta的更新操作来划分为以下几种操作:
1、因meta表是Hbase的目录表,记录各表的表名、region分布,meta表中新增多行数据,与缓存比较后,会提取出新增表的表名、及region信息,根据设置将建表语句写入mysql中。
2、当读取Hbase:meta表的WAL日志信息,该日志记录meta表的数据insert/update/delete信息,通过与缓存比较后,可判断对某x表的DDL操作,DDL操作主要有以下几种:
(1)Drop table通过比较后从日志发现delete一个表的所有region信息,映射到mysql时是delete对应的表分区是将数据分段划分在多个位置存放,分区后,表还是一张表,但数据散列到多个位置了。读写的时候操作的还是表名字,并自动去组织分区的数据。
分区主要有两种形式:
A、水平分区(Horizontal Partitioning)
这种形式分区是对表的行进行分区,所有在表中定义的列在每个数据集中都能找到,所以表的特性依然得以保持。
举例说明:一个包含十年发票记录的表可以被分区为十个不同的分区,每个分区包含的是其中一年的记录。
B、垂直分区(Vertical Partitioning)
这种分区方式一般来说是通过对表的垂直划分来减少目标表的宽度,使某些特定的列被划分到特定的分区,每个分区都包含了其中的列所对应的行。
举例说明:一个包含了大text和BLOB列的表,这些text和BLOB列又不经常被访问,
这时候就要把这些不经常使用的text和BLOB了划分到另一个分区,在保证它们数据相关性的同时还能提高访问速度。
(2)读取数据表的WAL日志,实时写入到kafka流中,当flink读取时通过比对缓存可以判断是否为新增列,根据原有data表的WWAL日志解析出的缓存比对,该表新增列,并且向新增的列写入数据,等同于新增列,(因Hbase不固定列)映射到mysql是新建列,列名为Hbase表中的列族:列名,并写入数据。
(3)新增列族时同新增列相同,比对缓存并判断列族发生变化,但需后续收到该列族下的列新增时,再向mysql中写入;
(4)删除列族同理,同步到mysql中删除涉及该列族所有列的数据;
(5)在判断该表数据是否涉及DDL时,data的WAL日志中提取表名tableName和columnFamily,先与缓存中meta表的表数据、WAL日志提取规则进行比对,若无法匹配,则等待最新meta表数据、WAL日志写入。
(6)而在data同步主体数据(同步时间段没有DDL操作该表),解析该WAL日志,并实时写入mysql。
涉及到DDL的数据同步时,同步写mysql时需参照DDL同步规则。
Hbase跨集群的replication复制方式是主集群推的方式,复制时一个master集群可以复制给多个从集群,将整个WAL的修改(包括insert delete和cell的修改)都会安装顺序的复制到从集群中。
因每个region server(区域服务)都有WAL,在replication时,每个regionserver会记录最后复制的位置,然后每次复制都从最后复制的位置开始。每个从集群的位置(position)都会单独维护,Hbase集群zookeeper服务的peer_node和rs_node维护这个队列。
而本发明的Wal parser采集器正是采用发送与Hbase主从集群replication相同的协议请求,在获取到WAL日志时解析并发送到kafka集群中。
上述WAL日志(包括目录的WAL日志和数据的WAL日志)的请求整体流程参考图7:
WAL采集器(parser)通过获取上次解析位置,然后向Hbase集群发送同步请求,维护Hbase集群中的peer_node和rs_node节点状态,这两个节点保存和更新Hbase复制(replication)时主从同步的状态信息。然后Hbase集群根据同步进度发送WAL日志给parser,parser解析日志并发给kafka集群。
本申请提供一种数据同步方法及系统,以解决相关技术中,通过组件无法实现实时同步且只能批量同步的问题。
图8是本申请实施例提供的一种数据同步方法,该方法应用于数据同步系统,该系统包括数据同步装置、第一服务器和第二服务器,方法包括:
步骤S01、数据同步装置采集第一数据库的原始数据;其中,原始数据包括第一数据、第二数据和第三数据,第一数据包括第一数据库中的目录表数据;第二数据包括第一数据库的目录表WAL日志数据,第三数据包括第一数据库的数据表WAL日志数据;
步骤S02、数据同步装置分别为第一数据、第二数据和第三数据添加时间信息,得到预处理数据;
步骤S03、数据同步装置将预处理数据依据时间信息同步到第二数据中,其中,第一数据库包括Hbase数据库,第二数据库包括MySQL数据库。
在一些实施例中,数据同步装置将预处理数据依据时间信息同步到第二数据中包括:
数据同步装置将预处理数据均写入到第一服务器,并通过第一服务器转发给第二服务器;
第二服务器解析预处理数据,并基于预处理数据中的时间信息将原始数据同步到第二数据库。
在一些实施例中,该方法还包括:
第二服务器基于第一数据、第二数据和第三数据,识别针对第一数据库的操作动作,并将操作动作和对应的操作数据同步到第二数据库中。
在一些实施例中,基于第一数据、第二数据和第三数据,识别针对第一数据库的操作动作包括:
将第一数据库中的目录表数据和存储的目录表数据比较;
检测第一数据库中的目录表数据是否增加至少一行数据;
如果是,则提取出增加的至少一行数据对应的表名、及区域Region信息;
基于表名和Region信息生成与MySQL数据库对应的建表语句并写入到MySQL数据库中。
在一些实施例中,基于第一数据、第二数据和第三数据,识别针对第一数据库的操作动作包括:
检测第一数据库中的目录表的WAL日志信息;目录表的WAL日志信息记录有目录表的插入、更新和删除操作;
如果目录表的WAL日志信息标识从第一数据库中删除了第一Region信息,则从第二数据库中删除与第一Region信息对应的表。
在一些实施例中,基于第一数据、第二数据和第三数据,识别针对第一数据库的操作动作包括:
将第一数据库中的数据表的、WAL日志数据和存储的数据表日志数据比较;
检测第一数据库中的数据表是否存在DDL操作;
如果是,则从数据表的WAL日志数据中提取所DDL操作、对应的表名和/或列名,并基于表明和/或列名,将DDL操作同步到第二数据库。
在一些实施例中,基于第一数据、第二数据和第三数据,识别针对第一数据库的操作动作包括:
基于第一数据、第二数据和第三数据,周期性识别针对第一数据库的操作动作。
在一些实施例中,第一服务器是kafka集群,第二服务器是flink集群。
图9是本申请实施例提供的一种数据同步系统,该系统包括数据同步装置901、第一服务器902和第二服务器903,其中,
数据同步装置采集第一数据库的原始数据;其中,原始数据包括第一数据、第二数据和第三数据,第一数据包括第一数据库中的目录表数据;第二数据包括第一数据库的目录表WAL日志数据,第三数据包括第一数据库的数据表WAL日志数据;
数据同步装置分别为第一数据、第二数据和第三数据添加时间信息,得到预处理数据;
数据同步装置将预处理数据依据时间信息同步到第二数据中,其中,第一数据库包括Hbase数据库,第二数据库包括MySQL数据库。
数据同步装置可以集成在第一服务器中,也可以单独设置。
在一些实施例中,数据同步装置将预处理数据依据时间信息同步到第二数据中包括:
数据同步装置将预处理数据均写入到第一服务器,并通过第一服务器转发给第二服务器;
第二服务器解析预处理数据,并基于预处理数据中的时间信息将原始数据同步到第二数据库。
本公开实施例可以实现Hbase数据库到MySQL数据库的数据同步,并同步DDL操作,保证数据一致性。
本领域内的技术人员应明白,本申请的实施例可提供为方法、系统、或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本申请是参照根据本申请实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
在一个典型的配置中,计算设备包括一个或多个处理器(CPU)、输入/输出接口、网络接口和内存。存储器可能包括计算机可读介质中的非永久性存储器,随机存取存储器(RAM)和/或非易失性内存等形式,如只读存储器(ROM)或闪存(flash RAM)。存储器是计算机可读介质的示例。
计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁带磁磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括暂存电脑可读媒体(transitory media),如调制的数据信号和载波。
还需要说明的是,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、商品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、商品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括要素的过程、方法、商品或者设备中还存在另外的相同要素。
本领域技术人员应明白,本申请的实施例可提供为方法、系统或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
以上仅为本申请的实施例而已,并不用于限制本申请。对于本领域技术人员来说,本申请可以有各种更改和变化。凡在本申请的精神和原理之内所作的任何修改、等同替换、改进等,均应包含在本申请的权利要求范围之内。

Claims (10)

1.一种数据同步方法,其特征在于,应用于数据同步系统,所述系统包括数据同步装置、第一服务器和第二服务器,所述方法包括:
所述数据同步装置采集第一数据库的原始数据;其中,所述原始数据包括第一数据、第二数据和第三数据,所述第一数据包括所述第一数据库中的目录表数据;所述第二数据包括所述第一数据库的目录表WAL日志数据,所述第三数据包括所述第一数据库的数据表WAL日志数据;
所述数据同步装置分别为所述第一数据、第二数据和第三数据添加时间信息,得到预处理数据;
所述数据同步装置将所述预处理数据依据所述时间信息同步到第二数据中,其中,所述第一数据库包括Hbase数据库,所述第二数据库包括MySQL数据库。
2.根据权利要求1所述的数据同步方法,其特征在于,所述数据同步装置将所述预处理数据依据所述时间信息同步到第二数据中包括:
数据同步装置将所述预处理数据均写入到第一服务器,并通过所述第一服务器转发给第二服务器;
所述第二服务器解析所述预处理数据,并基于所述预处理数据中的时间信息将所述原始数据同步到第二数据库。
3.根据权利要求1所述的数据同步方法,其特征在于,所述方法还包括:
所述第二服务器基于第一数据、第二数据和第三数据,识别针对所述第一数据库的操作动作,并将所述操作动作和对应的操作数据同步到所述第二数据库中。
4.根据权利要求3所述的数据同步方法,其特征在于,基于第一数据、第二数据和第三数据,识别针对所述第一数据库的操作动作包括:
将所述第一数据库中的目录表数据和存储的目录表数据比较;
检测所述第一数据库中的目录表数据是否增加至少一行数据;
如果是,则提取出增加的至少一行数据对应的表名、及区域Region信息;
基于所述表名和所述Region信息生成与所述MySQL数据库对应的建表语句并写入到所述MySQL数据库中。
5.根据权利要求3所述的数据同步方法,其特征在于,基于第一数据、第二数据和第三数据,识别针对所述第一数据库的操作动作包括:
检测第一数据库中的目录表的WAL日志信息;所述目录表的WAL日志信息记录有所述目录表的插入、更新和删除操作;
如果所述目录表的WAL日志信息标识从第一数据库中删除了第一Region信息,则从所述第二数据库中删除与所述第一Region信息对应的表。
6.根据权利要求3所述的数据同步方法,其特征在于,基于第一数据、第二数据和第三数据,识别针对所述第一数据库的操作动作包括:
将所述第一数据库中的数据表的、WAL日志数据和存储的数据表日志数据比较;
检测所述第一数据库中的数据表是否存在DDL操作;
如果是,则从所述数据表的WAL日志数据中提取所DDL操作、对应的表名和/或列名,并基于所述表名和/或列名,将所述DDL操作同步到第二数据库。
7.根据权利要求3所述的数据同步方法,其特征在于,基于第一数据、第二数据和第三数据,识别针对所述第一数据库的操作动作包括:
基于第一数据、第二数据和第三数据,周期性识别针对所述第一数据库的操作动作。
8.根据权利要求1-7任一项所述的数据同步方法,其特征在于,
所述第一服务器是kafka集群,所述第二服务器是flink集群。
9.一种数据同步系统,所述系统包括数据同步装置、第一服务器和第二服务器,其中,
所述数据同步装置采集第一数据库的原始数据;其中,所述原始数据包括第一数据、第二数据和第三数据,所述第一数据包括所述第一数据库中的目录表数据;所述第二数据包括所述第一数据库的目录表WAL日志数据,所述第三数据包括所述第一数据库的数据表WAL日志数据;
所述数据同步装置分别为所述第一数据、第二数据和第三数据添加时间信息,得到预处理数据;
所述数据同步装置将所述预处理数据依据所述时间信息同步到第二数据中,其中,所述第一数据库包括Hbase数据库,所述第二数据库包括MySQL数据库。
10.根据权利要求9所述的数据同步系统,其特征在于,所述数据同步装置将所述预处理数据依据所述时间信息同步到第二数据中包括:
数据同步装置将所述预处理数据均写入到第一服务器,并通过所述第一服务器转发给第二服务器;
所述第二服务器解析所述预处理数据,并基于所述预处理数据中的时间信息将所述原始数据同步到第二数据库。
CN202011403522.8A 2020-12-04 2020-12-04 数据同步方法及系统 Active CN112328702B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202011403522.8A CN112328702B (zh) 2020-12-04 2020-12-04 数据同步方法及系统

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202011403522.8A CN112328702B (zh) 2020-12-04 2020-12-04 数据同步方法及系统

Publications (2)

Publication Number Publication Date
CN112328702A CN112328702A (zh) 2021-02-05
CN112328702B true CN112328702B (zh) 2024-03-26

Family

ID=74302136

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202011403522.8A Active CN112328702B (zh) 2020-12-04 2020-12-04 数据同步方法及系统

Country Status (1)

Country Link
CN (1) CN112328702B (zh)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113254535B (zh) * 2021-06-08 2022-12-13 成都新潮传媒集团有限公司 一种mongodb到mysql的数据同步方法、装置及计算机可读存储介质
CN113505173B (zh) * 2021-07-08 2024-03-19 上海卓钢链科技有限公司 一种数据采集同步系统与同步方法
CN116719971B (zh) * 2023-05-08 2024-04-09 中银金融科技有限公司 拉链表数据加载方法、装置和电子设备

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107016039A (zh) * 2017-01-06 2017-08-04 阿里巴巴集团控股有限公司 数据库写入的方法和数据库系统
CN111459954A (zh) * 2020-03-04 2020-07-28 深圳壹账通智能科技有限公司 分布式数据同步方法、装置、设备及介质

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11269925B2 (en) * 2019-05-15 2022-03-08 International Business Machines Corporation Data synchronization in a data analysis system

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107016039A (zh) * 2017-01-06 2017-08-04 阿里巴巴集团控股有限公司 数据库写入的方法和数据库系统
CN111459954A (zh) * 2020-03-04 2020-07-28 深圳壹账通智能科技有限公司 分布式数据同步方法、装置、设备及介质

Also Published As

Publication number Publication date
CN112328702A (zh) 2021-02-05

Similar Documents

Publication Publication Date Title
CN112328702B (zh) 数据同步方法及系统
JP7271670B2 (ja) データレプリケーション方法、装置、コンピュータ機器及びコンピュータプログラム
CN110209726B (zh) 分布式数据库集群系统、数据同步方法及存储介质
CN110321387B (zh) 数据同步方法、设备及终端设备
CN109918349B (zh) 日志处理方法、装置、存储介质和电子装置
US9218383B2 (en) Differentiated secondary index maintenance in log structured NoSQL data stores
US20180144015A1 (en) Redoing transaction log records in parallel
CN107515874B (zh) 一种分布式非关系型数据库中同步增量数据的方法与设备
CN110196885B (zh) 一种云化分布式实时数据库系统
US20200401562A1 (en) Parallel processing of filtered transaction logs
US20140025899A1 (en) Efficiently Updating and Deleting Data in a Data Storage System
CN107016039B (zh) 数据库写入的方法和数据库系统
CN104794190A (zh) 一种大数据有效存储的方法和装置
CN111680017A (zh) 一种数据同步的方法及装置
CN111897867A (zh) 一种数据库日志统计方法、系统及相关装置
CN113535856A (zh) 数据同步方法及系统
CN115587118A (zh) 任务数据的维表关联处理方法及装置、电子设备
US9405828B2 (en) System and method for phonetic searching of data
CN114254016A (zh) 基于弹性搜索的数据同步方法、装置、设备及存储介质
CN114416868B (zh) 一种数据同步方法、装置、设备及存储介质
CN110019169B (zh) 一种数据处理的方法及装置
US20190057028A1 (en) Conflict Resolution and Garbage Collection in Distributed Databases
US9870402B2 (en) Distributed storage device, storage node, data providing method, and medium
WO2023142610A1 (zh) 数据处理方法和装置
CN112035428A (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
GR01 Patent grant
GR01 Patent grant