CN110209726A - 分布式数据库集群***、数据同步方法及存储介质 - Google Patents

分布式数据库集群***、数据同步方法及存储介质 Download PDF

Info

Publication number
CN110209726A
CN110209726A CN201810147335.4A CN201810147335A CN110209726A CN 110209726 A CN110209726 A CN 110209726A CN 201810147335 A CN201810147335 A CN 201810147335A CN 110209726 A CN110209726 A CN 110209726A
Authority
CN
China
Prior art keywords
operational order
database
data
measurement system
distributed experiment
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.)
Granted
Application number
CN201810147335.4A
Other languages
English (en)
Other versions
CN110209726B (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.)
Jinzhuan Xinke Co Ltd
Original Assignee
ZTE Corp
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 ZTE Corp filed Critical ZTE Corp
Priority to CN201810147335.4A priority Critical patent/CN110209726B/zh
Priority to JP2020565003A priority patent/JP7090744B2/ja
Priority to PCT/CN2019/074699 priority patent/WO2019154394A1/zh
Priority to EP19751274.2A priority patent/EP3754514B1/en
Publication of CN110209726A publication Critical patent/CN110209726A/zh
Application granted granted Critical
Publication of CN110209726B publication Critical patent/CN110209726B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • 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/466Transaction processing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/18File system types
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/18File system types
    • G06F16/1805Append-only file systems, e.g. using logs or journals to store data
    • G06F16/1815Journaling file systems
    • 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
    • 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
    • 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/24Querying
    • G06F16/242Query formulation
    • 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/24Querying
    • G06F16/242Query formulation
    • G06F16/2433Query languages
    • G06F16/2438Embedded query languages
    • 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
    • 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
    • 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/48Program initiating; Program switching, e.g. by interrupt
    • 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/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • G06F9/4881Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
    • 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/50Allocation of resources, e.g. of the central processing unit [CPU]
    • 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/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5011Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
    • G06F9/5016Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals the resource being the memory
    • 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
    • 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/50Indexing scheme relating to G06F9/50
    • G06F2209/5018Thread allocation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/54Indexing scheme relating to G06F9/54
    • G06F2209/548Queue
    • 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)
  • Software Systems (AREA)
  • Databases & Information Systems (AREA)
  • Data Mining & Analysis (AREA)
  • Computational Linguistics (AREA)
  • Computing Systems (AREA)
  • Mathematical Physics (AREA)
  • Computer Security & Cryptography (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Hardware Redundancy (AREA)
  • Testing Resistance To Weather, Investigating Materials By Mechanical Methods (AREA)

Abstract

本发明提供了分布式数据库集群***、数据同步方法及存储介质。分布式数据库集群***包括:第一同步时钟模块、第一数据同步模块和多个第一数据库组,所述多个第一数据库组中的每个第一数据库组包括一个第一主数据库,所述第一同步时钟模块用于定期发送时钟同步指令;所述第一数据同步模块用于分别将每个第一主数据库在所述第一同步时钟模块发送的相邻两个时钟同步指令之间所记录的数据库操作指令封装成第一操作指令块,并发送所述第一操作指令块。通过本发明,解决相关技术中不同的数据节点同步的数据可能无法达成时间点上的全局一致性的问题,使得不同的数据节点同步的数据记录基于相同的时间参照点,保证记录数据上的全局一致性。

Description

分布式数据库集群***、数据同步方法及存储介质
技术领域
本发明涉及分布式数据库领域,具体而言,涉及分布式数据库集群***、数据同步方法及存储介质。
背景技术
近年来有越来越多的组织开始关注和使用开源数据库产品,例如MySQL(SQL代表Structured Query Language,即结构化查询语言)。随着业务和技术的发展,数据库技术正朝着集群化的方向发展。集群间的数据同步技术是备灾方案的基础技术,开展两个数据中心间高效、一致的数据同步方法的研究具有重大而深远的意义。
目前,在分布式数据库领域内,数据集群间的数据同步,主要还是依托点到点之间的数据迁移。但是,由于服务器和网络的差异等多种因素,集群间不同的数据节点同步的数据可能无法达成时间点上的全局一致性。例如,主集群内A、B两个数据节点将数据同步到备集群内的A’和B’两个数据节点上,在某时刻,A’同步了A在T0时刻的数据,但B’却同步了B在T1时刻的数据。如果此时发生切换,业务需要迁移到备集群上,由于备集群的数据在全局上不是一致的,业务无法立即切换到备集群上。而且,因为没有参考的时间点或时钟,业务数据也无法恢复到一致的时间点上。
除了主备数据库集群之间的切换场景,其他涉及到数据同步的场景下,包括但不限于增量数据订阅、增量数据抽取的场景下,也同样存在集群间不同的数据节点同步的数据可能无法达成时间点上的全局一致性的问题。
发明内容
本发明实施例提供了分布式数据库集群***、数据同步方法及存储介质,以至少解决相关技术中不同的数据节点同步的数据可能无法达成时间点上的全局一致性的问题。
根据本发明的一个实施例,提供了一种分布式数据库集群***,包括:第一同步时钟模块、第一数据同步模块和多个第一数据库组,其中,所述多个第一数据库组中的每个第一数据库组包括一个第一主数据库,所述第一同步时钟模块用于定期发送时钟同步指令;所述第一数据同步模块用于分别将每个第一主数据库在所述第一同步时钟模块发送的相邻两个时钟同步指令之间所记录的数据库操作指令封装成第一操作指令块,并发送所述第一操作指令块。
根据本发明的另一个实施例,提供了一种分布式数据库集群***,包括:第二数据同步模块和多个第二数据库组,其中,所述多个第二数据库组中的每个第二数据库组包括一个第二主数据库,所述第二数据同步模块用于接收对端的分布式数据库集群***发送的操作指令块,其中,所述操作指令块包括第一操作指令块或第二操作指令块,所述第一操作指令块封装有所述对端的分布式数据库集群***的每个第一主数据库在相邻两个时钟同步指令之间所记录的数据库操作指令,所述第二操作指令块封装有所述对端的分布式数据库集群***的每个第一主数据库在相邻两个时钟同步指令之间所记录的数据库操作指令中满足过滤条件的数据库操作指令,其中,所述过滤条件包括:所述数据库操作指令处于全局事务已提交状态;执行接收的所述操作指令块中的数据库操作指令。
根据本发明的又一个实施例,提供了一种数据同步方法,应用于包含多个第一数据库组的第一分布式数据库集群***,其中,所述多个第一数据库组中的每个第一数据库组包括一个第一主数据库,所述方法包括:所述第一分布式数据库集群***定期发送时钟同步指令;所述第一分布式数据库集群***分别将每个第一主数据库在相邻两个时钟同步指令之间所记录的数据库操作指令封装成第一操作指令块,并发送所述第一操作指令块。
根据本发明的再一个实施例,提供了一种数据同步方法,应用于包含多个第二数据库组的第二分布式数据库集群***,其中,所述多个第二数据库组中的每个第二数据库组包括一个第二主数据库,所述方法包括:所述第二分布式数据库集群***接收第一分布式数据库集群***发送的操作指令块,其中,所述操作指令块包括第一操作指令块或第二操作指令块,所述第一操作指令块封装有所述第一分布式数据库集群***的每个第一主数据库在相邻两个时钟同步指令之间所记录的数据库操作指令,所述第二操作指令块封装有所述第一分布式数据库集群***的每个第一主数据库在相邻两个时钟同步指令之间所记录的数据库操作指令中满足过滤条件的数据库操作指令,其中,所述过滤条件包括:所述数据库操作指令处于全局事务已提交状态;所述第二分布式数据库集群***执行接收的所述操作指令块中的数据库操作指令。
根据本发明的再一个实施例,还提供了一种存储介质,所述存储介质中存储有计算机程序,其中,所述计算机程序被设置为运行时执行上述任一项方法实施例中的步骤。
根据本发明的又一个实施例,还提供了一种电子装置,包括存储器和处理器,所述存储器中存储有计算机程序,所述处理器被设置为运行所述计算机程序以执行上述任一项方法实施例中的步骤。
通过本发明,由于分布式数据库集群***内部定期发送时钟同步指令,而数据同步过程中,针对于每个主数据库所记录的操作指令,都是将相邻两个时钟同步指令之间所记录的数据库操作指令封装成第一操作指令块并发送,从而保证针对于每个主数据库,数据同步所基于的数据包都具有相同的时间参照点,因此,可以解决相关技术中不同的数据节点同步的数据可能无法达成时间点上的全局一致性的问题,使得不同的数据节点同步的数据记录基于相同的时间参照点,保证记录数据上的全局一致性。
附图说明
此处所说明的附图用来提供对本发明的进一步理解,构成本申请的一部分,本发明的示意性实施例及其说明用于解释本发明,并不构成对本发明的不当限定。在附图中:
图1是根据本发明实施例1的分布式数据库集群***的架构示意图;
图2是根据本发明实施例1的分布式数据库集群***的第一优选架构示意图;
图3是根据本发明实施例1的分布式数据库集群***的第二优选架构示意图;
图4是根据本发明实施例2的分布式数据库集群***的架构示意图;
图5是根据本发明实施例2的分布式数据库集群***的优选架构示意图;
图6是根据本发明实施例3的数据同步方法的流程图;
图7是根据本发明实施例4的数据同步方法的流程图;
图8是根据本发明实施例5的确保全局一致性的分布式数据库数据同步的装置的架构示意图;
图9是根据本发明实施例5的数据同步方法的详细工作流程图;
图10是根据本发明实施例6的SQL语句切分组包的示意图;
图11是根据本发明实施例7的SQL语句行并行处理的流程图;
图12是根据本发明实施例8的实时全局一致性过滤的流程图;
图13是根据本发明实施例8的最终全局一致性过滤的流程图;
图14是根据本发明实施例9的分布式数据库集群数据同步高性能模式下的***架构示意图;
图15是根据本发明实施例10的分布式数据库集群数据同步高性能模式下的***架构示意图;
图16是根据本发明实施例11的分布式数据库准实时备份的***架构图;以及
图17是根据本发明实施例12的基于分布式数据库增量数据的数据抽取的***架构图。
具体实施方式
分布式数据库集群***由多个数据库组构成,每个数据库组由多个独立的数据库节点构成,组内的数据库节点数据是完全一致的,组内数据库节点只有一个节点对外提供写服务,称为主数据库,其他数据节点通过数据库间的复制技术,将数据同步到本地,称为备数据库。对外以数据服务的方式向应用提供数据库功能,对应用提供统一的标准接口,例如SQL接口。
针对于分布式数据库集群***之间的同步,例如,数据集群间的数据同步、增量数据订阅、增量数据抽取等等,相关技术中的数据同步方案往往存在无法提供全局一致性的问题和缺陷。
针对以上问题,本发明提出了分布式数据库集群***、数据同步方法及存储介质。下文中将参考附图并结合实施例来详细说明本发明。需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互组合。
需要说明的是,本发明的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。
实施例1
该实施例提供了一种分布式数据库集群***。图1是根据本发明实施例1的分布式数据库集群***的架构示意图,如图1所示,该分布式数据库集群***可以包括:第一同步时钟模块12、第一数据同步模块14和多个第一数据库组16,其中,所述多个第一数据库组16中的每个第一数据库组16包括一个第一主数据库(图中未示出),
所述第一同步时钟模块12用于定期发送时钟同步指令;
所述第一数据同步模块14用于分别将每个第一主数据库在所述第一同步时钟模块12发送的相邻两个时钟同步指令之间所记录的数据库操作指令封装成第一操作指令块,并发送所述第一操作指令块。
通过以上方案,分布式数据库集群***中第一同步时钟模块12定期发送时钟同步指令,而第一数据同步模块14在数据同步过程中,针对于每个主数据库所记录的操作指令,都是将相邻两个时钟同步指令之间所记录的数据库操作指令封装成第一操作指令块并发送,从而保证针对于每个主数据库,数据同步所基于的数据包都具有相同的时间参照点,因此,可以解决相关技术中不同的数据节点同步的数据可能无法达成时间点上的全局一致性的问题,使得不同的数据节点同步的数据记录基于相同的时间参照点,保证记录数据上的全局一致性。
对于第一数据同步模块14如何确定每个第一主数据库在所述第一同步时钟模块12发送的相邻两个时钟同步指令之间所记录的数据库操作指令是哪些指令,进而将其封装成第一操作指令块,在分布式数据库集群***内部,存在很多方式可以实现这样的目标。以下给出一个容易实现且无需对现有的分布式数据库集群***的处理模式进行较大变动的实施方式。
作为一个较优的实施方式,所述第一同步时钟模块12用于定期向每个第一主数据库发送所述时钟同步指令;所述第一主数据库用于将接收到的数据库操作指令写入所述第一主数据库的日志文件,以及将接收到的所述时钟同步指令写入所述日志文件;所述第一数据同步模块14用于分别获取每个第一主数据库的所述日志文件,将所述日志文件中夹在两条时钟同步指令之间的数据库操作指令封装成所述第一操作指令块,并发送所述第一操作指令块。可见,通过这种方式,主数据库将接收到的时钟同步指令和普通的数据库操作指令都正常写入日志文件,所述第一数据同步模块14可以读取日志文件并根据日志中的时钟同步指令对数据库操作指令进行切分,将夹在两条时钟同步指令之间的数据库操作指令封装成所述第一操作指令块。为了便于主数据库的日志记录,可以采取较常见的数据库操作语句来生成时钟同步指令,这样,主数据库可以很方便地将其连同普通数据库操作语句写入日志文件。对于目前的分布式数据库集群***而言,一种比较优选的数据库操作语句是SQL,即,可以采用同步时钟SQL语句作为时钟同步指令,数据库操作指令也采用SQL语句。
如上所述,本实施例中的方案针对于每个主数据库所记录的操作指令,都是将相邻两个时钟同步指令之间所记录的数据库操作指令封装成第一操作指令块并发送,从而保证针对于每个主数据库,数据同步所基于的数据包都具有相同的时间参照点,在数据库的操作命令记录层面达到全局一致。在数据库集群中处理任务分布较均衡或处理资源带宽充分的情况下,各个操作命令执行时长非常小且呈现比较均匀的分布,此时在数据库执行层面基本也能够达到全局一致。考虑到在实际的分布式数据库集群***中,偶尔会存在数据库集群中处理任务分布较不均衡或处理资源带宽较小的情况,此时,可能会存在同一数据库集群中不同处理任务执行状态的差异,此时,可以采用以下两种处理方式(最终全局一致和实时全局一致)至少之一来保证在数据库执行层面的全局一致。
最终全局一致方案
在该方案中,所述第一数据同步模块14用于发送所述第一操作指令块给对端的分布式数据库集群***。此时发送给对端的分布式数据库集群***的第一操作指令块是主数据库记录的在两个同步时钟信号之间的数据库操作指令,对于这些数据库操作指令不会进行一致性过滤。对端的分布式数据库集群***的数据同步模块正常将其同步到对端的分布式数据库集群***的对应的主数据库中。但是,对端的分布式数据库集群***在业务进行集群切换时进行一次全局一致性过滤。该实施例适合灾备***中对RPO指标要求高的场景,数据可以高效的传输到对端集群并持久化,保证RPO尽可能的小。该处理方式下的在业务进行集群切换时在同步接受端进行一次全局一致性过滤的具体实施方式可以查阅实施例8。
实时全局一致方案
根据该实时全局一致方案,在分布式数据库集群***新增第一一致性过滤模块22。图2是根据本发明实施例1的分布式数据库集群***的第一优选架构示意图,如图2所示,该分布式数据库集群***还包括第一一致性过滤模块22。
所述第一数据同步模块14用于发送所述第一操作指令块给所述第一一致性过滤模块22。所述第一一致性过滤模块22用于接收所述第一数据同步模块14发送的所述第一操作指令块,对所述第一操作指令块进行全局一致性过滤,将所述第一操作指令块中满足过滤条件的数据库操作指令封装成第二操作指令块,并将所述第二操作指令块发送到对端的分布式数据库集群***,其中,所述过滤条件包括:所述数据库操作指令处于全局事务已提交状态。通过该方案,可以从第一操作指令块之中筛除尚未执行完毕(即处于全局事务未提交状态)的数据库操作指令,仅仅保留已执行完毕的数据库操作指令封装成第二操作指令块发送到对端的分布式数据库集群***,这样,对端的分布式数据库集群***同步的是当前分布式数据库集群***已经执行完毕的数据,这样同步到备集群上的数据一直处在一致状态中。该实施例适合灾备***中对RTO指标要求高的场景。业务可以在任何时候接管对端分布式数据库集群,RTO可以等于零。该处理方式下的在同步发起端实时进行全局一致性过滤的具体实施方式可以查阅实施例8。
考虑到增量数据订阅、增量数据抽取的场景中,对端的分布式数据库集群***对接收数据有筛选需求,仅仅满足特定条件的数据对象(数据库、表等)才需要发送到对端的分布式数据库集群***,此时可以将该过滤任务也交给所述第一一致性过滤模块22。可以增加过滤条件,例如,所述过滤条件还可以包括:所述数据库操作指令符合所述对端的分布式数据库集群***所对应的数据对象过滤规则。
对于尚未执行完毕(即处于全局事务未提交状态)的数据库操作指令,所述第一一致性过滤模块22还用于将所述第一操作指令块中处于全局事务未提交状态的数据库操作指令进行缓存,并在下一次接收到所述第一数据同步模块14发送的对应于当前第一主数据库的所述第一操作指令块时,将缓存的所述数据库操作指令加入所述第一操作指令块后再对所述第一操作指令块进行全局一致性过滤。
为了较方便的在分布式数据库集群***内部进行全局的事务管理,从而第一一致性过滤模块22能够很方便地进行数据库操作指令当前处于全局已提交还是未提交的状态的判断,可以对分布式数据库集群***进行改进。图3是根据本发明实施例1的分布式数据库集群***的第二优选架构示意图,如图3所示,该分布式数据库集群***还包括全局事务管理模块32,所述全局事务管理模块32用于管理能够唯一标识全局事务的全局事务标识ID,并记录每个全局事务的状态和生命周期。
所述第一同步时钟模块12用于定期请求每个第一主数据库的当前活跃事务列表,将所述当前活跃事务列表和获取所述当前活跃事务列表的时间戳记录在所述第一主数据库对应的同步表中,并将所述时间戳和所述当前活跃事务列表的信息携带在发往所述第一主数据库的所述时钟同步指令中。所述第一一致性过滤模块22用于查找当前第一主数据库对应的所述同步表中最近一次记录的所述当前活跃事务列表,并将最近一次记录的所述当前活跃事务列表中的全局事务ID所对应的数据库操作指令剔除,将剩余的数据库操作指令作为满足处于全局事务已提交状态的过滤条件的数据库操作指令封装成所述第二操作指令块。
作为一种优选的实施方式,在进行数据同步处理之前,可以获得对端的分布式数据库集群***的与当前分布式数据库集群***之间的同步位置。此时,所述第一数据同步模块14还用于接收对端的分布式数据库集群***发来的同步位置请求信息,其中,所述同步位置请求信息携带所述分布式数据库集群***与所述对端的分布式数据库集群***之间的同步位置;根据所述同步位置请求信息携带的所述同步位置执行对每个第一主数据库所记录的数据库操作指令的封装。
以上所描述的是分布式数据库集群***在作为数据同步的发起端时,各个模块所执行的功能。需要注意的是,分布式数据库集群***在实际应用中,其角色是经常需要变换的,例如,分布式数据库集群***当前可能是主分布式数据库集群***,此时需要作为数据同步的发起端。但是,在其故障后,分布式数据库集群***可能变为备分布式数据库集群***,此时,它又要作为数据同步的接受端,因此,作为一种优选的实施方式,分布式数据库集群***的各个模块还具有以下功能。
作为数据同步的接受端,接收到发起端发来的数据同步包,需要执行同步包内容完成数据同步,此时,所述第一数据同步模块14还用于:接收对端的分布式数据库集群***发送的操作指令块,其中,所述操作指令块包括第一操作指令块或第二操作指令块;执行接收的所述操作指令块中的数据库操作指令。
作为一种较优的实施方式,所述第一数据同步模块14用于通过以下方式执行接收的所述操作指令块中的所述数据库操作指令:
将所述操作指令块中的所述数据库操作指令持久化到回放文件中;
解析所述回放文件,将所述回放文件中的所述数据库操作指令按行拆分放入不同的工作线程进行处理。
作为一种较优的实施方式,所述第一数据同步模块14用于通过以下方式解析所述回放文件,将所述回放文件中的所述数据库操作指令按行拆分放入不同的工作线程进行处理:
按照表名和主键将所述操作指令块中的所述数据库操作指令拆分成不同的数据行,同一数据行的所述数据库操作指令按照先后顺序组成一个事务;
将不同事务的所述数据库操作指令放入不同的工作线程进行处理。
为了以备回放失败时的任务回复,作为一种较优的实施方式,所述第一数据同步模块14还可以用于:在执行接收的所述操作指令块中的所述数据库操作指令成功后,将执行数据库操作指令成功的位置持久化到文件中。
如上述最终全局一致方案所述,对端的分布式数据库集群***在业务进行集群切换时进行一次全局一致性过滤。考虑到所述分布式数据库集群***作为所述对端的分布式数据库集群***的备分布式数据库集群***的情况,可以让所述第一数据同步模块14在所述分布式数据库集群***需要接替所述对端的分布式数据库集群***成为主分布式数据库集群***的情况下,调用第一一致性过滤模块22。
在该较优的实施方式中,所述第一一致性过滤模块22用于:
获取每个第一主数据库对应的同步表,根据所述同步表确定每个第一主数据库的最近一次同步的时间戳,并从中确定出最早的时间戳作为切换参考时间点;
对于最近一次同步的时间戳晚于所述切换参考时间点的每个第一主数据库,将所述第一主数据库的数据回滚到所述切换参考时间点时记录的状态,并将所述第一主数据库的数据恢复到全局一致的状态。
作为一种较优的实施方式,所述第一一致性过滤模块22用于通过以下方式将所述第一主数据库的数据回滚到所述切换参考时间点时记录的状态,并将所述第一主数据库的数据恢复到全局一致的状态:
对于所述切换参考时间点之后的数据库操作指令生成反向数据库操作指令,并执行所述反向数据库操作指令;
对于所述切换参考时间点时处于全局事务未提交状态的数据库操作指令生成反向数据库操作指令,并执行所述反向数据库操作指令。
实施例2
该实施例提供了另一种分布式数据库集群***。该分布式数据库集群***可以作为数据同步的接受端,当然,在其同时被赋予了数据同步的发起端的功能的情况下,其同样也可以作为数据同步的发起端,此时可以参照实施例1。图4是根据本发明实施例2的分布式数据库集群***的架构示意图,如图4所示,该分布式数据库集群***可以包括:第二数据同步模块42和多个第二数据库组44,其中,所述多个第二数据库组44中的每个第二数据库组44包括一个第二主数据库(图中未示出),
所述第二数据同步模块42用于接收对端的分布式数据库集群***发送的操作指令块,其中,所述操作指令块包括第一操作指令块或第二操作指令块,所述第一操作指令块封装有所述对端的分布式数据库集群***的每个第一主数据库在相邻两个时钟同步指令之间所记录的数据库操作指令,所述第二操作指令块封装有所述对端的分布式数据库集群***的每个第一主数据库在相邻两个时钟同步指令之间所记录的数据库操作指令中满足过滤条件的数据库操作指令,其中,所述过滤条件包括:所述数据库操作指令处于全局事务已提交状态;
执行接收的所述操作指令块中的数据库操作指令。
通过以上方案,作为数据同步的接受端的分布式数据库集群***可以通过所述第二数据同步模块42按照数据同步的发起端的分布式数据库集群***发来的操作指令块进行执行,完成数据同步过程。由于发来的操作指令块中,针对于第一分布式数据库集群***每个主数据库所记录的操作指令,携带的都是相邻两个时钟同步指令之间所记录的数据库操作指令,从而保证针对于每个主数据库,数据同步所基于的数据包都具有相同的时间参照点,因此,可以解决相关技术中不同的数据节点同步的数据可能无法达成时间点上的全局一致性的问题,使得不同的数据节点同步的数据记录基于相同的时间参照点,保证记录数据上的全局一致性。
作为一种较优的实施方式,所述第二数据同步模块42用于通过以下方式执行接收的所述操作指令块中的所述数据库操作指令:
将所述操作指令块中的所述数据库操作指令持久化到回放文件中;
解析所述回放文件,将所述回放文件中的所述数据库操作指令按行拆分放入不同的工作线程进行处理。
作为一种较优的实施方式,所述第二数据同步模块42用于通过以下方式解析所述回放文件,将所述回放文件中的所述数据库操作指令按行拆分放入不同的工作线程进行处理:
按照表名和主键将所述操作指令块中的所述数据库操作指令拆分成不同的数据行,同一数据行的所述数据库操作指令按照先后顺序组成一个事务;
将不同事务的所述数据库操作指令放入不同的工作线程进行处理。
为了以备回放失败时的任务回复,作为一种较优的实施方式,所述第二数据同步模块42还用于:在执行接收的所述操作指令块中的所述数据库操作指令成功后,将执行数据库操作指令成功的位置持久化到文件中。
图5是根据本发明实施例2的分布式数据库集群***的优选架构示意图。针对于最终全局一致方案,该分布式数据库集群***在业务进行集群切换时可以进行一次全局一致性过滤。考虑到所述分布式数据库集群***作为备分布式数据库集群***的情况,如图5所示,该分布式数据库集群***还可以包括第二一致性过滤模块52,
所述第二数据同步模块42用于在所述分布式数据库集群***需要接替所述对端的分布式数据库集群***成为主分布式数据库集群***的情况下,调用所述第二一致性过滤模块52;
所述第二一致性过滤模块52用于:
获取每个第二主数据库对应的同步表,根据所述同步表确定每个第二主数据库的最近一次同步的时间戳,并从中确定出最早的时间戳作为切换参考时间点;
对于最近一次同步的时间戳晚于所述切换参考时间点的每个第二主数据库,将所述第二主数据库的数据回滚到所述切换参考时间点时记录的状态,并将所述第二主数据库的数据恢复到全局一致的状态。
作为一种较优的实施方式,所述第二一致性过滤模块52用于通过以下方式将所述第二主数据库的数据回滚到所述切换参考时间点时记录的状态,并将所述第二主数据库的数据恢复到全局一致的状态:
对于所述切换参考时间点之后的数据库操作指令生成反向数据库操作指令,并执行所述反向数据库操作指令;
对于所述切换参考时间点时处于全局事务未提交状态的数据库操作指令生成反向数据库操作指令,并执行所述反向数据库操作指令。
实施例3
本实施例描述了数据同步的发起端的处理流程。图6是根据本发明实施例3的数据同步方法的流程图。该数据同步方法应用于包含多个第一数据库组16的第一分布式数据库集群***,其中,所述多个第一数据库组16中的每个第一数据库组16包括一个第一主数据库。如图6所示,所述方法包括:
步骤S602,所述第一分布式数据库集群***定期发送时钟同步指令;
步骤S604,所述第一分布式数据库集群***分别将每个第一主数据库在相邻两个时钟同步指令之间所记录的数据库操作指令封装成第一操作指令块,并发送所述第一操作指令块。
通过以上方案,第一分布式数据库集群***定期发送时钟同步指令,在数据同步过程中,针对于第一分布式数据库集群***每个主数据库所记录的操作指令,都是将相邻两个时钟同步指令之间所记录的数据库操作指令封装成第一操作指令块并发送,从而保证针对于每个主数据库,数据同步所基于的数据包都具有相同的时间参照点,因此,可以解决相关技术中不同的数据节点同步的数据可能无法达成时间点上的全局一致性的问题,使得不同的数据节点同步的数据记录基于相同的时间参照点,保证记录数据上的全局一致性。
对于如何确定每个第一主数据库在相邻两个时钟同步指令之间所记录的数据库操作指令是哪些指令,进而将其封装成第一操作指令块,在第一分布式数据库集群***内部,存在很多方式可以实现这样的目标。以下给出一个容易实现且无需对现有的分布式数据库集群***的处理模式进行较大变动的实施方式。
作为一个较优的实施方式,所述第一分布式数据库集群***定期向每个第一主数据库发送所述时钟同步指令。所述第一分布式数据库集群***分别将每个第一主数据库在相邻两个时钟同步指令之间所记录的数据库操作指令封装成第一操作指令块之前,所述方法还包括:所述第一主数据库将接收到的数据库操作指令写入所述第一主数据库的日志文件,以及将接收到的所述时钟同步指令写入所述日志文件。所述第一分布式数据库集群***分别将每个第一主数据库在相邻两个时钟同步指令之间所记录的数据库操作指令封装成第一操作指令块包括:所述第一分布式数据库集群***分别获取每个第一主数据库的所述日志文件,将所述日志文件中夹在两条时钟同步指令之间的数据库操作指令封装成所述第一操作指令块。可见,通过这种方式,主数据库将接收到的时钟同步指令和普通的数据库操作指令都正常写入日志文件,所述第一分布式数据库集群***可以读取日志文件并根据日志中的时钟同步指令对数据库操作指令进行切分,将夹在两条时钟同步指令之间的数据库操作指令封装成所述第一操作指令块。为了便于主数据库的日志记录,可以采取较常见的数据库操作语句来生成时钟同步指令,这样,主数据库可以很方便地将其连同普通数据库操作语句写入日志文件。对于目前的分布式数据库集群***而言,一种比较优选的数据库操作语句是SQL,即,可以采用同步时钟SQL语句作为时钟同步指令,数据库操作指令也采用SQL语句。
如上所述,本实施例中的方案针对于每个主数据库所记录的操作指令,都是将相邻两个时钟同步指令之间所记录的数据库操作指令封装成第一操作指令块并发送,从而保证针对于每个主数据库,数据同步所基于的数据包都具有相同的时间参照点,在数据库的操作命令记录层面达到全局一致。在数据库集群中处理任务分布较均衡或处理资源带宽充分的情况下,各个操作命令执行时长非常小且呈现比较均匀的分布,此时在数据库执行层面基本也能够达到全局一致。考虑到在实际的分布式数据库集群***中,偶尔会存在数据库集群中处理任务分布较不均衡或处理资源带宽较小的情况,此时,可能会存在同一数据库集群中不同处理任务执行状态的差异,此时,可以采用以下两种处理方式(最终全局一致和实时全局一致)至少之一来保证在数据库执行层面的全局一致。
最终全局一致方案
在该方案中,所述第一分布式数据库集群***发送所述第一操作指令块给第二分布式数据库集群***。此时发送给第二分布式数据库集群***的第一操作指令块是主数据库记录的在两个同步时钟信号之间的数据库操作指令,对于这些数据库操作指令不会进行一致性过滤。第二分布式数据库集群***的数据同步模块正常将其同步到第二分布式数据库集群***的对应的主数据库中。但是,第二分布式数据库集群***在业务进行集群切换时进行一次全局一致性过滤。该实施例适合灾备***中对RPO指标要求高的场景,数据可以高效的传输到对端集群并持久化,保证RPO尽可能的小。该处理方式下的在业务进行集群切换时在同步接受端进行一次全局一致性过滤的具体实施方式可以查阅实施例8。
实时全局一致方案
根据该实时全局一致方案,所述第一分布式数据库集群***对所述第一操作指令块进行全局一致性过滤,将所述第一操作指令块中满足过滤条件的数据库操作指令封装成第二操作指令块,并将所述第二操作指令块发送到第二分布式数据库集群***,其中,所述过滤条件包括:所述数据库操作指令处于全局事务已提交状态。通过该方案,可以从第一操作指令块之中筛除尚未执行完毕(即处于全局事务未提交状态)的数据库操作指令,仅仅保留已执行完毕的数据库操作指令封装成第二操作指令块发送到第二分布式数据库集群***,这样,第二分布式数据库集群***同步的是当前第一分布式数据库集群***已经执行完毕的数据,这样同步到备集群上的数据一直处在一致状态中。该实施例适合灾备***中对RTO指标要求高的场景。业务可以在任何时候接管对端分布式数据库集群,RTO可以等于零。该处理方式下的在同步发起端实时进行全局一致性过滤的具体实施方式可以查阅实施例8。
考虑到增量数据订阅、增量数据抽取的场景中,第二分布式数据库集群***对接收数据有筛选需求,仅仅满足特定条件的数据对象(数据库、表等)才需要发送到第二分布式数据库集群***。因此,可以增加过滤条件,例如,所述过滤条件还可以包括:所述数据库操作指令符合所述第二分布式数据库集群***所对应的数据对象过滤规则。
对于尚未执行完毕(即处于全局事务未提交状态)的数据库操作指令,所述第一分布式数据库集群***将所述第一操作指令块中处于全局事务未提交状态的数据库操作指令进行缓存,并将缓存的所述数据库操作指令加入对应于当前第一主数据库的下一个第一操作指令块后再对所述下一个第一操作指令块进行全局一致性过滤。
为了较方便的在第一分布式数据库集群***内部进行全局的事务管理,从而第一分布式数据库集群***能够很方便地进行数据库操作指令当前处于全局已提交还是未提交的状态的判断,可以对第一分布式数据库集群***进行改进。所述第一分布式数据库集群***管理能够唯一标识全局事务的全局事务标识ID,并记录每个全局事务的状态和生命周期;
所述第一分布式数据库集群***管理定期向请求每个第一主数据库的当前活跃事务列表,将所述当前活跃事务列表和获取所述当前活跃事务列表的时间戳记录在所述第一主数据库对应的同步表中,并将所述时间戳和所述当前活跃事务列表的信息携带在发往所述第一主数据库的所述时钟同步指令中;
所述第一分布式数据库集群***对所述第一操作指令块进行全局一致性过滤,将所述第一操作指令块中满足过滤条件的数据库操作指令封装成第二操作指令块包括:所述第一分布式数据库集群***查找当前第一主数据库对应的所述同步表中最近一次记录的所述当前活跃事务列表,并将最近一次记录的所述当前活跃事务列表中的全局事务ID所对应的数据库操作指令剔除,将剩余的数据库操作指令作为满足处于全局事务已提交状态的过滤条件的数据库操作指令封装成所述第二操作指令块。
作为一种优选的实施方式,在进行数据同步处理之前,可以获得对端的第二分布式数据库集群***的与当前第一分布式数据库集群***之间的同步位置。所述第一分布式数据库集群***分别将每个第一主数据库在相邻两个时钟同步指令之间所记录的数据库操作指令封装成第一操作指令块之前,该方法还可以包括:所述第一分布式数据库集群***接收第二分布式数据库集群***发来的同步位置请求信息,其中,所述同步位置请求信息携带所述第一分布式数据库集群***与所述第二分布式数据库集群***之间的同步位置;所述第一分布式数据库集群***分别将每个第一主数据库在相邻两个时钟同步指令之间所记录的数据库操作指令封装成第一操作指令块可以包括:所述第一分布式数据库集群***根据所述同步位置请求信息携带的所述同步位置执行对每个第一主数据库所记录的数据库操作指令的封装。
本实施例还提供了一种存储介质,所述存储介质中存储有计算机程序,其中,所述计算机程序被设置为运行时执行本实施例所述的方法。
实施例4
本实施例描述了数据同步的接受端的处理流程。图7是根据本发明实施例4的数据同步方法的流程图。该数据同步方法可以应用于包含多个第二数据库组44的第二分布式数据库集群***,其中,所述多个第二数据库组44中的每个第二数据库组44包括一个第二主数据库。所述方法可以包括:
步骤S702,所述第二分布式数据库集群***接收第一分布式数据库集群***发送的操作指令块,其中,所述操作指令块包括第一操作指令块或第二操作指令块,所述第一操作指令块封装有所述第一分布式数据库集群***的每个第一主数据库在相邻两个时钟同步指令之间所记录的数据库操作指令,所述第二操作指令块封装有所述第一分布式数据库集群***的每个第一主数据库在相邻两个时钟同步指令之间所记录的数据库操作指令中满足过滤条件的数据库操作指令,其中,所述过滤条件包括:所述数据库操作指令处于全局事务已提交状态;
步骤S704,所述第二分布式数据库集群***执行接收的所述操作指令块中的数据库操作指令。
通过以上方案,作为数据同步的接受端的第二分布式数据库集群***可以按照数据同步的发起端的第一分布式数据库集群***发来的操作指令块进行执行,完成数据同步过程。由于发来的操作指令块中,针对于第一分布式数据库集群***每个主数据库所记录的操作指令,携带的都是相邻两个时钟同步指令之间所记录的数据库操作指令,从而保证针对于每个主数据库,数据同步所基于的数据包都具有相同的时间参照点,因此,可以解决相关技术中不同的数据节点同步的数据可能无法达成时间点上的全局一致性的问题,使得不同的数据节点同步的数据记录基于相同的时间参照点,保证记录数据上的全局一致性。
作为一种较优的实施方式,所述第二分布式数据库集群***执行接收的所述操作指令块中的数据库操作指令可以包括:
所述第二分布式数据库集群***将所述操作指令块中的所述数据库操作指令持久化到回放文件中;
所述第二分布式数据库集群***解析所述回放文件,将所述回放文件中的所述数据库操作指令按行拆分放入不同的工作线程进行处理。
作为一种较优的实施方式,所述第二分布式数据库集群***解析所述回放文件,将所述回放文件中的所述数据库操作指令按行拆分放入不同的工作线程进行处理可以包括:
所述第二分布式数据库集群***按照表名和主键将所述操作指令块中的所述数据库操作指令拆分成不同的数据行,同一数据行的所述数据库操作指令按照先后顺序组成一个事务;
所述第二分布式数据库集群***将不同事务的所述数据库操作指令放入不同的工作线程进行处理。
为了以备回放失败时的任务回复,作为一种较优的实施方式,在所述第二分布式数据库集群***执行接收的所述操作指令块中的所述数据库操作指令成功之后,还可以包括:所述第二分布式数据库集群***将执行数据库操作指令成功的位置持久化到文件中。
针对于最终全局一致方案,该第二分布式数据库集群***在业务进行集群切换时可以进行一次全局一致性过滤。考虑到所述第二分布式数据库集群***作为备分布式数据库集群***,在所述第二分布式数据库集群***需要接替所述第一分布式数据库集群***成为主分布式数据库集群***的情况下,所述方法还可以包括:
所述第二分布式数据库集群***获取每个第二主数据库对应的同步表,根据所述同步表确定每个第二主数据库的最近一次同步的时间戳,并从中确定出最早的时间戳作为切换参考时间点;
对于最近一次同步的时间戳晚于所述切换参考时间点的每个第二主数据库,所述第二分布式数据库集群***将所述第二主数据库的数据回滚到所述切换参考时间点时记录的状态,并将所述第二主数据库的数据恢复到全局一致的状态。
作为一种较优的实施方式,所述第二分布式数据库集群***将所述第二主数据库的数据回滚到所述切换参考时间点时记录的状态,并将所述第二主数据库的数据恢复到全局一致的状态包括:
所述第二分布式数据库集群***对于所述切换参考时间点之后的数据库操作指令生成反向数据库操作指令,并执行所述反向数据库操作指令;
所述第二分布式数据库集群***对于所述切换参考时间点时处于全局事务未提交状态的数据库操作指令生成反向数据库操作指令,并执行所述反向数据库操作指令。
本实施例还提供了一种存储介质,所述存储介质中存储有计算机程序,其中,所述计算机程序被设置为运行时执行本实施例所述的方法。
实施例5
本实施例描述了确保全局一致性的分布式数据库数据同步装置及方法。图8是根据本发明实施例5的确保全局一致性的分布式数据库数据同步的装置的架构示意图。如图8所示,本发明所述确保全局一致性的分布式数据库数据同步的装置包括以下模块:
分布式数据库集群由多个数据库组80构成,每个数据库组80由多个独立的数据库节点构成,组内的数据库节点数据是完全一致的,组内数据库节点只有一个节点对外提供写服务,称为主数据库,其他数据节点通过数据库间的复制技术,将数据同步到本地,称为备数据库。对外以数据服务的方式向应用提供数据库功能,对应用提供统一的标准SQL接口。
同步时钟模块82,用于定时为分布式数据库内的每个主数据节点发送一条SQL语句,携带的信息有同步时钟模块82的时间戳以及当前全局活跃事务列表。
全局事务管理模块84,用于统一管理分布式环境下的全局唯一的事务ID,全局事务ID唯一标识一个全局事务,同时记录每个全局事务的状态和生命周期。集群内每个事务都会向全局事务管理模块84申请创建唯一的事务ID,***到数据行中。
管理模块86,用于统一管理分布式数据库集群的组网信息。
一致性过滤模块88,利用全局活跃事务ID对数据进行全局一致性过滤和根据过滤规则,过滤出含有指定数据对象(库、表)的SQL语句。
数据同步模块810,用于收集分布式数据库内主数据库节点的日志,通过解析日志生成SQL语句,SQL语句块消息打包压缩传输,SQL消息持久化以及SQL行并行回放。
基于以上的架构,在数据同步过程中,首先在主备集群中先建立同步表,同步表主要含两个信息:时间戳信息和全局活跃事务列表。同步时钟模块82定时向全局事务管理模块84请求当前活跃事务列表,获得全局事务管理模块84的响应后,向主集群中的所有主数据库发送一条***语句,***获取当前活跃全局事务列表的时间戳和当前全局活跃事务列表信息。主集群的数据同步模块810定时会收集主集群内主数据节点的日志文件,在收到备集群的同步请求后,会对日志文件进行反向解析,生成SQL语句,利用同步时钟将SQL语句流进行分块,并利用一致性模块对SQL语句记性一致性和指定规则的过滤,最后将过滤后的SQL语句块压缩放进发送队列中。然后发送线程将发送队列中的消息发送到备集群中的数据同步模块810中。备集群中的数据同步模块810在接收到SQL块消息后,将SQL消息放入内存中的接收队列,并调用写入线程将接收队列中的SQL语句块持久化到文件中,再启动回放线程将文件中的语句块拆分成若干个任务,交给工作线程,将数据同步到备集群的数据库节点上。
通过以上过程,将主集群内各数据节点的日志文件按照集群统一的时间进行切片,切片中的事务在根据业务场景的不同在主/备集群上进行统一处理,同时成功或者同时失败;保证备集群上的数据是实时一致或是最终一致。在此基础上,备集群可以将切片内事务按照表名和主键值进行分发,多线程并行执行,解决并发不足造成回放性能低的问题。
图9是根据本发明实施例5的数据同步方法的详细工作流程图。如图9所示,该确保全局一致性的分布式数据库数据同步方法包括以下步骤:
步骤S902,主集群的数据同步模块810启动时,会初始化定时获取元数据任务线程,保证数据同步模块810连接的数据库节点为数据库组80中的主节点。启动线程定时向管理节点上报状态。备集群的数据同步模块810启动时,根据配置文件初始化并发工作线程池,初始化消息写入线程,SQL回放线程以及垃圾清理线程,启动后首先向主集群的数据同步模块810发送日志同步位置。
步骤S904,主集群的数据同步模块810会定时发送获取/同步集群组网数据请求到管理模块86,收到管理模块86的响应后对比内存中的数据。如果数据为空,则用当前数据初始化内存结构;如果有数据则根据数据库组80顺序比较数据是否一致,一致则不处理,若不一致,则根据是否已连接数据库节点来决定是否立即更新数据信息。
步骤S906,主集群的数据同步模块810启动并同步好集群组网信息后,等待备集群的数据同步模块810推送同步位置请求信息,接收到同步位置信息后,按照当前位置开始新任务。
步骤S908,主集群的数据同步模块810,按照同步位置发起数据库连接,初始化内存用于解析日志文件,循环接受数据库推送的日志信息,然后进入实施例6中所给出的SQL语句分块流程。根据实际部署将SQL语句块发送到一致性过滤模块88。
步骤S910,对SQL语句块进行全局一致性过滤和规则过滤。具体流程参考实施例8中的图12或图13。
步骤S912,主集群的数据同步模块810收到备集群的数据同步模块810发送的SQL语句块请求时,先判断消息是否要重发,如果需要重发则直接将发送队列的消息发送出去,如果不需要重发,则从发送缓存队列中取消息发送给备集群的数据同步模块810。
步骤S914,备集群的数据同步模块810接到消息包后,把消息放入接收列表中。做消息包校验。然后SQL语句块消息被放入写入队列,写入线程就会从写入队列中将消息持久化到SQL回放文件中,然后检查是否有消息阻塞在接收队列中,如果有,则唤醒挂起的线程;没有,判断当前消息组是否结束,更新数据同步位置后,循环读取写入队列。
步骤S916,备集群数据同步模块810的SQL回放线程解析SQL回放文件,将两个同步时钟间的事务语句块解析出来按行拆分,具体方法参考实施例7中所述的SQL行并行处理流程。当语句块并行回放成功后,将数据回放的位置持久化到文件中,以备回放异常,恢复时使用。
步骤S918,备集群的数据同步模块810的数据清理线程,会定时清理超过保存时间且成功回放过的数据。
综上所述,该方法通过同步时钟模块82为整个集群提供统一的时钟,将数据进行统一切片处理;利用一致性过滤模块88对切片的数据进行全局一致性过滤,同时考虑灾难恢复指标RPO(复原点目标,即***最大容忍丢失多少数据)和RTO(复原时间目标,即***从发生灾难到恢复运行的时间)的要求,以及业务对数据过滤和抽取需求,对同步时钟模块82、全局事务管理模块84、一致性过滤模块88、数据同步模块810的不同编排,可以高效地满足同城多活、异地灾备、数据订阅以及数据抽取等多种业务场景,同时保证分布式环境下数据集群间的全局一致性,使得处在异地的集群可以迅速接管业务,是一项极具特色的亮点功能,对分布式数据库在金融领域、互联网领域、教育领域等的推广,起到很好的推进作用。
实施例6
图10是根据本发明实施例6的SQL语句切分组包的示意图。如图10所示:
同步时钟模块82定时会向数据库中发送同步时钟SQL语句。对应的语句最终会落在数据库日志中。
数据同步模块810在收到数据库推送的日志后,会对日志进行解析,用同步时钟SQL语句对应用SQL进行切分,具体的做法就是已两个同步时钟SQL之间的所有SQL视为一个消息块,封装成一个语句块。
语句块经过过滤后,进行打包压缩,放入发送缓冲队列中,然后发送线程从缓冲队列中取SQL语句消息发送到对端数据同步模块810中去。
实施例7
图11是根据本发明实施例7的SQL语句行并行处理的流程图。如图11,SQL语句块被按照数据行划分成多个事务,具体的做法如下:
按照表名和主键将数据行选出来,同一数据行的SQL按照先后顺序组成一个事务,不同数据行的SQL交给不同的工作线程处理。
工作线程并行处理一批SQL语句,保证回放成功,然后读取下一个SQL语句块。
实施例8
本实施例描述了实时全局一致性过滤和最终全局一致性过滤两种过滤方式的具体过程。
图12是根据本发明实施例8的实时全局一致性过滤的流程图,流程说明如下:
步骤S1202,首先从同步表中找最近一次记录。
步骤S1204,从该记录中获取最近一次同步时的全局活跃事务列表。
步骤S1206,利用全局活跃事务ID对SQL语句块进行过滤。
步骤S1208,对于语句块中全局已提交的SQL语句,确定是否有配置数据对象过滤规则,如果有,则进行步骤S1210,没有则提交发送队列。
步骤S1210,根据过滤规则,将涉及到的SQL语句过滤出来,提交发送队列。
步骤S1212,对于未全局提交的SQL语句,存入缓冲队列中。
步骤S1214,进行下一批语句过滤前,先将缓冲队列中的SQL语句合并到语句块中。
图13是根据本发明实施例8的最终全局一致性过滤的流程图,流程说明如下:
步骤S1302,一旦需要进行主备集群切换时,备集群从所有数据节点的同步表中找出最近一次的同步时钟记录。
步骤S1304,比较所有最近一次的同步时钟记录,找出时间戳最早的同步时钟记录的时间(T0)作为切换的一致点。
步骤S1306,找出所有收到晚于T0时刻同步时钟消息的数据节点。
步骤S1308,通过解析日志文件,生成回退到T0时刻的所有反向SQL语句,执行SQL语句将节点数据回滚到接收T0时刻同步时钟消息的时刻,这样集群内所有节点的数据都对齐到一个时间点(T0时刻)。
步骤S1310,利用同步时钟表中该时间点(T0)的当前全局活跃事务ID,过滤出备集群数据节点中日志文件中对应的SQL语句,这些语句虽然在单点上提交了,但全局上事务未提交。这些事务处于全局活跃状态。
步骤S1312,生成反向SQL语句并执行,最终分布式数据库备集群达到全局一致的状态。
以下实施例9至12描述了将本发明的方法应用在不同场景下的具体处理流程。
实施例9
该实施例描述了分布式数据库异步数据同步高性能模式(即最终全局一致性方案)。
图14是根据本发明实施例9的分布式数据库集群数据同步高性能模式下的***架构示意图。
如图14所示,该实施例中存在两个集群***,主分布式数据库集群会将数据同步到备集群中,两个集群的组网是一致的。数据同步过程中不会进行一致性过滤,仅在业务进行集群切换时进行一次全局一致性过滤。分布式数据库异步数据同步高性能模式下的处理过程包括以下步骤。
1.同步时钟模块82时会向数据库中发送同步SQL语句。
2.数据库会定时将日志文件推送到数据同步模块810。
3.数据同步模块810在收到数据库推送的日志后,会对日志进行解析,以两个同步SQL之间的所有SQL视为一个消息块,封装成一个语句块。将SQL语句块打包压缩后,放入发送缓冲队列中,然后发送线程从缓冲队列中取SQL语句消息发送到对端数据同步模块810中去。
4.备集群的数据同步模块810接到消息包后,把消息放入接收列表中。做消息包校验后,SQL语句块消息被持久化到SQL回放文件中,然后SQL回放线程解析SQL回放文件,将两个同步消息间的事务语句块解析出来按行拆分,并行回放SQL语句,达到同步数据的目的。
5.一致性过滤模块88仅在需要进行主备集群切换时才启用。过滤步骤参考附图13。
该实施例适合灾备***中对RPO指标要求高的场景,数据可以高效的传输到对端集群并持久化,保证RPO尽可能的小。
实施例10
该实施例描述了分布式数据库集群数据同步高性能模式(即实时全局一致性方案)。
图15是根据本发明实施例10的分布式数据库集群数据同步高性能模式下的***架构示意图。
如图15所示,该实施例中存在两个数据库集群***,主数据库集群会将数据同步到备集群中,两个集群的组网是一致的。数据同步过程中会进行一致性过滤,这样同步到备集群上的数据一致处在一致状态中。分布式数据库集群数据同步高性能模式下的处理包括以下步骤。
1.同步时钟模块82会向数据库中发送同步SQL语句。
2.数据库会定时将日志文件推送到数据同步模块810。
3.数据同步模块810在收到数据库推送的日志后,会对日志进行解析,以两个同步SQL之间的所有SQL视为一个消息块,封装成一个语句块。
4.一致性过滤模块88利用全局活跃事务ID,将该语句块中处在全局事务已提交状态的语句过滤出来,具体流程参考图12。
5.将全局事务已提交的SQL语句块打包压缩后,放入发送缓冲队列中,然后发送线程从缓冲队列中取SQL语句消息发送到对端数据同步模块810中去。
6.备集群的数据同步模块810接到消息包后,把消息放入接收列表中。做消息包校验后,SQL语句块消息被持久化到SQL回放文件中,然后SQL回放线程解析SQL回放文件,将两个同步消息间的事务语句块解析出来按行拆分,并行回放SQL语句,达到同步数据的目的。由于每次同步的SQL语句块在全局都是一致的,因此,备集群数据库内的数据一直处在全局一致的状态。
该实施例适合灾备***中对RTO指标要求高的场景。业务可以在任何时候接管对端分布式数据库集群,RTO可以等于零。
实施例11
该实施例描述了基于分布式数据库的增量数据订阅下的数据同步(准实时备份)。
图16是根据本发明实施例11的分布式数据库准实时备份的***架构图。如图16所示,该实施例中存在两个数据库集群,其中远端数据库集群作为订阅业务***集群的数据库集群,两个集群组网可以不一致。基于分布式数据库的增量数据订阅下的准实时备份的过程包括以下步骤。
1.同步时钟模块82时会向数据库中发送同步SQL语句。
2.数据库会定时将日志文件推送到数据同步模块810。
3.数据同步模块810在收到数据库推送的日志后,会对日志进行解析,以两个同步SQL之间的所有SQL视为一个消息块,封装成一个语句块。
4.一致性过滤模块88利用全局活跃事务ID,将该语句块中处在全局活跃的SQL语句,缓存到活跃语句队列中,在过滤下一个语句块时合并到语句快中。这样过滤出来的SQL语句都是全局事务已提交状态的语句。然后根据订阅规则,对涉及的数据对象(数据库、表)进行过滤。
5.将过滤后全局事务已提交的SQL语句块打包压缩后,放入发送缓冲队列中,然后发送线程从缓冲队列中取SQL语句消息发送到对端数据同步模块810中去。
6.远端集群的数据同步模块810接到消息包后,把消息放入接收列表中。做消息包校验后,SQL语句块消息被持久化到SQL回放文件中,然后SQL回放线程解析SQL回放文件,将两个同步消息间的事务语句块解析出来按行拆分,根据集群组网情况,并行回放SQL语句,达到准实时备份数据的目的。
实施例12
该实施例描述了基于分布式数据库增量数据的数据同步(数据抽取)。
图17是根据本发明实施例12的基于分布式数据库增量数据的数据抽取的***架构图。如图17所示,该实施例中存在两种类型的业务***:产生数据的在线联机交易***(OLTP)以及数据分析业务为主的在线分析***(OLAP)和数据仓库***(BI),图例中以数据在线分析的大数据平台为例。OLTP***把数据导入到大数据平台中,供大数据平台进行分析挖掘。基于分布式数据库增量数据的数据抽取包括以下步骤。
1.同步时钟模块82会定时向数据库中发送同步SQL语句。
2.OLTP类型业务数据库集群会定时将日志文件推送到数据同步模块810。
3.数据同步模块810在收到数据库推送的日志后,会对日志进行解析,以两个同步SQL之间的所有SQL视为一个消息块,封装成一个语句块。
4.一致性过滤模块88利用全局活跃事务ID,将该语句块中处在全局活跃的SQL语句,缓存到活跃语句队列中,在过滤下一个语句块时合并到语句快中。这样过滤出来的SQL语句都是全局事务已提交状态的语句。然后根据数据抽取规则,对涉及的数据对象(数据库、表)进行过滤。
5.将抽取后全局事务已提交的SQL语句块打包压缩后,放入发送缓冲队列中,然后发送线程从缓冲队列中取SQL语句消息发送到大数据平台端的数据同步模块810中去。
6.大数据平台端的数据同步模块810接到消息包后,把消息放入接收列表中。做消息包校验后,SQL语句块消息被持久化到SQL回放文件中,然后SQL回放线程解析SQL回放文件,将两个同步消息间的事务语句块解析出来按行拆分,并行回放到大数据平台的数据计算层中,由计算层进行SQL计算,将数据计算结果更新到大数据平台的存储***中。
综上所述,根据本发明所提出的分布式数据库集群***和数据同步方法可以扩大分布式数据库集群在教学、金融、政企、互联网等领域的应用,节省了***资源投入,提升***性能,保障数据的一致性,提升用户使用体验。对于分布式数据库的推广具有良好的示范意义。
显然,本领域的技术人员应该明白,上述的本发明的各模块或各步骤可以用通用的计算装置来实现,它们可以集中在单个的计算装置上,或者分布在多个计算装置所组成的网络上,可选地,它们可以用计算装置可执行的程序代码来实现,从而,可以将它们存储在存储装置中由计算装置来执行,并且在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤,或者将它们分别制作成各个集成电路模块,或者将它们中的多个模块或步骤制作成单个集成电路模块来实现。这样,本发明不限制于任何特定的硬件和软件结合。
以上所述仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

Claims (36)

1.一种分布式数据库集群***,其特征在于,包括:第一同步时钟模块、第一数据同步模块和多个第一数据库组,其中,所述多个第一数据库组中的每个第一数据库组包括一个第一主数据库,
所述第一同步时钟模块用于定期发送时钟同步指令;
所述第一数据同步模块用于分别将每个第一主数据库在所述第一同步时钟模块发送的相邻两个时钟同步指令之间所记录的数据库操作指令封装成第一操作指令块,并发送所述第一操作指令块。
2.根据权利要求1所述的分布式数据库集群***,其特征在于,
所述第一同步时钟模块用于定期向每个第一主数据库发送所述时钟同步指令;
所述第一主数据库用于将接收到的数据库操作指令写入所述第一主数据库的日志文件,以及将接收到的所述时钟同步指令写入所述日志文件;
所述第一数据同步模块用于分别获取每个第一主数据库的所述日志文件,将所述日志文件中夹在两条时钟同步指令之间的数据库操作指令封装成所述第一操作指令块,并发送所述第一操作指令块。
3.根据权利要求1或2所述的分布式数据库集群***,其特征在于,所述第一数据同步模块用于发送所述第一操作指令块给对端的分布式数据库集群***。
4.根据权利要求1或2所述的分布式数据库集群***,其特征在于,还包括:第一一致性过滤模块,
所述第一数据同步模块用于发送所述第一操作指令块给所述第一一致性过滤模块;
所述第一一致性过滤模块用于接收所述第一数据同步模块发送的所述第一操作指令块,对所述第一操作指令块进行全局一致性过滤,将所述第一操作指令块中满足过滤条件的数据库操作指令封装成第二操作指令块,并将所述第二操作指令块发送到对端的分布式数据库集群***,其中,所述过滤条件包括:所述数据库操作指令处于全局事务已提交状态。
5.根据权利要求4所述的分布式数据库集群***,其特征在于,所述过滤条件还包括:所述数据库操作指令符合所述对端的分布式数据库集群***所对应的数据对象过滤规则。
6.根据权利要求4或5所述的分布式数据库集群***,其特征在于,所述第一一致性过滤模块还用于:
将所述第一操作指令块中处于全局事务未提交状态的数据库操作指令进行缓存,并在下一次接收到所述第一数据同步模块发送的对应于当前第一主数据库的所述第一操作指令块时,将缓存的所述数据库操作指令加入所述第一操作指令块后再对所述第一操作指令块进行全局一致性过滤。
7.根据权利要求4至6中任一项所述的分布式数据库集群***,其特征在于,还包括:全局事务管理模块,
所述全局事务管理模块用于管理能够唯一标识全局事务的全局事务标识ID,并记录每个全局事务的状态和生命周期;
所述第一同步时钟模块用于定期请求每个第一主数据库的当前活跃事务列表,将所述当前活跃事务列表和获取所述当前活跃事务列表的时间戳记录在所述第一主数据库对应的同步表中,并将所述时间戳和所述当前活跃事务列表的信息携带在发往所述第一主数据库的所述时钟同步指令中;
所述第一一致性过滤模块用于查找当前第一主数据库对应的所述同步表中最近一次记录的所述当前活跃事务列表,并将最近一次记录的所述当前活跃事务列表中的全局事务ID所对应的数据库操作指令剔除,将剩余的数据库操作指令作为满足处于全局事务已提交状态的过滤条件的数据库操作指令封装成所述第二操作指令块。
8.根据权利要求1所述的分布式数据库集群***,其特征在于,所述第一数据同步模块还用于:
接收对端的分布式数据库集群***发来的同步位置请求信息,其中,所述同步位置请求信息携带所述分布式数据库集群***与所述对端的分布式数据库集群***之间的同步位置;
根据所述同步位置请求信息携带的所述同步位置执行对每个第一主数据库所记录的数据库操作指令的封装。
9.根据权利要求1至8中任一项所述的分布式数据库集群***,其特征在于,所述第一数据同步模块还用于:
接收对端的分布式数据库集群***发送的操作指令块,其中,所述操作指令块包括第一操作指令块或第二操作指令块;
执行接收的所述操作指令块中的数据库操作指令。
10.根据权利要求9所述的分布式数据库集群***,其特征在于,所述第一数据同步模块用于通过以下方式执行接收的所述操作指令块中的所述数据库操作指令:
将所述操作指令块中的所述数据库操作指令持久化到回放文件中;
解析所述回放文件,将所述回放文件中的所述数据库操作指令按行拆分放入不同的工作线程进行处理。
11.根据权利要求10所述的分布式数据库集群***,其特征在于,所述第一数据同步模块用于通过以下方式解析所述回放文件,将所述回放文件中的所述数据库操作指令按行拆分放入不同的工作线程进行处理:
按照表名和主键将所述操作指令块中的所述数据库操作指令拆分成不同的数据行,同一数据行的所述数据库操作指令按照先后顺序组成一个事务;
将不同事务的所述数据库操作指令放入不同的工作线程进行处理。
12.根据权利要求9至11中任一项所述的分布式数据库集群***,其特征在于,所述第一数据同步模块还用于:
在执行接收的所述操作指令块中的所述数据库操作指令成功后,将执行数据库操作指令成功的位置持久化到文件中。
13.根据权利要求9至11中任一项所述的分布式数据库集群***,其特征在于,在所述分布式数据库集群***作为所述对端的分布式数据库集群***的备分布式数据库集群***的情况下,
所述第一数据同步模块用于在所述分布式数据库集群***需要接替所述对端的分布式数据库集群***成为主分布式数据库集群***的情况下,调用第一一致性过滤模块;
所述第一一致性过滤模块用于:
获取每个第一主数据库对应的同步表,根据所述同步表确定每个第一主数据库的最近一次同步的时间戳,并从中确定出最早的时间戳作为切换参考时间点;
对于最近一次同步的时间戳晚于所述切换参考时间点的每个第一主数据库,将所述第一主数据库的数据回滚到所述切换参考时间点时记录的状态,并将所述第一主数据库的数据恢复到全局一致的状态。
14.根据权利要求13所述的分布式数据库集群***,其特征在于,所述第一一致性过滤模块用于通过以下方式将所述第一主数据库的数据回滚到所述切换参考时间点时记录的状态,并将所述第一主数据库的数据恢复到全局一致的状态:
对于所述切换参考时间点之后的数据库操作指令生成反向数据库操作指令,并执行所述反向数据库操作指令;
对于所述切换参考时间点时处于全局事务未提交状态的数据库操作指令生成反向数据库操作指令,并执行所述反向数据库操作指令。
15.一种分布式数据库集群***,其特征在于,包括:第二数据同步模块和多个第二数据库组,其中,所述多个第二数据库组中的每个第二数据库组包括一个第二主数据库,
所述第二数据同步模块用于接收对端的分布式数据库集群***发送的操作指令块,其中,所述操作指令块包括第一操作指令块或第二操作指令块,所述第一操作指令块封装有所述对端的分布式数据库集群***的每个第一主数据库在相邻两个时钟同步指令之间所记录的数据库操作指令,所述第二操作指令块封装有所述对端的分布式数据库集群***的每个第一主数据库在相邻两个时钟同步指令之间所记录的数据库操作指令中满足过滤条件的数据库操作指令,其中,所述过滤条件包括:所述数据库操作指令处于全局事务已提交状态;
执行接收的所述操作指令块中的数据库操作指令。
16.根据权利要求15所述的分布式数据库集群***,其特征在于,所述第二数据同步模块用于通过以下方式执行接收的所述操作指令块中的所述数据库操作指令:
将所述操作指令块中的所述数据库操作指令持久化到回放文件中;
解析所述回放文件,将所述回放文件中的所述数据库操作指令按行拆分放入不同的工作线程进行处理。
17.根据权利要求16所述的分布式数据库集群***,其特征在于,所述第二数据同步模块用于通过以下方式解析所述回放文件,将所述回放文件中的所述数据库操作指令按行拆分放入不同的工作线程进行处理:
按照表名和主键将所述操作指令块中的所述数据库操作指令拆分成不同的数据行,同一数据行的所述数据库操作指令按照先后顺序组成一个事务;
将不同事务的所述数据库操作指令放入不同的工作线程进行处理。
18.根据权利要求15至17中任一项所述的分布式数据库集群***,其特征在于,所述第二数据同步模块还用于:
在执行接收的所述操作指令块中的所述数据库操作指令成功后,将执行数据库操作指令成功的位置持久化到文件中。
19.根据权利要求15至17中任一项所述的分布式数据库集群***,其特征在于,还包括第二一致性过滤模块,
所述第二数据同步模块用于在所述分布式数据库集群***需要接替所述对端的分布式数据库集群***成为主分布式数据库集群***的情况下,调用所述第二一致性过滤模块;
所述第二一致性过滤模块用于:
获取每个第二主数据库对应的同步表,根据所述同步表确定每个第二主数据库的最近一次同步的时间戳,并从中确定出最早的时间戳作为切换参考时间点;
对于最近一次同步的时间戳晚于所述切换参考时间点的每个第二主数据库,将所述第二主数据库的数据回滚到所述切换参考时间点时记录的状态,并将所述第二主数据库的数据恢复到全局一致的状态。
20.根据权利要求19所述的分布式数据库集群***,其特征在于,所述第二一致性过滤模块用于通过以下方式将所述第二主数据库的数据回滚到所述切换参考时间点时记录的状态,并将所述第二主数据库的数据恢复到全局一致的状态:
对于所述切换参考时间点之后的数据库操作指令生成反向数据库操作指令,并执行所述反向数据库操作指令;
对于所述切换参考时间点时处于全局事务未提交状态的数据库操作指令生成反向数据库操作指令,并执行所述反向数据库操作指令。
21.一种数据同步方法,其特征在于,应用于包含多个第一数据库组的第一分布式数据库集群***,其中,所述多个第一数据库组中的每个第一数据库组包括一个第一主数据库,所述方法包括:
所述第一分布式数据库集群***定期发送时钟同步指令;
所述第一分布式数据库集群***分别将每个第一主数据库在相邻两个时钟同步指令之间所记录的数据库操作指令封装成第一操作指令块,并发送所述第一操作指令块。
22.根据权利要求21所述的方法,其特征在于,
所述第一分布式数据库集群***定期发送时钟同步指令包括:所述第一分布式数据库集群***定期向每个第一主数据库发送所述时钟同步指令;
所述第一分布式数据库集群***分别将每个第一主数据库在相邻两个时钟同步指令之间所记录的数据库操作指令封装成第一操作指令块之前,所述方法还包括:所述第一主数据库将接收到的数据库操作指令写入所述第一主数据库的日志文件,以及将接收到的所述时钟同步指令写入所述日志文件;
所述第一分布式数据库集群***分别将每个第一主数据库在相邻两个时钟同步指令之间所记录的数据库操作指令封装成第一操作指令块包括:所述第一分布式数据库集群***分别获取每个第一主数据库的所述日志文件,将所述日志文件中夹在两条时钟同步指令之间的数据库操作指令封装成所述第一操作指令块。
23.根据权利要求21或22所述的方法,其特征在于,所述第一分布式数据库集群***发送所述第一操作指令块包括:
所述第一分布式数据库集群***发送所述第一操作指令块给第二分布式数据库集群***。
24.根据权利要求21或22所述的方法,其特征在于,
所述第一分布式数据库集群***发送所述第一操作指令块包括:
所述第一分布式数据库集群***对所述第一操作指令块进行全局一致性过滤,将所述第一操作指令块中满足过滤条件的数据库操作指令封装成第二操作指令块,并将所述第二操作指令块发送到第二分布式数据库集群***,其中,所述过滤条件包括:所述数据库操作指令处于全局事务已提交状态。
25.根据权利要求24所述的方法,其特征在于,所述过滤条件还包括:所述数据库操作指令符合所述第二分布式数据库集群***所对应的数据对象过滤规则。
26.根据权利要求24或25所述的方法,其特征在于,还包括:
所述第一分布式数据库集群***将所述第一操作指令块中处于全局事务未提交状态的数据库操作指令进行缓存,并将缓存的所述数据库操作指令加入对应于当前第一主数据库的下一个第一操作指令块后再对所述下一个第一操作指令块进行全局一致性过滤。
27.根据权利要求24至26中任一项所述的方法,其特征在于,还包括:
所述第一分布式数据库集群***管理能够唯一标识全局事务的全局事务标识ID,并记录每个全局事务的状态和生命周期;
所述第一分布式数据库集群***管理定期请求每个第一主数据库的当前活跃事务列表,将所述当前活跃事务列表和获取所述当前活跃事务列表的时间戳记录在所述第一主数据库对应的同步表中,并将所述时间戳和所述当前活跃事务列表的信息携带在发往所述第一主数据库的所述时钟同步指令中;
所述第一分布式数据库集群***对所述第一操作指令块进行全局一致性过滤,将所述第一操作指令块中满足过滤条件的数据库操作指令封装成第二操作指令块包括:所述第一分布式数据库集群***查找当前第一主数据库对应的所述同步表中最近一次记录的所述当前活跃事务列表,并将最近一次记录的所述当前活跃事务列表中的全局事务ID所对应的数据库操作指令剔除,将剩余的数据库操作指令作为满足处于全局事务已提交状态的过滤条件的数据库操作指令封装成所述第二操作指令块。
28.根据权利要求21所述的方法,其特征在于,
所述第一分布式数据库集群***分别将每个第一主数据库在相邻两个时钟同步指令之间所记录的数据库操作指令封装成第一操作指令块之前,还包括:所述第一分布式数据库集群***接收第二分布式数据库集群***发来的同步位置请求信息,其中,所述同步位置请求信息携带所述第一分布式数据库集群***与所述第二分布式数据库集群***之间的同步位置;
所述第一分布式数据库集群***分别将每个第一主数据库在相邻两个时钟同步指令之间所记录的数据库操作指令封装成第一操作指令块包括:所述第一分布式数据库集群***根据所述同步位置请求信息携带的所述同步位置执行对每个第一主数据库所记录的数据库操作指令的封装。
29.一种数据同步方法,其特征在于,应用于包含多个第二数据库组的第二分布式数据库集群***,其中,所述多个第二数据库组中的每个第二数据库组包括一个第二主数据库,所述方法包括:
所述第二分布式数据库集群***接收第一分布式数据库集群***发送的操作指令块,其中,所述操作指令块包括第一操作指令块或第二操作指令块,所述第一操作指令块封装有所述第一分布式数据库集群***的每个第一主数据库在相邻两个时钟同步指令之间所记录的数据库操作指令,所述第二操作指令块封装有所述第一分布式数据库集群***的每个第一主数据库在相邻两个时钟同步指令之间所记录的数据库操作指令中满足过滤条件的数据库操作指令,其中,所述过滤条件包括:所述数据库操作指令处于全局事务已提交状态;
所述第二分布式数据库集群***执行接收的所述操作指令块中的数据库操作指令。
30.根据权利要求29所述的方法,其特征在于,所述第二分布式数据库集群***执行接收的所述操作指令块中的数据库操作指令包括:
所述第二分布式数据库集群***将所述操作指令块中的所述数据库操作指令持久化到回放文件中;
所述第二分布式数据库集群***解析所述回放文件,将所述回放文件中的所述数据库操作指令按行拆分放入不同的工作线程进行处理。
31.根据权利要求30所述的方法,其特征在于,所述第二分布式数据库集群***解析所述回放文件,将所述回放文件中的所述数据库操作指令按行拆分放入不同的工作线程进行处理包括:
所述第二分布式数据库集群***按照表名和主键将所述操作指令块中的所述数据库操作指令拆分成不同的数据行,同一数据行的所述数据库操作指令按照先后顺序组成一个事务;
所述第二分布式数据库集群***将不同事务的所述数据库操作指令放入不同的工作线程进行处理。
32.根据权利要求29至31中任一项所述的方法,其特征在于,在所述第二分布式数据库集群***执行接收的所述操作指令块中的所述数据库操作指令成功之后,还包括:
所述第二分布式数据库集群***将执行数据库操作指令成功的位置持久化到文件中。
33.根据权利要求29至31中任一项所述的方法,其特征在于,在所述第二分布式数据库集群***需要接替所述第一分布式数据库集群***成为主分布式数据库集群***的情况下,所述方法还包括:
所述第二分布式数据库集群***获取每个第二主数据库对应的同步表,根据所述同步表确定每个第二主数据库的最近一次同步的时间戳,并从中确定出最早的时间戳作为切换参考时间点;
对于最近一次同步的时间戳晚于所述切换参考时间点的每个第二主数据库,所述第二分布式数据库集群***将所述第二主数据库的数据回滚到所述切换参考时间点时记录的状态,并将所述第二主数据库的数据恢复到全局一致的状态。
34.根据权利要求33所述的方法,其特征在于,所述第二分布式数据库集群***将所述第二主数据库的数据回滚到所述切换参考时间点时记录的状态,并将所述第二主数据库的数据恢复到全局一致的状态包括:
所述第二分布式数据库集群***对于所述切换参考时间点之后的数据库操作指令生成反向数据库操作指令,并执行所述反向数据库操作指令;
所述第二分布式数据库集群***对于所述切换参考时间点时处于全局事务未提交状态的数据库操作指令生成反向数据库操作指令,并执行所述反向数据库操作指令。
35.一种存储介质,其特征在于,所述存储介质中存储有计算机程序,其中,所述计算机程序被设置为运行时执行所述权利要求21至34任一项中所述的方法。
36.一种电子装置,包括存储器和处理器,其特征在于,所述存储器中存储有计算机程序,所述处理器被设置为运行所述计算机程序以执行所述权利要求21至34任一项中所述的方法。
CN201810147335.4A 2018-02-12 2018-02-12 分布式数据库集群***、数据同步方法及存储介质 Active CN110209726B (zh)

Priority Applications (4)

Application Number Priority Date Filing Date Title
CN201810147335.4A CN110209726B (zh) 2018-02-12 2018-02-12 分布式数据库集群***、数据同步方法及存储介质
JP2020565003A JP7090744B2 (ja) 2018-02-12 2019-02-03 分散データベースクラスタシステム、及びデータ同期方法
PCT/CN2019/074699 WO2019154394A1 (zh) 2018-02-12 2019-02-03 分布式数据库集群***、数据同步方法及存储介质
EP19751274.2A EP3754514B1 (en) 2018-02-12 2019-02-03 Distributed database cluster system, data synchronization method and storage medium

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201810147335.4A CN110209726B (zh) 2018-02-12 2018-02-12 分布式数据库集群***、数据同步方法及存储介质

Publications (2)

Publication Number Publication Date
CN110209726A true CN110209726A (zh) 2019-09-06
CN110209726B CN110209726B (zh) 2023-10-20

Family

ID=67548760

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201810147335.4A Active CN110209726B (zh) 2018-02-12 2018-02-12 分布式数据库集群***、数据同步方法及存储介质

Country Status (4)

Country Link
EP (1) EP3754514B1 (zh)
JP (1) JP7090744B2 (zh)
CN (1) CN110209726B (zh)
WO (1) WO2019154394A1 (zh)

Cited By (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110661857A (zh) * 2019-09-12 2020-01-07 京东数字科技控股有限公司 一种数据同步方法和装置
CN110866009A (zh) * 2019-10-29 2020-03-06 广州西山居世游网络科技有限公司 一种实时并发同步服务的方法及***
CN111061810A (zh) * 2019-10-23 2020-04-24 广州巨杉软件开发有限公司 基于分布式逻辑时间戳的分布式事务管理方法及***
CN111209342A (zh) * 2020-01-13 2020-05-29 阿里巴巴集团控股有限公司 分布式***、数据同步与节点管理方法、设备及存储介质
CN111930830A (zh) * 2020-06-22 2020-11-13 心有灵犀科技股份有限公司 一种基于共享数据库的分布式事务数据处理方法及***
CN112131245A (zh) * 2020-09-23 2020-12-25 华东计算技术研究所(中国电子科技集团公司第三十二研究所) 拟态防御架构的高性能数据访问***及方法
CN112434064A (zh) * 2020-11-19 2021-03-02 脸萌有限公司 数据处理方法、装置、介质及电子设备
CN113127436A (zh) * 2021-04-28 2021-07-16 北京奇艺世纪科技有限公司 一种数据同步方法、装置、服务器及存储介质
CN113641756A (zh) * 2021-07-26 2021-11-12 浪潮卓数大数据产业发展有限公司 一种分布式高并发的数据存储方法
WO2022037173A1 (zh) * 2020-08-21 2022-02-24 苏州浪潮智能科技有限公司 存储集群运行时数据持久化的方法、装置、设备和介质
CN114528266A (zh) * 2022-01-28 2022-05-24 苏州浪潮智能科技有限公司 实现数据库和缓存一致性的方法、***、设备和存储介质
CN117112314A (zh) * 2023-10-24 2023-11-24 深圳市科力锐科技有限公司 业务数据切换方法、装置、设备及存储介质

Families Citing this family (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110489491B (zh) * 2019-08-26 2023-07-04 湖南中车时代通信信号有限公司 一种适用于a/b网双集群的全量数据同步装置
CN111782634B (zh) * 2020-06-29 2024-06-14 京东科技控股股份有限公司 数据分布式存储方法、装置、电子设备及存储介质
CN112052270A (zh) * 2020-08-26 2020-12-08 南京越扬科技有限公司 一种通过大数据进行用户画像深度分析的方法及***
CN112231396A (zh) * 2020-09-15 2021-01-15 山东浪潮通软信息科技有限公司 一种跨数据库增量同步数据的方法
CN112463762A (zh) * 2020-11-06 2021-03-09 苏州浪潮智能科技有限公司 跨集群实时数据迁移与同步的方法、***、设备及介质
CN113254535B (zh) * 2021-06-08 2022-12-13 成都新潮传媒集团有限公司 一种mongodb到mysql的数据同步方法、装置及计算机可读存储介质
CN113596190B (zh) * 2021-07-23 2023-05-26 浪潮云信息技术股份公司 基于Kubernetes的应用分布式多活***及方法
CN113918657B (zh) * 2021-12-14 2022-03-15 天津南大通用数据技术股份有限公司 一种并行高性能增量同步方法
CN114301563B (zh) * 2021-12-24 2023-05-05 中国航发控制***研究所 集群间多余度同步电路、总线***及集群间同步的方法
CN114697346B (zh) * 2022-04-22 2024-06-11 厦门飞鱼科技有限公司 服务器节点之间数据同步的方法
CN114579671A (zh) * 2022-05-09 2022-06-03 高伟达软件股份有限公司 集群间数据同步方法及装置
CN114942965B (zh) * 2022-06-29 2022-12-16 北京柏睿数据技术股份有限公司 一种数据库主备同步操作的加速方法和***
CN115544172A (zh) * 2022-11-28 2022-12-30 杭州欧若数网科技有限公司 一种一主多从的集群间数据实时同步的方法和***
CN116991691B (zh) * 2023-09-26 2024-01-30 中国铁塔股份有限公司 数据库测试方法、装置、电子设备及可读存储介质
CN117093640B (zh) * 2023-10-18 2024-01-23 上海柯林布瑞信息技术有限公司 基于池化技术的数据抽取方法及装置
CN117827981A (zh) * 2024-03-06 2024-04-05 北京万里开源软件有限公司 一种MySQL数据库集群的链路检测方法及***
CN117992257B (zh) * 2024-04-07 2024-06-18 天津南大通用数据技术股份有限公司 一种分布式数据库并行数据采集处理方法

Citations (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6078930A (en) * 1997-02-28 2000-06-20 Oracle Corporation Multi-node fault-tolerant timestamp generation
US20030131025A1 (en) * 1998-12-24 2003-07-10 Zondervan Quinton Yves System and method for synchronizing data in multiple databases
CN101401073A (zh) * 2006-04-06 2009-04-01 国际商业机器公司 跨存储子***的一致更新
CN102693324A (zh) * 2012-01-09 2012-09-26 西安电子科技大学 一种分布式数据库同步***、同步方法和节点管理方法
WO2014101424A1 (zh) * 2012-12-28 2014-07-03 华为技术有限公司 分布式数据库同步方法和***
CN104182441A (zh) * 2014-02-27 2014-12-03 无锡天脉聚源传媒科技有限公司 一种数据表同步方法及装置
CN105512171A (zh) * 2015-11-23 2016-04-20 北京奇虎科技有限公司 数据库同步的方法及装置
CN106484565A (zh) * 2016-09-22 2017-03-08 华为数字技术(成都)有限公司 多数据中心间的数据同步方法及相关设备
CN107391635A (zh) * 2017-06-30 2017-11-24 北京奇虎科技有限公司 数据同步***及方法

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20070061379A1 (en) * 2005-09-09 2007-03-15 Frankie Wong Method and apparatus for sequencing transactions globally in a distributed database cluster
US7552295B2 (en) 2006-01-03 2009-06-23 International Business Machines Corporation Maintaining consistency when mirroring data using different copy technologies
JP5042644B2 (ja) 2007-01-24 2012-10-03 株式会社日立製作所 リモートコピーシステム
JP4916420B2 (ja) 2007-11-16 2012-04-11 株式会社日立製作所 ストレージシステム及びリモートコピー制御方法
WO2015008484A1 (ja) 2013-07-16 2015-01-22 Mame・Design株式会社 バックアップ制御装置及びバックアップ制御方法

Patent Citations (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6078930A (en) * 1997-02-28 2000-06-20 Oracle Corporation Multi-node fault-tolerant timestamp generation
US20030131025A1 (en) * 1998-12-24 2003-07-10 Zondervan Quinton Yves System and method for synchronizing data in multiple databases
CN101401073A (zh) * 2006-04-06 2009-04-01 国际商业机器公司 跨存储子***的一致更新
CN102693324A (zh) * 2012-01-09 2012-09-26 西安电子科技大学 一种分布式数据库同步***、同步方法和节点管理方法
WO2014101424A1 (zh) * 2012-12-28 2014-07-03 华为技术有限公司 分布式数据库同步方法和***
CN104182441A (zh) * 2014-02-27 2014-12-03 无锡天脉聚源传媒科技有限公司 一种数据表同步方法及装置
CN105512171A (zh) * 2015-11-23 2016-04-20 北京奇虎科技有限公司 数据库同步的方法及装置
CN106484565A (zh) * 2016-09-22 2017-03-08 华为数字技术(成都)有限公司 多数据中心间的数据同步方法及相关设备
CN107391635A (zh) * 2017-06-30 2017-11-24 北京奇虎科技有限公司 数据同步***及方法

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
秦晓红\N\N\N,翟正军,刘立月: "分布式试验与测试***数据库实时性与***时钟同步技术研究" *

Cited By (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110661857A (zh) * 2019-09-12 2020-01-07 京东数字科技控股有限公司 一种数据同步方法和装置
CN110661857B (zh) * 2019-09-12 2021-12-07 京东数字科技控股有限公司 一种数据同步方法和装置
CN111061810A (zh) * 2019-10-23 2020-04-24 广州巨杉软件开发有限公司 基于分布式逻辑时间戳的分布式事务管理方法及***
WO2021077934A1 (zh) * 2019-10-23 2021-04-29 广州巨杉软件开发有限公司 基于分布式逻辑时间戳的分布式事务管理方法及***
CN110866009A (zh) * 2019-10-29 2020-03-06 广州西山居世游网络科技有限公司 一种实时并发同步服务的方法及***
CN111209342B (zh) * 2020-01-13 2023-04-07 阿里巴巴集团控股有限公司 分布式***、数据同步与节点管理方法、设备及存储介质
CN111209342A (zh) * 2020-01-13 2020-05-29 阿里巴巴集团控股有限公司 分布式***、数据同步与节点管理方法、设备及存储介质
CN111930830A (zh) * 2020-06-22 2020-11-13 心有灵犀科技股份有限公司 一种基于共享数据库的分布式事务数据处理方法及***
WO2022037173A1 (zh) * 2020-08-21 2022-02-24 苏州浪潮智能科技有限公司 存储集群运行时数据持久化的方法、装置、设备和介质
CN112131245A (zh) * 2020-09-23 2020-12-25 华东计算技术研究所(中国电子科技集团公司第三十二研究所) 拟态防御架构的高性能数据访问***及方法
CN112434064A (zh) * 2020-11-19 2021-03-02 脸萌有限公司 数据处理方法、装置、介质及电子设备
CN112434064B (zh) * 2020-11-19 2023-09-29 脸萌有限公司 数据处理方法、装置、介质及电子设备
CN113127436A (zh) * 2021-04-28 2021-07-16 北京奇艺世纪科技有限公司 一种数据同步方法、装置、服务器及存储介质
CN113127436B (zh) * 2021-04-28 2023-07-25 北京奇艺世纪科技有限公司 一种数据同步方法、装置、服务器及存储介质
CN113641756A (zh) * 2021-07-26 2021-11-12 浪潮卓数大数据产业发展有限公司 一种分布式高并发的数据存储方法
CN114528266A (zh) * 2022-01-28 2022-05-24 苏州浪潮智能科技有限公司 实现数据库和缓存一致性的方法、***、设备和存储介质
CN114528266B (zh) * 2022-01-28 2024-01-26 苏州浪潮智能科技有限公司 实现数据库和缓存一致性的方法、***、设备和存储介质
CN117112314A (zh) * 2023-10-24 2023-11-24 深圳市科力锐科技有限公司 业务数据切换方法、装置、设备及存储介质
CN117112314B (zh) * 2023-10-24 2024-02-06 深圳市科力锐科技有限公司 业务数据切换方法、装置、设备及存储介质

Also Published As

Publication number Publication date
JP7090744B2 (ja) 2022-06-24
JP2021513715A (ja) 2021-05-27
CN110209726B (zh) 2023-10-20
WO2019154394A1 (zh) 2019-08-15
EP3754514A1 (en) 2020-12-23
EP3754514A4 (en) 2020-12-23
EP3754514B1 (en) 2024-05-08

Similar Documents

Publication Publication Date Title
CN110209726A (zh) 分布式数据库集群***、数据同步方法及存储介质
CN105262831B (zh) 一种存储***间同步数据的方法、装置及同步***
US10565071B2 (en) Smart data replication recoverer
US7461103B2 (en) System and method for reconciling transactions between a replication system and a recovered database
US8521694B1 (en) Leveraging array snapshots for immediate continuous data protection
CN103207867B (zh) 处理数据块的方法、发起恢复操作的方法和节点
EP2521037B1 (en) Geographically distributed clusters
US9542468B2 (en) Database management system and method for controlling synchronization between databases
KR101662212B1 (ko) 부분동기화 지원 데이터베이스 관리 시스템 및 데이터베이스 관리 시스템에서 부분동기화 방법
US20070255763A1 (en) Database replication method and system
CN106484565B (zh) 多数据中心间的数据同步方法及相关设备
CN103902405B (zh) 一种准连续性数据复制方法及装置
US8527454B2 (en) Data replication using a shared resource
CN109144416A (zh) 查询数据的方法和装置
CN109542330A (zh) 数据存储方法、数据查询方法及装置
CN108762982A (zh) 一种数据库恢复方法、装置及***
CN104462342B (zh) 数据库快照同步处理方法及装置
CN106855869B (zh) 一种实现数据库高可用的方法、装置和***
CN113905054A (zh) 基于RDMA的Kudu集群数据同步方法、装置、***
CN104991739A (zh) 元数据服务器失效接替中精确一次执行语义的方法及***
US20230409539A1 (en) Techniques for maintaining snapshot data consistency during file system cross-region replication
CN113515574A (zh) 一种数据同步方法及装置
CN112667698A (zh) 一种基于融媒体平台的MongoDB数据同步方法
JPH07114495A (ja) 多重化ファイル管理方式
CN110019092A (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
TA01 Transfer of patent application right

Effective date of registration: 20220309

Address after: 100176 602, 6 / F, building 6, courtyard 10, KEGU 1st Street, Daxing District, Beijing (Yizhuang group, high-end industrial area, Beijing Pilot Free Trade Zone)

Applicant after: Jinzhuan Xinke Co.,Ltd.

Address before: 518057 No. 55 South Science and technology road, Shenzhen, Guangdong, Nanshan District

Applicant before: ZTE Corp.

TA01 Transfer of patent application right
CI02 Correction of invention patent application

Correction item: Applicant|Address

Correct: ZTE Corp.|518057 No. 55 South Science and technology road, Shenzhen, Guangdong, Nanshan District

False: Jinzhuan Xinke Co.,Ltd.|100176 602, 6 / F, building 6, courtyard 10, KEGU 1st Street, Daxing District, Beijing (Yizhuang group, high-end industrial area, Beijing Pilot Free Trade Zone)

Number: 12-01

Volume: 38

CI02 Correction of invention patent application
TA01 Transfer of patent application right

Effective date of registration: 20220406

Address after: 100176 602, 6 / F, building 6, courtyard 10, KEGU 1st Street, Daxing District, Beijing (Yizhuang group, high-end industrial area, Beijing Pilot Free Trade Zone)

Applicant after: Jinzhuan Xinke Co.,Ltd.

Address before: 518057 No. 55 South Science and technology road, Shenzhen, Guangdong, Nanshan District

Applicant before: ZTE Corp.

TA01 Transfer of patent application right
GR01 Patent grant
GR01 Patent grant