CN109960710B - 数据库之间的数据同步方法和系统 - Google Patents
数据库之间的数据同步方法和系统 Download PDFInfo
- Publication number
- CN109960710B CN109960710B CN201910040361.1A CN201910040361A CN109960710B CN 109960710 B CN109960710 B CN 109960710B CN 201910040361 A CN201910040361 A CN 201910040361A CN 109960710 B CN109960710 B CN 109960710B
- Authority
- CN
- China
- Prior art keywords
- sql
- sentences
- standard
- database
- server
- 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
Links
- 238000000034 method Methods 0.000 title claims abstract description 32
- 238000005192 partition Methods 0.000 claims description 29
- 238000003780 insertion Methods 0.000 claims description 9
- 230000037431 insertion Effects 0.000 claims description 9
- 230000002159 abnormal effect Effects 0.000 claims description 8
- 238000012217 deletion Methods 0.000 claims description 8
- 230000037430 deletion Effects 0.000 claims description 8
- 238000012216 screening Methods 0.000 claims description 7
- 238000012544 monitoring process Methods 0.000 claims description 5
- 238000001914 filtration Methods 0.000 claims description 4
- 238000004806 packaging method and process Methods 0.000 claims description 3
- 230000001360 synchronised effect Effects 0.000 description 11
- 238000012545 processing Methods 0.000 description 6
- 238000010586 diagram Methods 0.000 description 5
- 230000008859 change Effects 0.000 description 4
- 238000012423 maintenance Methods 0.000 description 4
- 230000008569 process Effects 0.000 description 4
- 230000003993 interaction Effects 0.000 description 3
- 230000002547 anomalous effect Effects 0.000 description 2
- 230000009286 beneficial effect Effects 0.000 description 2
- 230000005540 biological transmission Effects 0.000 description 2
- 230000007246 mechanism Effects 0.000 description 2
- 238000004590 computer program Methods 0.000 description 1
- 238000005538 encapsulation Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
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/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/24—Querying
- G06F16/242—Query formulation
-
- 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
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Databases & Information Systems (AREA)
- Physics & Mathematics (AREA)
- Data Mining & Analysis (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computing Systems (AREA)
- Mathematical Physics (AREA)
- Computational Linguistics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本申请数据同步技术领域,特别是涉及一种数据库之间的数据同步方法和系统。该方法包括:源服务器读取源数据库的日志文件,并将所述日志文件解析成可识别文本;所述源服务器从所述可识别文本中筛选SQL语句,并将获得的SQL语句转换成标准SQL语句;所述源服务器将所述标准SQL语句封装成订阅消息并发送至kafka集群;所述kafka集群在接收到所述订阅消息后,向各目标服务器进行广播;所述目标服务器在获得所述订阅消息后,对所述订阅消息进行解封装得到所述标准SQL语句,执行标准SQL语句,以将源数据库中发送变化的数据同步至目标数据库。采用本方法能确保在不同数据库集群中进行数据同步时,达到实时同步的效果。
Description
技术领域
本申请涉及数据同步技术领域,特别是涉及一种数据库之间的数据同步方法和系统。
背景技术
在当前的互联网时代,许多企业在网上为广大用户提供数字服务,使得数据访问需求量呈井喷式增长,核心数据库往往无法支撑如此大的并发操作,为此许多互联网和金融等企业建立多个跨区域的目标数据库,将大量业务数据从核心数据库转移到相应区域的目标数据库中。
为确保企业业务的正常运转,核心数据库与各区域的目标数据库之间需要实现数据同步,保证数据需的完整性和统一性。传统的数据同步方案中,数据同步主要是同一个数据库集群内的主从服务器之间互相进行数据同步。然而,在不同数据库集群中进行数据同步时,由于无法达到数据实时同步而影响企业业务的正常运转。
发明内容
基于此,有必要针对上述技术问题,提供一种数据库之间的数据同步方法和系统,能够确保在不同数据库集群中进行数据同步时,达到实时同步的效果。
一种数据库之间的数据同步方法,所述方法包括:
源服务器读取源数据库的日志文件,并将所述日志文件解析成可识别文本;
所述源服务器从所述可识别文本中筛选SQL语句,并将获得的SQL语句转换成标准SQL语句;筛选的所述SQL语句用于对数据库中发生变化的数据进行操作;
所述源服务器将所述标准SQL语句封装成订阅消息并发送至kafka集群;
所述kafka集群在接收到所述订阅消息后,向各目标服务器进行广播;
所述目标服务器在获得所述订阅消息后,对所述订阅消息进行解封装得到所述标准SQL语句,执行所述标准SQL语句,以将所述源数据库中发送变化的数据同步至目标数据库。
在其中一个实施例中,所述SQL语句至少包括以下之一:新增语句、插入语句和删除语句;所述源服务器从所述可识别文本中筛选SQL语句,并将获得的SQL语句转换成标准SQL语句包括:
所述源服务器获取与所述新增语句、插入语句和/或删除语句对应的关键词;
所述源服务器从所述可识别文本中筛选与所述关键词匹配的SQL语句,或者,将可识别文本中与所述关键词不匹配的SQL语句进行过滤,得到筛选的SQL语句,并将获得的SQL语句转换成标准SQL语句。
在其中一个实施例中,所述标准SQL语句,至少包括以下之一:标准的新增语句、标准的插入语句和标准的删除语句;
所述执行所述标准SQL语句,以使所述业务数据从所述源数据库同步至目标数据库包括:
所述目标服务器执行所述标准的新增语句,以将所述源数据库中更新的业务数据同步更新至目标数据库;和/或,
所述目标服务器执行所述标准的插入语句,以将所述源数据库中插入的业务数据同步插入至目标数据库;和/或,
所述目标服务器执行所述标准的删除语句,以删除目标数据库中与所述源数据库中被删除的业务数据相对应的数据。
在其中一个实施例中,还包括:
所述源服务器通过指定分区的方式,将所述订阅消息发送至所述kafka集群中所指定的分区;或者,
所述源服务器通过均衡策略的方式,将所述订阅消息发送至所述kafka集群中对应不同的分区。
在其中一个实施例中,还包括:
zookeeper系统监控所述源服务器、所述kafka集群和所述目标服务器的工作状态,根据所述工作状态生成状态列表,以便根据所述状态列表从所述源服务器、所述kafka集群和所述目标服务器中查找出现异常的设备。
一种数据库之间的数据同步系统,所述系统包括:
源服务器,用于读取源数据库的日志文件,并将所述日志文件解析成可识别文本;
所述源服务器,还用于从所述可识别文本中筛选SQL语句,并将获得的SQL语句转换成标准SQL语句;筛选的所述SQL语句用于对数据库中发生变化的数据进行操作;
所述源服务器,还用于将所述标准SQL语句封装成订阅消息并发送至kafka集群;
所述kafka集群,用于在接收到所述订阅消息后,向各目标服务器进行广播;
所述目标服务器,用于在获得所述订阅消息后,对所述订阅消息进行解封装得到所述标准SQL语句,执行所述标准SQL语句,以将所述源数据库中发送变化的数据同步至目标数据库。
在其中一个实施例中,所述源服务器包括分析器和转换器;所述SQL语句至少包括以下之一:新增语句、插入语句和删除语句;
所述分析器,用于分别获取与所述新增语句、插入语句和/或删除语句对应的关键词;从所述可识别文本中筛选与所述关键词匹配的SQL语句,或者,将可识别文本中与所述关键词不匹配的SQL语句进行过滤,得到筛选的SQL语句;
所述转换器,用于将获得的SQL语句转换成标准SQL语句。
在其中一个实施例中,所述标准SQL语句,至少包括以下之一:标准的新增语句、标准的插入语句和标准的删除语句;
所述目标服务器还用于执行所述标准的新增语句,以将所述源数据库中更新的业务数据同步更新至目标数据库;和/或,执行所述标准的插入语句,以将所述源数据库中插入的业务数据同步插入至目标数据库;和/或,执行所述标准的删除语句,以删除目标数据库中与所述源数据库中被删除的业务数据相对应的数据。
在其中一个实施例中,所述目标服务器还用于:
通过指定分区的方式,将所述订阅消息发送至所述kafka集群中所指定的分区;或者,通过均衡策略的方式,将所述订阅消息发送至所述kafka集群中对应不同的分区。
在其中一个实施例中,还包括:
zookeeper系统,用于监控所述源服务器、所述kafka集群和所述目标服务器的工作状态,根据所述工作状态生成状态列表,以便根据所述状态列表从所述源服务器、所述kafka集群和所述目标服务器中查找出现异常的设备。
上述数据库之间的数据同步方法和系统,日志文件中记载了关于源数据库的所有数据操作,源服务器将日志文件解析为可识别文本,从可识别文本中筛选筛选的SQL语句,并将该SQL语句转换成标准SQL语句,由于标准SQL语句可以支持多种类型数据库的数据操作,从而实现在不同数据库集群之间进行数据实时同步,进而可以确保业务的正常运行。
附图说明
图1为一个实施例中数据库之间的数据同步方法的应用场景图;
图2为一个实施例中数据库之间的数据同步方法的流程示意图;
图3为一个实施例中kafka集群分区存储的示意图;
图4为一个实施例中数据库之间的数据同步系统的结构框图;
图5为另一个实施例中数据库之间的数据同步系统的结构框图。
具体实施方式
为了使本申请的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本申请进行进一步详细说明。应当理解,此处描述的具体实施例仅仅用以解释本申请,并不用于限定本申请。
本申请提供的数据库之间的数据同步方法,可以应用于如图1所示的应用环境中。其中,源服务器110、kafka集群120、目标服务器130、第一终端140和第二终端150之间可以通过网络进行通信。源服务器110读取源数据库的日志文件,并将日志文件解析成可识别文本;源服务器110从可识别文本中筛选SQL语句,并将获得的SQL语句转换成标准SQL语句;源服务器110将标准SQL语句封装成订阅消息并发送至kafka集群;kafka集群120在接收到订阅消息后,向各目标服务器130进行广播;目标服务器130在获得订阅消息后,对订阅消息进行解封装得到标准SQL语句,执行标准SQL语句,以将源数据库中发送变化的数据同步至目标数据库。此外,第一终端140和第二终端150可以分别从源服务器110和目标服务器130获取数据,以进行相应的业务交互,如获取保险业务数据以办理保险业务等。其中,第一终端140和第二终端150可以但不限于是各种个人计算机、笔记本电脑、智能手机和平板电脑等。源服务器110、kafka集群120和目标服务器130分别可以用独立的服务器或者是多个服务器组成的服务器集群来实现。
在一个实施例中,如图2所示,提供了一种数据库之间的数据同步方法,该包括以下步骤:
S202,源服务器读取源数据库的日志文件,并将日志文件解析成可识别文本。
其中,源数据库可以是mySQL、Oracle或postgreSQL等数据库。日志文件可以是二进制的binlog日志文件。在binlog日志文件中保存了所有的对数据库的操作,如查询、更新、插入、增加和删除数据表等与数据库相关的操作。此外,binlog日志文件中还会记录操作的数据和数据的类型。
在一个实施例中,源服务器可以通过canal读取源数据库的日志文件。其中,canal可以模拟数据库的slave交互协议,伪装为数据库的一个slaver,然后便可读取源数据库的日志文件。
在一个实施例中,由于日志文件是二进制的,源服务器可以将二进制的日志文件解析成用户可识别的文件,从而可以得到用户可识别的、关于数据库操作的SQL(Structured Query Language,结构化查询语言)语句。
在一个实施例中,源服务器中包括有翻译器,其中,翻译器分为分析器(analyzer)和转换器(convertor)两个部分。源服务器可以通过analyzer将binlog日志文件解析成可识别文本。
在一个实施例中,S202具体可以包括:当源数据库中的数据发生变化,或满足预设的同步时间要求时,源服务器通过canal读取源数据库的日志文件。其中,预设的同步时间可以是每隔几秒钟、几分钟或其它间隔时间。
在一个实施例中,源服务器可以同步源数据库中发生变化的数据,也可以同步源数据库中的所有数据。当同步源数据库中所有的数据时,源服务器按照配置文件中的配置信息,使canal从起始点开始读取binlog日志。当只同步源数据库中发生变化的数据时,源服务器按照配置文件中的配置信息,使canal按照数据的保存时间读取binlog日志,得到binlog日志文件。然后,源服务器通过analyzer把读取到的二进制binlog日志文件解析成用户可识别文本。
S204,源服务器从可识别文本中筛选SQL语句,并将获得的SQL语句转换成标准SQL语句;筛选的SQL语句用于对数据库中发生变化的数据进行操作。
其中,标准SQL语句至少包括以下之一:标准的新增语句、标准的插入语句和标准的删除语句。
在一个实施例中,筛选的SQL语句可以是:令数据库中的数据发生变化的SQL语句,例如至少包括以下之一:新增语句、插入语句和删除语句;S204具体可以包括:源服务器获取与新增语句、插入语句和/或删除语句对应的关键词;源服务器从可识别文本中筛选与关键词匹配的SQL语句,或者,将可识别文本中与关键词不匹配的SQL语句进行过滤,得到筛选的SQL语句,并将获得的SQL语句转换成标准SQL语句。
其中,新增语句可以是增添数据的语句和修改数据的语句等。
例如,新增语句、插入语句和删除语句中包括add、alter、drop、modify等用于操作数据库的关键词。源服务器在可识别文本中筛选与add、alter、drop、modify等关键词匹配的、且对数据库中发生变化的数据进行操作的SQL语句;或者,源服务器在可识别文本中,将与add、alter、drop、modify等关键词不匹配的SQL语句进行过滤,得到对数据库中发生变化的数据进行操作的SQL语句。
又例如,由于select查询语句不会使数据库中的数据发生变化,在进行数据同步的过程中,可以将select查询语句过滤掉。
在一个实施例中,源服务器还可以通过analyzer过滤其中不是操作业务表的数据,如非SQL语句。
在一个实施例中,源服务器通过convertor将源数据库的SQL语句翻译成标准的SQL语句。其中,标准的SQL语句可以在其它不同类型的数据库中执行,这是本系统可以在不同数据库之间同步数据的关键。
S206,源服务器将标准SQL语句封装成订阅消息并发送至kafka集群。
在一个实施例中,源服务器可以通过SQL_producer,将标准SQL语句封装成订阅消息并发送至kafka集群。由于kafka的发布订阅机制,使得kafka集群中一有订阅消息马上就会被目标服务器感知到,即刻用SQL_consumer(kafka的消费者)连接数据库执行SQL,所以是实时的。
其中,SQL_producer可以是由java开发的kafka集群的生产者,源服务器可以通过SQL_producer将SQL语句组装成kafka集群的订阅消息,然后将组装的订阅消息并发送至kafka集群。
在一个实施例中,源服务器通过指定分区的方式,将订阅消息发送至kafka集群中所指定的分区;或者,源服务器通过均衡策略的方式,将订阅消息发送至kafka集群中对应不同的分区。
例如,如图3所示,在发送订阅消息时,源服务器确定采用指定分区的方式或均衡策略的方式,又或者是随机均衡的方式。然后,源服务器按照指定分区的方式,将订阅消息发送至kafka集群中所指定的分区;或者,按照均衡策略的方式,将订阅消息发送至kafka集群中对应不同的分区;又或者,按照随机均衡的方式,将订阅消息随机发送至kafka集群中的分区。
S208,kafka集群在接收到订阅消息后,向各目标服务器进行广播。
S210,目标服务器在获得订阅消息后,对订阅消息进行解封装得到标准SQL语句,执行标准SQL语句,以将源数据库中发送变化的数据同步至目标数据库。
在一个实施例中,目标服务器在在接收到广播后,通过SQL_consumer消费订阅消息,在消费到订阅消息后,与目标数据库建立连接,对订阅消息进行解封装得到标准SQL语句,执行标准SQL语句,以将源数据库中发送变化的数据同步至目标数据库。
在一个实施例中,目标服务器将SQL_consumer与kafka集群建立长连接,通过所建立的长连接不断地从kafka集群中拉取订阅消息,然后对这些订阅消息进行消费。SQL_consumer在消费者消费订阅消息时,kafka也会通过offset来记录当前消费的位置,两个不同的SQL_consumer同时消费订阅消息是,消费的记录位置offset互不干扰。
在一个实施例中,对于SQL_consumer而言,它需要保存所消费的订阅消息的偏移量(offset),当consumer正常消费订阅消息时,offset将会"线性"的向前驱动,即订阅消息将依顺序被消费。
在一个实施例中,标准SQL语句,至少包括以下之一:标准的新增语句、标准的插入语句和标准的删除语句;S210中执行标准SQL语句,以使业务数据从源数据库同步至目标数据库包括:目标服务器执行标准的新增语句,以将源数据库中更新的业务数据同步更新至目标数据库;和/或,目标服务器执行标准的插入语句,以将源数据库中插入的业务数据同步插入至目标数据库;和/或,目标服务器执行标准的删除语句,以删除目标数据库中与源数据库中被删除的业务数据相对应的数据。
例如,若同步源数据库中发生变化的数据(即增量数据),在执行标准SQL语句时,获取增量数据以及该增量数据在目标数据库中的第一字段标识,按照第一字段标识将增量数据同步至目标数据库的相应字段内;若同步源数据库中的删除数据,在执行标准SQL语句时,根据所删除数据的字段确定目标数据库中的第二字段标识,按照第二字段标识删除目标数据库中相应字段的数据,从而实现数据同步。
在一个实施例中,zookeeper系统监控源服务器、kafka集群和目标服务器的工作状态,根据工作状态生成状态列表,以便根据状态列表从源服务器、kafka集群和目标服务器中查找出现异常的设备。
其中,zookeeper系统是管理集群的工具,可用于管理kafka集群、SQL_producer和SQL_consumer,监控kafka集群、SQL_producer和SQL_consumer的工作状态,确定工作状态是否正常。工作状态可以是源服务器、kafka集群和目标服务器是否正常工作的状态信息,如处理任务的耗时长(如处理任务的耗时大于预设阈值)、或者宕机等。
例如,zookeeper系统监控源服务器的工作状态,根据该工作状态确定源服务器处理任务的耗时长或出现宕机的情况时,则确定源服务器出现异常。同理也可确定kafka集群和目标服务器是否出现异常。
上述实施例中,日志文件中记载了关于源数据库的所有数据操作,源服务器将日志文件解析为可识别文本,从可识别文本中筛选筛选的SQL语句,并将该SQL语句转换成标准SQL语句,由于标准SQL语句可以支持多种类型数据库的数据操作,从而实现在不同数据库集群之间进行数据实时同步。
此外,通过上述实施例,还可以具有以下有益效果:
管理运维方便:自定义的SQL_producer、canal、SQL_consumer和convertor为纯java开发的系统,运维方便,对应的实体设备(如源服务器、kafka集群)及服务的运行状况都可以由zookeeper来监控。
异地机房同步:相比于mySQL或者Oracle等异地长距离机房的复制效率,采用本发明的实施例,将数据的回放拆散成了日志解析、分析日志、生成SQL语句、封装消息、传输消息和消费消息等步骤,每个步骤都可以部署多台机器提升性能,进而提升整个系统的性能。
跨不同数据库之间:由于将数据库操作通过转换器转换成了标准的SQL语言,从而可以实现在不同数据库之间进行数据的同步。
应该理解的是,虽然图2的流程图中的各个步骤按照箭头的指示依次显示,但是这些步骤并不是必然按照箭头指示的顺序依次执行。除非本文中有明确的说明,这些步骤的执行并没有严格的顺序限制,这些步骤可以以其它的顺序执行。而且,图2中的至少一部分步骤可以包括多个子步骤或者多个阶段,这些子步骤或者阶段并不必然是在同一时刻执行完成,而是可以在不同的时刻执行,这些子步骤或者阶段的执行顺序也不必然是依次进行,而是可以与其它步骤或者其它步骤的子步骤或者阶段的至少一部分轮流或者交替地执行。
在一个实施例中,如图4所示,提供了一种数据库之间的数据同步系统,包括:源服务器402、kafka集群404和目标服务器406,其中:
源服务器402,用于读取源数据库的日志文件,并将日志文件解析成可识别文本。
其中,源数据库可以是mySQL、Oracle或postgreSQL等数据库。日志文件可以是二进制的binlog日志文件。在binlog日志文件中保存了所有的对数据库的操作,如查询、更新、插入、增加和删除数据表等与数据库相关的操作。此外,binlog日志文件中还会记录操作的数据和数据的类型。
在一个实施例中,源服务器402,还用于可以通过canal读取源数据库的日志文件。其中,canal可以模拟数据库的slave交互协议,伪装为数据库的一个slaver,然后便可读取日志文件。
在一个实施例中,由于日志文件是二进制的,源服务器402,还用于可以将二进制的日志文件解析成用户可识别的文件,从而可以得到用户可识别的、关于数据库操作的SQL(Structured Query Language,结构化查询语言)语句。
在一个实施例中,源服务器402包括翻译器,翻译器分为分析器和转换器两部分;其中,筛选的SQL语句,至少包括以下之一:新增语句、插入语句和删除语句;
分析器,用于分别获取与新增语句、插入语句和/或删除语句对应的关键词;从可识别文本中筛选与关键词匹配的SQL语句,或者,将可识别文本中与关键词不匹配的SQL语句进行过滤,得到筛选的SQL语句;
转换器,用于将获得的SQL语句转换成标准SQL语句。
在一个实施例中,当源数据库中的数据发生变化时,或者,在达到预设的同步时间时,源服务器402,还用于通过canal读取源数据库的日志文件。
在一个实施例中,源服务器402,还用于可以同步源数据库中发生变化的数据,也可以同步源数据库中的所有数据。当同步源数据库中所有的数据时,源服务器402还用于按照配置文件中的配置信息,使canal从起始点开始读取binlog日志。当只同步源数据库中发生变化的数据时,源服务器402还用于按照配置文件中的配置信息,使canal按照数据的保存时间读取binlog日志,得到binlog日志文件。然后,源服务器402,还用于通过analyzer把读取到的二进制binlog日志文件解析成用户可识别文本。
源服务器402,还用于从可识别文本中筛选SQL语句,并将获得的SQL语句转换成标准SQL语句;筛选的SQL语句用于对数据库中发生变化的数据进行操作。
其中,标准SQL语句,至少包括以下之一:标准的新增语句、标准的插入语句和标准的删除语句。
在一个实施例中,筛选的SQL语句可以是:令数据库中的数据发生变化的SQL语句,例如至少包括以下之一:新增语句、插入语句和删除语句;源服务器402具体用于:获取与新增语句、插入语句和/或删除语句对应的关键词;从可识别文本中筛选与关键词匹配的SQL语句,或者,将可识别文本中与关键词不匹配的SQL语句进行过滤,得到筛选的SQL语句,并将获得的SQL语句转换成标准SQL语句。
其中,新增语句可以是增添数据的语句和修改数据的语句等。
例如,新增语句、插入语句和删除语句中包括add、alter、drop、modify等用于操作数据库的关键词。源服务器402还用于在可识别文本中筛选与add、alter、drop、modify等关键词匹配的、且对数据库中发生变化的数据进行操作的SQL语句;或者,源服务器402还用于在可识别文本中,将与add、alter、drop、modify等关键词不匹配的SQL语句进行过滤,得到对数据库中发生变化的数据进行操作的SQL语句。
又例如,由于select查询语句不会使数据库中的数据发生变化,在进行数据同步的过程中,可以将select查询语句过滤掉。
在一个实施例中,源服务器402,还用于通过analyzer过滤其中不是操作业务表的数据,如非SQL语句。
在一个实施例中,源服务器402,还用于通过convertor将源数据库的SQL语句翻译成标准的SQL语句。其中,标准的SQL语句可以在其它不同类型的数据库中执行,这是本系统可以在不同数据库之间同步数据的关键。
源服务器402,还用于将标准SQL语句封装成订阅消息并发送至kafka集群404。
在一个实施例中,源服务器402还用于通过SQL_producer,将标准SQL语句封装成订阅消息并发送至kafka集群404。由于kafka的发布订阅机制,使得kafka集群404中一有订阅消息马上就会被目标服务器感知到,即刻用SQL_consumer(kafka的消费者)连接数据库执行SQL,所以是实时的。
其中,SQL_producer可以是由java开发的kafka集群404的生产者,源服务器402,还用于通过SQL_producer将SQL语句组装成kafka集群404的订阅消息,然后将组装的订阅消息并发送至kafka集群404。
在一个实施例中,源服务器402,还用于通过指定分区的方式,将订阅消息发送至kafka集群404中所指定的分区;或者,通过均衡策略的方式,将订阅消息发送至kafka集群404中对应不同的分区。
例如,如图3所示,在发送订阅消息时,源服务器402确定采用指定分区的方式或均衡策略的方式,又或者是随机均衡的方式。然后,源服务器402按照指定分区的方式,将订阅消息发送至kafka集群404中所指定的分区;或者,按照均衡策略的方式,将订阅消息发送至kafka集群404中对应不同的分区;又或者,按照随机均衡的方式,将订阅消息随机发送至kafka集群404中的分区。
kafka集群404,用于在接收到订阅消息后,向各目标服务器406进行广播。
目标服务器406,用于在获得订阅消息后,对订阅消息进行解封装得到标准SQL语句,执行标准SQL语句,以将源数据库中发送变化的数据同步至目标数据库。
在一个实施例中,目标服务器406,还用于在在接收到广播后,通过SQL_consumer消费订阅消息,在消费到订阅消息后,与目标数据库建立连接,对订阅消息进行解封装得到标准SQL语句,执行标准SQL语句,以将源数据库中发送变化的数据同步至目标数据库。
在一个实施例中,目标服务器406还用于将SQL_consumer与kafka集群404建立长连接,通过所建立的长连接不断地从kafka集群404中拉取订阅消息,然后对这些订阅消息进行消费。SQL_consumer在消费者消费订阅消息时,kafka也会通过offset来记录当前消费的位置,两个不同的SQL_consumer同时消费订阅消息是,消费的记录位置offset互不干扰。
在一个实施例中,对于SQL_consumer而言,它需要保存所消费的订阅消息的偏移量(offset),当consumer正常消费订阅消息时,offset将会"线性"的向前驱动,即订阅消息将依顺序被消费。
在一个实施例中,标准SQL语句至少包括以下之一:标准的新增语句、标准的插入语句和标准的删除语句;目标服务器406,具体用于执行标准的新增语句,以将源数据库中更新的业务数据同步更新至目标数据库;和/或,执行标准的插入语句,以将源数据库中插入的业务数据同步插入至目标数据库;和/或,执行标准的删除语句,以删除目标数据库中与源数据库中被删除的业务数据相对应的数据。
例如,若同步源数据库中发生变化的数据(即增量数据),在执行标准SQL语句时,获取增量数据以及该增量数据在目标数据库中的第一字段标识,按照第一字段标识将增量数据同步至目标数据库的相应字段内;若同步源数据库中的删除数据,在执行标准SQL语句时,根据所删除数据的字段确定目标数据库中的第二字段标识,按照第二字段标识删除目标数据库中相应字段的数据,从而实现数据同步。
在一个实施例中,如图5所示,数据同步系统还包括zookeeper系统408;其中:zookeeper系统408用于监控源服务器402、kafka集群404和目标服务器406的工作状态,根据工作状态生成状态列表,以便根据状态列表从源服务器、kafka集群和目标服务器中查找出现异常的设备。
其中,zookeeper系统408是管理集群的工具,可用于管理kafka集群404、SQL_producer和SQL_consumer,监控kafka集群404、SQL_producer和SQL_consumer的工作状态,确定工作状态是否正常。工作状态可以是源服务器、kafka集群和目标服务器是否正常工作的状态信息,如处理任务的耗时长(如处理任务的耗时大于预设阈值)、或者宕机等。
例如,zookeeper系统监控源服务器的工作状态,根据该工作状态确定源服务器处理任务的耗时长或出现宕机的情况时,则确定源服务器出现异常。同理也可确定kafka集群和目标服务器是否出现异常。
上述实施例中,日志文件中记载了关于源数据库的所有数据操作,源服务器将日志文件解析为可识别文本,从可识别文本中筛选筛选的SQL语句,并将该SQL语句转换成标准SQL语句,由于标准SQL语句可以支持多种类型数据库的数据操作,从而实现在不同数据库集群之间进行数据实时同步,进而可以确保业务的正常运行。
此外,通过上述实施例,还可以具有以下有益效果:
管理运维方便:自定义的SQL_producer、canal、SQL_consumer和convertor为纯java开发的系统,运维方便,对应的实体设备(如源服务器、kafka集群)及服务的运行状况都可以由zookeeper来监控。
异地机房同步:相比于mySQL或者Oracle等异地长距离机房的复制效率,采用本发明的实施例,将数据的回放拆散成了日志解析、分析日志、生成SQL语句、封装消息、传输消息和消费消息等步骤,每个步骤都可以部署多台机器提升性能,进而提升整个系统的性能。
跨不同数据库之间:由于将数据库操作通过转换器转换成了标准的SQL语言,从而可以实现在不同数据库之间进行数据的同步。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一非易失性计算机可读取存储介质中,该计算机程序在执行时,可包括如上述各方法的实施例的流程。其中,本申请所提供的各实施例中所使用的对存储器、存储、数据库或其它介质的任何引用,均可包括非易失性和/或易失性存储器。非易失性存储器可包括只读存储器(ROM)、可编程ROM(PROM)、电可编程ROM(EPROM)、电可擦除可编程ROM(EEPROM)或闪存。易失性存储器可包括随机存取存储器(RAM)或者外部高速缓冲存储器。作为说明而非局限,RAM以多种形式可得,诸如静态RAM(SRAM)、动态RAM(DRAM)、同步DRAM(SDRAM)、双数据率SDRAM(DDRSDRAM)、增强型SDRAM(ESDRAM)、同步链路(Synchlink)DRAM(SLDRAM)、存储器总线(Rambus)直接RAM(RDRAM)、直接存储器总线动态RAM(DRDRAM)、以及存储器总线动态RAM(RDRAM)等。
以上实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。
以上所述实施例仅表达了本申请的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本申请构思的前提下,还可以做出若干变形和改进,这些都属于本申请的保护范围。因此,本申请专利的保护范围应以所附权利要求为准。
Claims (10)
1.一种数据库之间的数据同步方法,所述方法包括:
源服务器读取源数据库的日志文件,并将所述日志文件解析成可识别文本;其中,所述日志文件为binlog日志文件;
所述源服务器从所述可识别文本中筛选SQL语句,并将获得的SQL语句转换成标准SQL语句;筛选的所述SQL语句用于对数据库中发生变化的数据进行操作;
所述源服务器将所述标准SQL语句封装成订阅消息并发送至kafka集群;
所述kafka集群在接收到所述订阅消息后,向各目标服务器进行广播;
所述目标服务器将SQL_consumer与所述kafka集群建立长连接,通过所述长连接从所述kafka集群中拉取订阅消息,对所述订阅消息进行消费;在SQL_consumer消费所述订阅消息时,所述kafka集群通过offset记录当前消费位置,不同SQL_consumer同时消费所述订阅消息时,消费的记录位置offset互不干扰;
所述SQL_consumer保存消费的所述订阅消息的偏移量,当SQL_consumer消费订阅消息时,offset线性向前驱动,使得所述订阅消息依顺序被消费;
所述目标服务器在获得所述订阅消息后,对所述订阅消息进行解封装得到所述标准SQL语句,执行所述标准SQL语句,以将所述源数据库中发生变化的数据同步至目标数据库,实现不同数据库集群的数据同步。
2.根据权利要求1所述的方法,其特征在于,所述SQL语句至少包括以下之一:新增语句、插入语句和删除语句;所述从所述可识别文本中筛选SQL语句,并将获得的SQL语句转换成标准SQL语句包括:
所述源服务器获取与所述新增语句、插入语句和/或删除语句对应的关键词;
所述源服务器从所述可识别文本中筛选与所述关键词匹配的SQL语句,或者,将可识别文本中与所述关键词不匹配的SQL语句进行过滤,得到筛选的SQL语句,并将获得的SQL语句转换成标准SQL语句。
3.根据权利要求1所述的方法,其特征在于,所述标准SQL语句,至少包括以下之一:标准的新增语句、标准的插入语句和标准的删除语句;
所述执行所述标准SQL语句,以将所述源数据库中发生变化的数据同步至目标数据库包括:
所述目标服务器执行所述标准的新增语句,以将所述源数据库中更新的业务数据同步更新至目标数据库;和/或,
所述目标服务器执行所述标准的插入语句,以将所述源数据库中插入的业务数据同步插入至目标数据库;和/或,
所述目标服务器执行所述标准的删除语句,以删除目标数据库中与所述源数据库中被删除的业务数据相对应的数据。
4.根据权利要求1至3任一项所述的方法,其特征在于,还包括:
所述源服务器通过指定分区的方式,将所述订阅消息发送至所述kafka集群中所指定的分区;或者,
所述源服务器通过均衡策略的方式,将所述订阅消息发送至所述kafka集群中对应不同的分区。
5.根据权利要求1至3任一项所述的方法,其特征在于,还包括:
zookeeper系统监控所述源服务器、所述kafka集群和所述目标服务器的工作状态,根据所述工作状态生成状态列表,以便根据所述状态列表从所述源服务器、所述kafka集群和所述目标服务器中查找出现异常的设备。
6.一种数据库之间的数据同步系统,所述系统包括:
源服务器,用于读取源数据库的日志文件,并将所述日志文件解析成可识别文本;其中,所述日志文件为binlog日志文件;
所述源服务器,还用于从所述可识别文本中筛选SQL语句,并将获得的SQL语句转换成标准SQL语句;筛选的所述SQL语句用于对数据库中发生变化的数据进行操作;
所述源服务器,还用于将所述标准SQL语句封装成订阅消息并发送至kafka集群;
所述kafka集群,用于在接收到所述订阅消息后,向各目标服务器进行广播;
所述目标服务器,用于将SQL_consumer与所述kafka集群建立长连接,通过所述长连接从所述kafka集群中拉取订阅消息,对所述订阅消息进行消费;在SQL_consumer消费所述订阅消息时,所述kafka集群通过offset记录当前消费位置,不同SQL_consumer同时消费所述订阅消息时,消费的记录位置offset互不干扰;所述SQL_consumer保存消费的所述订阅消息的偏移量,当SQL_consumer消费订阅消息时,offset线性向前驱动,使得所述订阅消息依顺序被消费;所述目标服务器在获得所述订阅消息后,对所述订阅消息进行解封装得到所述标准SQL语句,执行所述标准SQL语句,以将所述源数据库中发生变化的数据同步至目标数据库,实现不同数据库集群的数据同步。
7.根据权利要求6所述的系统,其特征在于,所述源服务器包括分析器和转换器;所述SQL语句至少包括以下之一:新增语句、插入语句和删除语句;
所述分析器,用于分别获取与所述新增语句、插入语句和/或删除语句对应的关键词;从所述可识别文本中筛选与所述关键词匹配的SQL语句,或者,将可识别文本中与所述关键词不匹配的SQL语句进行过滤,得到筛选的SQL语句;
所述转换器,用于将获得的SQL语句转换成标准SQL语句。
8.根据权利要求6所述的系统,其特征在于,所述标准SQL语句,至少包括以下之一:标准的新增语句、标准的插入语句和标准的删除语句;
所述目标服务器还用于执行所述标准的新增语句,以将所述源数据库中更新的业务数据同步更新至目标数据库;和/或,执行所述标准的插入语句,以将所述源数据库中插入的业务数据同步插入至目标数据库;和/或,执行所述标准的删除语句,以删除目标数据库中与所述源数据库中被删除的业务数据相对应的数据。
9.根据权利要求6至8任一项所述的系统,其特征在于,所述目标服务器还用于:
通过指定分区的方式,将所述订阅消息发送至所述kafka集群中所指定的分区;或者,通过均衡策略的方式,将所述订阅消息发送至所述kafka集群中对应不同的分区。
10.根据权利要求6至8任一项所述的系统,其特征在于,还包括:
zookeeper系统,用于监控所述源服务器、所述kafka集群和所述目标服务器的工作状态,根据所述工作状态生成状态列表,以便根据所述状态列表从所述源服务器、所述kafka集群和所述目标服务器中查找出现异常的设备。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910040361.1A CN109960710B (zh) | 2019-01-16 | 2019-01-16 | 数据库之间的数据同步方法和系统 |
PCT/CN2019/116998 WO2020147392A1 (zh) | 2019-01-16 | 2019-11-11 | 数据库之间的数据同步方法和系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910040361.1A CN109960710B (zh) | 2019-01-16 | 2019-01-16 | 数据库之间的数据同步方法和系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN109960710A CN109960710A (zh) | 2019-07-02 |
CN109960710B true CN109960710B (zh) | 2023-04-11 |
Family
ID=67023551
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910040361.1A Active CN109960710B (zh) | 2019-01-16 | 2019-01-16 | 数据库之间的数据同步方法和系统 |
Country Status (2)
Country | Link |
---|---|
CN (1) | CN109960710B (zh) |
WO (1) | WO2020147392A1 (zh) |
Families Citing this family (35)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109960710B (zh) * | 2019-01-16 | 2023-04-11 | 平安科技(深圳)有限公司 | 数据库之间的数据同步方法和系统 |
CN110334156A (zh) * | 2019-07-10 | 2019-10-15 | 北京启迪区块链科技发展有限公司 | 一种数据库同步方法、装置、服务器和存储介质 |
CN110392104B (zh) * | 2019-07-18 | 2022-06-10 | 腾讯科技(深圳)有限公司 | 数据同步方法、系统、服务器及存储介质 |
CN110532275A (zh) * | 2019-08-09 | 2019-12-03 | 国云科技股份有限公司 | 一种跨域数据和文件更新同步的实现方法 |
CN110569142A (zh) * | 2019-08-29 | 2019-12-13 | 天津大学 | 一种oracle数据增量同步系统及方法 |
CN110865974B (zh) * | 2019-09-27 | 2023-01-10 | 苏州浪潮智能科技有限公司 | 一种基于kafka智能加载离线SQL表数据的方法 |
CN111125214B (zh) * | 2019-12-02 | 2023-08-25 | 武汉虹信技术服务有限责任公司 | 一种轻量级增量数据同步方法、装置及计算机可读介质 |
CN111177254B (zh) * | 2019-12-05 | 2021-08-17 | 武汉达梦数据库股份有限公司 | 一种异构关系型数据库之间数据同步的方法和装置 |
CN111049898A (zh) * | 2019-12-10 | 2020-04-21 | 杭州东方通信软件技术有限公司 | 一种实现计算集群资源跨域架构的方法及系统 |
CN111125065B (zh) * | 2019-12-24 | 2023-09-12 | 阳光人寿保险股份有限公司 | 可视化数据同步方法、系统、终端和计算机可读存储介质 |
CN111913853A (zh) * | 2020-08-14 | 2020-11-10 | 中消云(北京)物联网科技研究院有限公司 | 基于Canal的数据处理方法及装置 |
CN112416710A (zh) * | 2020-11-19 | 2021-02-26 | 京东数字科技控股股份有限公司 | 用户操作的记录方法、装置、电子设备及存储介质 |
US11461315B2 (en) | 2020-12-03 | 2022-10-04 | International Business Machines Corporation | Batch job performance improvement in active-active architecture |
CN112416944A (zh) * | 2020-12-03 | 2021-02-26 | 云知声智能科技股份有限公司 | 一种同步业务数据的方法和设备 |
CN112632183B (zh) * | 2020-12-11 | 2023-07-11 | 广东电力通信科技有限公司 | 一种基于电网网络分区数据表准实时同步方法及系统 |
CN113810456A (zh) * | 2021-02-09 | 2021-12-17 | 京东科技信息技术有限公司 | 数据获取方法、装置、系统、计算机设备及存储介质 |
CN112948491B (zh) * | 2021-02-26 | 2023-09-22 | 湖北华中电力科技开发有限责任公司 | 数据同步的方法、装置、终端设备及计算机可读存储介质 |
CN112988897A (zh) * | 2021-03-30 | 2021-06-18 | 工银科技有限公司 | 系统升级场景下的数据双向同步方法及装置 |
CN113468170B (zh) * | 2021-06-02 | 2024-06-14 | 上海赛可出行科技服务有限公司 | 一种自动化实现数据实时同步的系统 |
CN113505173B (zh) * | 2021-07-08 | 2024-03-19 | 上海卓钢链科技有限公司 | 一种数据采集同步系统与同步方法 |
CN113407638A (zh) * | 2021-07-16 | 2021-09-17 | 上海通联金融服务有限公司 | 实现实时关系型数据库数据同步的方法 |
CN113590639A (zh) * | 2021-07-30 | 2021-11-02 | 浙江中控技术股份有限公司 | 一种网闸隔离的数据库之间数据同步方法 |
CN113709250B (zh) * | 2021-08-31 | 2023-09-15 | 中国电子科技集团公司第二十八研究所 | 一种基于订阅发送模式的跨域用户数据同步方法 |
CN113849351A (zh) * | 2021-09-30 | 2021-12-28 | 紫光云技术有限公司 | 一种MySQL高可用性的实现方法 |
CN113656427B (zh) * | 2021-10-20 | 2022-02-08 | 腾讯科技(深圳)有限公司 | 数据同步方法及相关设备 |
CN113656511B (zh) * | 2021-10-20 | 2022-02-18 | 天津南大通用数据技术股份有限公司 | 一种基于源库不停机的异构数据库增量同步方法及系统 |
CN113934744A (zh) * | 2021-12-17 | 2022-01-14 | 南京云联数科科技有限公司 | 一种数据共享的方法及设备 |
CN114385737A (zh) * | 2022-03-24 | 2022-04-22 | 国能大渡河流域水电开发有限公司 | 基于变化数据捕捉的电力监控数据监控方法及平台 |
CN114579671A (zh) * | 2022-05-09 | 2022-06-03 | 高伟达软件股份有限公司 | 集群间数据同步方法及装置 |
CN117312353A (zh) * | 2022-06-22 | 2023-12-29 | 华为云计算技术有限公司 | 数据管理的方法、装置、系统及存储介质 |
CN115391457B (zh) * | 2022-08-23 | 2023-09-12 | 昆仑数智科技有限责任公司 | 跨数据库的数据同步方法、装置及存储介质 |
CN115391361A (zh) * | 2022-08-24 | 2022-11-25 | 国任财产保险股份有限公司 | 一种基于分布式数据库的实时数据处理方法及其装置 |
CN115470302B (zh) * | 2022-10-25 | 2023-05-09 | 以萨技术股份有限公司 | 一种基于canal的数据库双向同步方法、介质及设备 |
CN116032849B (zh) * | 2022-12-22 | 2024-05-24 | 中国电信股份有限公司 | 数据交换的方法、装置、系统及电子设备 |
CN117171268A (zh) * | 2023-08-31 | 2023-12-05 | 深圳麦风科技有限公司 | 新老系统的数据同步方法、设备及存储介质 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103761318A (zh) * | 2014-01-27 | 2014-04-30 | 中国工商银行股份有限公司 | 一种关系型异构数据库数据同步的方法及系统 |
CN109063196A (zh) * | 2018-09-03 | 2018-12-21 | 拉扎斯网络科技(上海)有限公司 | 数据处理方法、装置、电子设备及计算机可读存储介质 |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP3485215B1 (en) * | 2016-07-12 | 2023-06-07 | Alexander Poltorak | System and method for maintaining efficiency of a heat sink |
CN108228621A (zh) * | 2016-12-15 | 2018-06-29 | 上海祈贝健康管理咨询有限公司 | 一种异地实时同步sql数据的方法 |
CN109960710B (zh) * | 2019-01-16 | 2023-04-11 | 平安科技(深圳)有限公司 | 数据库之间的数据同步方法和系统 |
-
2019
- 2019-01-16 CN CN201910040361.1A patent/CN109960710B/zh active Active
- 2019-11-11 WO PCT/CN2019/116998 patent/WO2020147392A1/zh active Application Filing
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103761318A (zh) * | 2014-01-27 | 2014-04-30 | 中国工商银行股份有限公司 | 一种关系型异构数据库数据同步的方法及系统 |
CN109063196A (zh) * | 2018-09-03 | 2018-12-21 | 拉扎斯网络科技(上海)有限公司 | 数据处理方法、装置、电子设备及计算机可读存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN109960710A (zh) | 2019-07-02 |
WO2020147392A1 (zh) | 2020-07-23 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109960710B (zh) | 数据库之间的数据同步方法和系统 | |
CN109739929B (zh) | 数据同步方法、装置及系统 | |
US8682903B2 (en) | System and method for synchronized content directories on cluster devices | |
US20150296399A1 (en) | Event Management in Telecommunications Networks | |
CN104537076A (zh) | 一种文件读写方法及装置 | |
CN110928851B (zh) | 处理日志信息的方法、装置、设备及存储介质 | |
CN108965383B (zh) | 文件同步方法、装置、计算机设备和存储介质 | |
CN111831748A (zh) | 数据同步方法、装置及存储介质 | |
CN112486915B (zh) | 数据存储方法及装置 | |
CN107040576A (zh) | 信息推送方法及装置、通讯系统 | |
CN113704790A (zh) | 一种异常日志信息汇总方法及计算机设备 | |
CN113590639A (zh) | 一种网闸隔离的数据库之间数据同步方法 | |
CN115033646A (zh) | 一种基于Flink&Doris构建实时数仓系统的方法 | |
US20130086133A1 (en) | Method and apparatus for file revision tracking | |
CN113301558B (zh) | 一种消息传输方法、设备、系统及存储介质 | |
CN113407560A (zh) | 更新消息处理方法、数据同步方法、配置信息配置方法 | |
CN112905700B (zh) | 一种数据同步的方法和装置及设备 | |
CN115629909A (zh) | 业务数据处理的方法、装置、电子设备和存储介质 | |
CN113111074A (zh) | 基于区块链的交互数据监测方法及装置 | |
WO2019214685A1 (zh) | 一种消息的处理方法、装置和系统 | |
CN111177264A (zh) | 一种数据库双向同步方法、同步网元及系统 | |
CN117171132A (zh) | 数据同步方法、装置及介质 | |
CN115134358B (zh) | 跨集群流量转发方法、装置、计算机设备和存储介质 | |
CN117370470B (zh) | 一种动态请求接口实现数据同步的系统和方法 | |
CN113609162B (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 |