CN108140035B - 分布式***的数据库复制方法及装置 - Google Patents
分布式***的数据库复制方法及装置 Download PDFInfo
- Publication number
- CN108140035B CN108140035B CN201680057292.XA CN201680057292A CN108140035B CN 108140035 B CN108140035 B CN 108140035B CN 201680057292 A CN201680057292 A CN 201680057292A CN 108140035 B CN108140035 B CN 108140035B
- Authority
- CN
- China
- Prior art keywords
- partition
- timestamp
- transaction
- transactions
- log
- 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
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/27—Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/18—File system types
- G06F16/1873—Versioning file systems, temporal file systems, e.g. file system supporting different historic versions of files
-
- 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
- G06F16/2379—Updates performed during online database operations; commit processing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/27—Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
- G06F16/273—Asynchronous replication or reconciliation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/27—Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
- G06F16/278—Data partitioning, e.g. horizontal or vertical partitioning
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)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明实施例提供了一种分布式***的数据库复制方法及装置,涉及数据库领域,方法包括:备集群中的第一分区向协调服务器发送第一分区中新增的多分区事务的时间戳;协调服务器根据新增的多分区事务的时间戳以及协调服务器存储的备集群的每个分区的多分区事务的时间戳,确定第一分区的目标时间戳;协调服务器向第一分区发送目标时间戳;第一分区根据目标时间戳,执行第一分区中的复制日志。通过协调服务器维护备集群每个分区包含多分区事务的时间戳,确定哪些多分区事务在所有分区中都存在,告知相应分区能够执行哪些日志记录,使得相应分区不用等待就能够执行在所有分区中都存在但未必执行的多分区事务,避免了数据不一致且提高了复制效率。
Description
技术领域
本发明涉及数据库领域,特别涉及一种分布式***的数据库复制方法及装置。
背景技术
在分布式***中,数据库复制是指将主集群中的数据库复制到备集群中,当主集群遇到灾难整体宕机时,通过备集群提供数据服务,以解决异地容灾的问题。
一般情况下,常见的分布式***架构是指通过计算机网络将物理上分散的多个节点连接起来组成的一个逻辑上统一的***架构,其中的节点,具体可以为普通的计算机、移动终端、工作站或通用服务器、专用服务器等,也可以是一个虚拟节点,即虚拟机。分布式***中的数据分为多个分区,每个分区保存一部分数据,各分区数据的合集构成完整数据,每个节点中可以包括一个分区或者多个分区。分布式***中包括主集群和备集群,主集群和备集群中均包含多个节点,其中的每个节点包括一个分区或者多个分区。主备集群具有一一对应的分区,且主备集群的每一个分区都有一个日志缓冲区,来保存用于记录当前分区所包含事务的复制日志。复制日志中记录有多条日志记录,每条日志记录用于记录一个事务。分布式***中事务分为单分区事务和多分区事务,单分区事务是指仅在一个分区中运行的事务,多分区事务是指在所有分区中都运行的事务。
主备集群之间通过复制日志实现数据库复制,现有的数据库复制通常采用的方法包括:当主集群中某个分区的缓冲区已满或者到达一定周期时,主集群会将该分区的复制日志发送给备集群中对应的分区;备集群中对应的分区会执行该复制日志中的所有日志记录,以实现数据库复制。该种方法中,对于多分区事务来说,在主集群的所有分区中均会保存有该多分区事务的复制日志,然而,由于各个分区的缓冲区情况不同或周期不同步,可能会出现主集群中的一些分区将该多分区事务的复制日志发送至备集群的对应分区,而一些分区并没有将该多分区事务的复制日志发送出去,这样,导致备集群有些分区执行了某个多分区事务的复制日志,而有些分区并没有执行这个多分区事务的复制日志,使得各个分区数据不一致。
发明内容
为了解决现有技术的问题,本发明实施例提供了一种分布式***的数据库复制方法及装置,解决备集群的各个分区中数据不一致的问题,所述技术方案如下:
第一方面,提供了一种分布式***的数据库复制方法,所述分布式***包括主集群和备集群,所述主集群和所述备集群分别包括数据库的多个分区,且所述主集群中的多个分区与所述备集群中的多个分区一一对应,所述主集群中的每个分区将本分区的复制日志发送至所述备集群中的对应分区,所述复制日志中记录数据操作的事务;所述备集群中的第一分区向协调服务器发送所述第一分区中新增的多分区事务的时间戳,所述新增的多分区事务为所述第一分区自上一次完成向所述协调服务器发送多分区事务的时间戳后,收到的所述主集群中的对应分区发送的复制日志中记录的事务中的多分区事务;所述协调服务器根据接收到所述新增的多分区事务的时间戳以及所述协调服务器存储的所述备集群的每个分区的多分区事务的时间戳,确定所述第一分区的目标时间戳,所述目标时间戳用于指示所述第一分区可以执行的多分区事务的信息;所述协调服务器向所述第一分区发送所述目标时间戳;所述第一分区根据所述目标时间戳,执行所述第一分区中的复制日志。
结合第一方面,在第一方面的第一种可能的实现方式中,所述所述协调服务器根据接收到所述新增的多分区事务的时间戳以及所述协调服务器存储的所述备集群的每个分区的多分区事务的时间戳,确定所述第一分区的目标时间戳包括:
判断所述备集群的每个分区的多分区事务的时间戳是否完全重合;若所述备集群的每个分区的多分区事务的时间戳不完全重合,则确定所述备集群的每个分区的多分区事务的时间戳的交集,从所述备集群的每个分区除所述交集以外的多分区事务的时间戳中,获取数值最小的时间戳作为所述第一分区的目标时间戳;若所述备集群的每个分区的多分区事务的时间戳完全重合,则将第一指定时间戳作为所述第一分区的目标时间戳,所述第一指定时间戳用于指示所述第一分区执行分区内复制日志中的日志记录,直到遇到下一个新增的多分区事务的日志记录时停止执行。协调服务器通过维护的每个分区包含多分区事务的时间戳,可以确定哪些多分区事务在所有分区中都已经存在,哪些多分区事务不是在所有分区中都存在,并通过目标时间戳告知相应分区能够执行哪些日志记录,使得相应分区能够执行在所有分区中都存在但未必执行的多分区事务,避免了备集群中各分区的数据不一致。
结合第一方面的第一种可能的实现方式,在第一方面的第二种可能的实现方式中,所述第一分区根据所述目标时间戳,执行所述第一分区中的复制日志包括:
若所述第一分区的目标时间戳为所述交集以外的多分区事务的时间戳中数值最小的时间戳,则执行所述第一分区的复制日志中所述目标时间戳对应的多分区事务之前的日志记录;若所述目标时间戳为所述第一指定时间戳,则执行所述第一分区内复制日志中的日志记录,直到遇到下一个新增多分区事务的日志记录时停止执行。第一分区通过根据目标时间戳执行分区内的日志记录,保证了与备集群中其他分区之间的数据一致性。
结合第一方面,在第一方面的第三种可能的实现方式中,所述所述协调服务器根据接收到所述新增的多分区事务的时间戳以及所述协调服务器存储的所述备集群的每个分区的多分区事务的时间戳,确定所述第一分区的目标时间戳包括:
确定所述备集群的每个分区的多分区事务的时间戳的交集,并判断所述交集是否为空集;若所述交集不为空集,则从所述交集中获取数值最大的时间戳作为所述第一分区的目标时间戳;若所述交集为空集,则将第二指定时间戳作为所述第一分区的目标时间戳,所述第二指定时间戳用于指示所述第一分区依次执行分区内复制日志中的日志记录,直到遇到多分区事务的日志记录时停止执行。协调服务器通过维护的每个分区包含多分区事务的时间戳,可以确定哪些多分区事务在所有分区中都已经存在,哪些多分区事务不是在所有分区中都存在,并通过目标时间戳告知相应分区能够执行哪些日志记录,使得相应分区能够执行在所有分区中都存在但未必执行的多分区事务,不必每遇到一个多分区事务就进入等待状态,避免了备集群中各分区的数据不一致。
结合第一方面的第三种可能的实现方式,在第一方面的第四种可能的实现方式中,所述第一分区根据所述目标时间戳,执行所述第一分区中的复制日志包括:
若所述第一分区的目标时间戳为所述交集中数值最大的时间戳,则执行所述第一分区中所述目标时间戳之后的第一个多分区事务的时间戳对应的多分区事务之前的日志记录;若所述第一分区的目标时间戳为所述第二指定时间戳,则依次执行所述第一分区中的日志记录,直到遇到多分区事务的日志记录时停止执行。第一分区通过根据目标时间戳执行分区内的日志记录,保证了与备集群中其他分区之间的数据一致性。
结合第一方面,在第一方面的第五种可能的实现方式中,所述协调服务器为所述备集群中的一个独立设备,或者架设于所述备集群中所有节点上。通过提供协调服务器的多种实施方式,提高了实现数据库复制方法的灵活性。
结合第一方面,在第一方面的第五种可能的实现方式中,所述备集群中的第一分区向协调服务器发送所述第一分区中新增的多分区事务的时间戳包括:
当所述第一分区达到触发条件时,向所述协调服务器发送所述第一分区中新增的多分区事务的时间戳,所述触发条件为所述第一分区的日志缓冲区满,或者为预设周期,或者为所述第一分区处于空闲状态。
第二方面,提供了一种分布式***,所述***包括主集群和备集群,所述主集群和所述备集群分别包括数据库的多个分区,且所述主集群中的多个分区与所述备集群中的多个分区一一对应,所述主集群中的每个分区将本分区的复制日志发送至所述备集群中的对应分区,所述复制日志中记录数据操作的事务,所述备集群还包括协调服务器;所述备集群中的第一分区用于向所述协调服务器发送所述第一分区中新增的多分区事务的时间戳,所述新增的多分区事务为所述第一分区自上一次完成向所述协调服务器发送多分区事务的时间戳后,收到的所述主集群中的对应分区发送的复制日志中记录的事务中的多分区事务;所述协调服务器用于根据接收到所述新增的多分区事务的时间戳以及所述协调服务器存储的所述备集群的每个分区的多分区事务的时间戳,确定所述第一分区的目标时间戳,所述目标时间戳用于指示所述第一分区可以执行的多分区事务的信息;所述协调服务器还用于向所述第一分区发送所述目标时间戳;所述第一分区还用于根据所述目标时间戳执行所述第一分区中的复制日志。
第三方面,提供了一种分布式***的数据库复制方法,所述方法包括:
接收备集群的第一分区中新增的多分区事务的时间戳,所述新增的多分区事务为所述第一分区自上一次完成发送多分区事务的时间戳后,收到的主集群中的对应分区发送的复制日志中记录的事务中的多分区事务;根据接收到所述新增的多分区事务的时间戳以及存储的所述备集群的每个分区的多分区事务的时间戳,确定所述第一分区的目标时间戳,所述目标时间戳用于指示所述第一分区可以执行的多分区事务的信息;向所述第一分区发送所述目标时间戳,由所述第一分区根据所述目标时间戳执行所述第一分区中的复制日志。
结合第三方面,在第三方面的第一种可能的实现方式中,所述根据接收到所述新增的多分区事务的时间戳以及存储的所述备集群的每个分区的多分区事务的时间戳,确定所述第一分区的目标时间戳包括:
判断所述备集群的每个分区的多分区事务的时间戳是否完全重合;若所述备集群的每个分区的多分区事务的时间戳不完全重合,则确定所述备集群的每个分区的多分区事务的时间戳的交集,从所述备集群的每个分区除所述交集以外的多分区事务的时间戳中,获取数值最小的时间戳作为所述第一分区的目标时间戳,所述数值最小的时间戳用于指示所述第一分区执行所述第一分区的复制日志中所述目标时间戳对应的多分区事务之前的日志记录;若所述每个分区的多分区事务时间戳完全重合,则将第一指定时间戳作为作为所述第一分区的目标时间戳,所述第一指定时间戳用于指示所述第一分区执行分区内复制日志中的日志记录,直到遇到下一个新增的多分区事务的日志记录时停止执行。协调服务器通过维护的每个分区包含多分区事务的时间戳,可以确定哪些多分区事务在所有分区中都已经存在,哪些多分区事务不是在所有分区中都存在,并通过目标时间戳告知相应分区能够执行哪些日志记录,使得相应分区能够执行在所有分区中都存在但未必执行的多分区事务,不必每遇到一个多分区事务就进入等待状态,避免了备集群中各分区的数据不一致。
结合第三方面,在第三方面的第二种可能的实现方式中,所述根据接收到所述新增的多分区事务的时间戳以及存储的所述备集群的每个分区的多分区事务的时间戳,确定所述第一分区的目标时间戳包括:确定所述所述备集群的每个分区的多分区事务的时间戳的交集,并判断所述交集是否为空集;若所述交集不为空集,则从所述交集中获取数值最大的时间戳作为所述第一分区的目标时间戳,所述数值最大的时间戳用于指示所述第一分区执行所述第一分区中所述目标时间戳之后的第一个多分区事务的时间戳对应的多分区事务之前的日志记录;若所述交集为空集,则将第二指定时间戳作为所述第一分区的目标时间戳,所述第二指定时间戳用于指示所述第一分区依次执行分区内复制日志中的日志记录,直到遇到多分区事务的日志记录时停止执行。通过向第一分区发送目标时间戳,使得第一分区可以通过根据目标时间戳执行分区内的日志记录,保证了第一分区与备集群中其他分区之间的数据一致性。
第四方面,提供了一种分布式***的数据库复制方法,所述方法包括:
向协调服务器发送第一分区中新增的多分区事务的时间戳,由所述协调服务器根据接收到所述新增的多分区事务的时间戳以及存储的所述备集群的每个分区的多分区事务的时间戳,确定所述第一分区的目标时间戳,并向所述第一分区发送所述第一分区的目标时间戳,所述目标时间戳用于指示所述第一分区可以执行的多分区事务的信息;根据所述第一分区的目标时间戳,执行所述第一分区内的复制日志。
结合第四方面,在第四方面的第一种可能的实现方式中,所述根据所述第一分区的目标时间戳,执行所述第一分区内的复制日志包括:
若所述第一分区的目标时间戳为所述备集群的每个分区的多分区事务的时间戳的交集以外的多分区事务的时间戳中数值最小的时间戳,则执行所述第一分区的复制日志中所述目标时间戳对应的多分区事务之前的日志记录;若所述目标时间戳为所述第一指定时间戳,则执行所述第一分区内复制日志中的日志记录,直到遇到下一个新增多分区事务的日志记录时停止执行,所述第一指定时间戳指示所述备集群的每个分区的多分区事务的时间戳完全重合。根据第一分区的目标时间戳执行日志记录,可以保证执行的多分区事务在所有分区中都存在,不必每遇到一个多分区事务就进入等待状态,避免了第一分区与备集群中其他分区之间的数据不一致。
结合第四方面,在第四方面的第二种可能的实现方式中,所述根据所述第一分区的目标时间戳,执行所述第一分区内的复制日志包括:
若所述第一分区的目标时间戳为所述备集群的每个分区的多分区事务的时间戳的交集中数值最大的时间戳,则执行所述第一分区中所述目标时间戳之后的第一个多分区事务的时间戳对应的多分区事务之前的日志记录;若所述第一分区的目标时间戳为所述第二指定时间戳,则依次执行所述第一分区中的日志记录,直到遇到多分区事务的日志记录时停止执行,所述第二指定时间戳指示所述备集群的每个分区的多分区事务的时间戳的交集为空集。根据第一分区的目标时间戳执行日志记录,可以保证执行的多分区事务在所有分区中都存在,不必每遇到一个多分区事务就进入等待状态,避免了第一分区与备集群中其他分区之间的数据不一致。
第五方面,提供了一种分布式***的数据库复制装置,所述装置包括多个功能模块用于执行上述第三方面所述的方法。在一种可能的实现方式中,所述装置还包括其他功能模块用于执行上述第三方面中多种可能的实现方式所述的方法。协调服务器通过维护的每个分区包含多分区事务的时间戳,可以确定哪些多分区事务在所有分区中都已经存在,哪些多分区事务不是在所有分区中都存在,并通过目标时间戳告知相应分区能够执行哪些日志记录,使得相应分区能够执行在所有分区中都存在但未必执行的多分区事务,不必每遇到一个多分区事务就进入等待状态,避免了备集群中各分区的数据不一致。第一分区通过根据目标时间戳执行分区内的日志记录,保证了与其他分区之间的数据一致性。
第六方面,提供了一种分布式***的数据库复制装置,所述装置包括多个功能模块用于执行上述第四方面所述的方法。在一种可能的实现方式中,所述装置还包括其他功能模块用于执行上述第四方面中多种可能的实现方式所述的方法。协调服务器通过维护的每个分区包含多分区事务的时间戳,可以确定哪些多分区事务在所有分区中都已经存在,哪些多分区事务不是在所有分区中都存在,并通过目标时间戳告知相应分区能够执行哪些日志记录,使得相应分区能够执行在所有分区中都存在但未必执行的多分区事务,不必每遇到一个多分区事务就进入等待状态,避免了备集群中各分区的数据不一致。第一分区通过根据目标时间戳执行分区内的日志记录,保证了与其他分区之间的数据一致性。
第七方面,提供了一种协调服务器,包括存储器和处理器,存储器用于存储处理器可执行指令,处理器被配置为执行上述第三方面所述的方法;在一种可能的实现方式中,所述处理器还被配置为执行上述第三方面中多种可能的实现方式所述的方法。通过维护的每个分区包含多分区事务的时间戳,可以确定哪些多分区事务在所有分区中都已经存在,哪些多分区事务不是在所有分区中都存在,并通过目标时间戳告知相应分区能够执行哪些日志记录,使得相应分区能够执行在所有分区中都存在但未必执行的多分区事务,不必每遇到一个多分区事务就进入等待状态,避免了备集群中各分区的数据不一致。第一分区通过根据目标时间戳执行分区内的日志记录,保证了与其他分区之间的数据一致性。
第八方面,提供了一种分布式***的数据库复制装置,包括存储器和处理器,存储器用于存储处理器可执行指令,处理器被配置为执行上述第四方面所述的方法;在一种可能的实现方式中,所述处理器还被配置为执行上述第四方面中多种可能的实现方式所述的方法。协调服务器通过维护的每个分区包含多分区事务的时间戳,可以确定哪些多分区事务在所有分区中都已经存在,哪些多分区事务不是在所有分区中都存在,并通过目标时间戳告知相应分区能够执行哪些日志记录,使得相应分区能够执行在所有分区中都存在但未必执行的多分区事务,不必每遇到一个多分区事务就进入等待状态,避免了备集群中各分区的数据不一致。第一分区通过根据目标时间戳执行分区内的日志记录,保证了与其他分区之间的数据一致性。
本发明实施例提供的技术方案的有益效果:
备集群中每个分区将包含的所有多分区事务时间戳发送至协调服务器,使得协调服务器可以根据每个分区包含多分区事务的情况,确定哪些多分区事务在所有分区中都已经存在,哪些多分区事务不是在所有分区中都存在,并通过目标时间戳告知相应分区能够执行哪些日志记录,使得相应分区能够执行在所有分区中都存在但未必执行的多分区事务,避免了备集群中各分区的数据不一致的问题。
附图说明
为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本发明实施例提供的一种分布式***的架构图;
图2是本发明实施例提供的一种分布式***的数据库复制方法的流程图;
图3是本发明实施例提供的一种备集群包含的分区与协调服务器交互的示意图;
图4是本发明实施例提供的一种备集群包含的分区与协调服务器交互的示意图;
图5是本发明实施例提供的一种分布式***的数据库复制方法的流程图;
图6是本发明实施例提供的一种备集群包含的分区与协调服务器交互的示意图;
图7是本发明实施例提供的一种备集群包含的分区与协调服务器交互的示意图;
图8是本发明实施例提供的一种分布式***的数据库复制装置的框图;
图9是本发明实施例提供的一种分布式***的数据库复制装置的框图;
图10是本发明实施例示出的一种协调服务器的结构示意图;
图11是本发明实施例示出的一种分布式***的数据库复制装置的结构示意图。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明实施方式作进一步地详细描述。
图1是本发明实施例提供的一种分布式***的架构图。参见图1,该分布式***包括主集群和备集群,主集群和备集群分别包括多个分区,且主集群中的多个分区与备集群中的多个分区一一对应。
如图1所示,主备集群均包括三个节点,以每个节点包括一个分区为例。主集群中的三个分区分别为分区A、分区B和分区C,备集群中对应的分区分别为分区A1、分区B1和分区C1。图1中,仅以主备集群分别包括三个分区为例进行展示,本发明实施例对主备集群中分区的数目不做具体限定。
其中,主集群中的每个分区分别维护复制日志,也即是,主集群中的每个分区中均有一个日志缓冲区,来保存用于记录当前分区所包含事务的复制日志。每个分区的复制日志中记录有多条日志记录,每条日志记录用于记录一个事务。复制日志的每条日志记录至少包括事务的时间戳和事务类型,事务类型包括单分区事务和多分区事务。此外,每条日志记录中还包括事务的具体内容,比如,事务对数据库执行的操作或者事务所修改的数据库记录等,使得可以通过执行该日志记录实现数据的复制。单分区事务是指仅在一个分区中运行的事务,多分区事务是指在所有分区中都运行的事务。其中,事务的时间戳可以是该事务发生时由***为该事务添加的事务标识符(Identifier,ID),用于唯一标识该事务。
主集群中每个分区将所维护的复制日志发送至备集群中的对应分区。以图1中的分区A为例,当主集群的分区A获取到一个事务后,在该分区A维护的复制日志中添加该事务的日志记录;并在该分区A的日志缓冲区满时或者达到指定周期或者处于空闲状态时,将复制日志发送至备集群中的对应分区A1。
备集群中的每个分区维护一个日志缓冲区,该日志缓冲区用于存储主集群中对应分区的复制日志。比如,当备集群中分区A1接收到主集群中对应分区A的复制日志时,存储该复制日志到分区A1的日志缓冲区。此外,备集群中的每个分区获取复制日志的方式还可为:由备集群中的每个分区周期性地从主集群的对应分区获取复制日志,本发明实施对此不做具体限定。
此外,分布式***中还包括协调服务器,协调服务器可以包含在备集群中,也可以包含在主集群中,也可以是备集群和主集群之外的独立实体,本发明实施例对此不做具体限定。备集群中的每个分区还用于向协调服务器发送分区内的多分区事务时间戳。该协调服务器用于存储备集群中所有多分区事务的时间戳。该协调服务器可以为分布式***中主集群或备集群之外的一个独立设备,也可以属于备集群中,是备集群中的一个独立设备,或者架设于分布式***中的所有节点上或一个节点上,优选的在备集群中所有节点上或一个节点上,每个节点包括一个分区或多个分区。具体实施时,可以利用分布式服务框架来实现该协调服务器的功能,该分布式服务框架可以为Zookeeper等框架,本发明实施例对此不做具体限定。
图2是本发明实施例提供的一种分布式***的数据库复制方法的流程图,参见图2,本发明实施例提供的方法流程包括:
201、备集群中的第一分区向协调服务器发送第一分区中新增的多分区事务的时间戳。
其中,多分区事务的时间戳用于指示复制日志中的多分区事务的日志记己录。新增的多分区事务为第一分区自上一次完成向协调服务器发送多分区事务的时间戳后,收到的主集群中的对应分区发送的复制日志中记录的事务中的多分区事务,该新增的多分区事务的个数可以为1个也可以为多个,本发明实施例对比不做具体限定。
具体地,当第一分区接收到主集群对应分区的复制日志时,存储该复制日志到第一分区的日志缓冲区。第一分区向协调服务器发送新增的多分区事务的时间戳触发条件可以为第一分区的日志缓冲区满,或者为预设周期,或者为第一分区处于空闲状态等,本发明实施例对此不做具体限定。该预设周期可以为任一数值,该预设周期根据***性能需求配置,本发明实施例对此不做具体限定。相应地,当触发条件为日志缓冲区满时,第一分区向协调服务器发送新增的多分区事务的时间戳的过程可以为:检测当前分区的日志缓冲区是否达到触发条件;若达到触发条件,则从存储的复制日志中,获取新增的多分区事务的时间戳,也即是,在复制日志包含的日志记录中,获取事务类型为多分区事务对应的时间戳;之后,将该新增的多分区事务的时间戳发送到协调服务器。
其中,第一分区处于空闲状态是指当前分区的可执行事务均已完成,处于等待继续处理新的事务的状态。例如,第一分区中包括事务1、事务2、事务3和事务4的复制日志,其中,事务1和事务2为当前可执行事务,事务3为当前不可执行事务,比如事务3为多分区事务,第一分区在将要执行事务3时,备集群的其他分区中还未全部包含该事务3的复制日志,那么第一分区便进入空闲状态,也即是,等待执行事务3的状态。
其中,第一分区可以为备集群中的任一分区,备集群中每个分区的日志缓冲区的存储容量可以相同也可以不同,本发明实施例对此不做具体限定。
202、协调服务器在接收到新增的多分区事务的时间戳后,判断备集群的每个分区的多分区事务的时间戳是否完全重合,若不完全重合,则执行下述步骤203,若完全重合,则执行下述步骤204。
在本发明实施例中,协调服务器用于维护备集群中每个分区的多分区事务的时间戳,具体地,协调服务器可以维护一张时间戳存储表,其中为备集群中每个分区开辟了对应的时间戳存储区域,用于存储每个分区的多分区事务的时间戳。其中,时间戳存储表的形式可以如表1所示。
表1
分区 | 多分区事务的时间戳 |
分区一 | 4,11,15 |
分区二 | 4,11 |
分区三 | 4,11,13 |
…… | …… |
具体地,协调服务器接收备集群的第一分区中新增的多分区事务的时间戳,并将该多分区事务的时间戳存储至该第一分区的时间戳存储区域。之后,判断备集群的每个分区的多分区事务的时间戳是否完全重合,也即是,判断备集群的每个分区的多分区事务的时间戳中是否存在最小时间戳,该最小时间戳为至少在一个分区的时间戳存储区域中不存在的多分区事务的时间戳。
需要说明的是,协调服务器在接收到备集群中的分区发送的新增的多分区事务的时间戳后,可以不用判断即可获知备集群的每个分区的多分区事务的时间戳是否完全重合,本发明实施例对是否存在判断步骤不做具体限定。
203、若备集群的每个分区的多分区事务的时间戳不完全重合,则协调服务器确定备集群的每个分区的多分区事务的时间戳的交集,从除交集以外的多分区事务的时间戳中,获取数值最小的时间戳作为第一分区的目标时间戳。
在分发明实施例中,若备集群的每个分区的多分区事务的时间戳不完全重合,也即是,备集群的每个分区的多分区事务的时间戳中存在最小时间戳,说明备集群中每个分区中包含的多分区事务不一致,则为了保证每个分区的数据处理的一致性,协调服务器可以从除交集以外的多分区事务的时间戳中,获取第一分区的目标时间戳,该第一分区的目标时间戳用于指示第一分区可以执行的多分区事务的信息,也即是,指示第一分区可以执行的日志记录,以避免第一分区执行其他分区中未包含的多分区事务日志记录,造成各分区的数据不一致。
其中,获取第一分区的目标时间戳的过程可以为:确定备集群的每个分区重合的多分区事务的时间戳,也即是,确定备集群的每个分区的多分区事务的时间戳的交集;从除交集以外的多分区事务的时间戳中,获取数值最小的时间戳作为第一分区的目标时间戳。
例如,备集群中包含两个分区,分区一和分区二,图3为一种备集群包含的分区与协调服务器交互的示意图。在图3中,分区一的日志缓冲区中包含事务对应的时间戳为4、5、6、11、13、14、15,其中,4、11、15为多分区事务的时间戳,其余的为单分区事务的时间戳。分区二的日志缓冲区中包含事务对应的时间戳为3、4、7、8、9、10,其中,4为多分区事务的时间戳,其余的为单分区事务的时间戳。
以分区达到触发条件时向协调服务器发送新增的多分区事务的时间戳为例,假如,此时分区二的日志缓冲区达到触发条件,4为该分区新增的多分区事务的时间戳,则分区二将多分区事务的时间戳4发送至协调服务器,协调服务器将该多分区事务的时间戳存储至分区二的时间戳存储区域中。如图3所示,分区一的时间戳存储区域中包括多分区事务的时间戳4、11、15,分区二的时间戳存储区域中包括多分区事务的时间戳4,说明备集群的分区二中不包含多分区事务的时间戳11和15对应的日志记录。协调服务器可以明显获知分区一和分区二的多分区事务的时间戳不完全重合,且二者的多分区事务的时间戳的交集为4,除交集以外的多分区事务的时间戳为11和15,则协调服务器在11和15中,选取数值最小的时间戳作为目标时间戳,也即是,选取多分区事务的时间戳11作为分区二的目标时间戳。
在另一实施例中,为了使获取到的第一分区的目标时间戳更加满足第一分区内当前事务的执行情况,协调服务器还可以在确定备集群的每个分区的多分区事务的时间戳的交集之后,在第一分区中除交集以外的多分区事务的时间戳中,获取数值最小的时间戳作为第一分区的目标时间戳。
204、若每个分区的多分区事务的时间戳完全重合,则协调服务器将第一指定时间戳作为第一分区的目标时间戳,第一指定时间戳用于指示第一分区执行分区内复制日志中的日志记录,直到遇到下第一个新增的多分区事务的日志记录时停止执行。
其中,第一指定时间戳的具体内容可以进行预先设置,比如,第一指定时间戳的数值可以为0或无穷大,或者第一指定时间戳可以是一个特殊字符串,比如,“execute all”等,本发明实施例对第一指定时间戳的具体内容不做具体限定。
具体地,若备集群的每个分区的多分区事务的时间戳完全重合,也即是,不存在最小时间戳,说明备集群中每个分区中包含的多分区事务完全一致,此时,协调服务器获取第一指定时间戳,并将该第一指定时间戳作为目标时间戳,该目标时间戳用于指示第一分区可以执行分区内所有事务的日志记录,且不会造成第一分区与备集群中其他分区的数据不一致。
例如,备集群中包含两个分区,分区一和分区二,图4为一种备集群包含的分区与协调服务器交互的示意图。在图4中,分区一的日志缓冲区中包含事务对应的时间戳为4、5、6、11、13、14,其中,4、11为多分区事务的时间戳,其余的为单分区事务时间戳。分区二的日志缓冲区中包含事务对应的时间戳为3、4、7、8、9、10、11,其中,4、11为多分区事务的时间戳,其余的为单分区事务时间戳。
以分区的触发条件为日志缓冲区满为例,假如,此时分区二的日志缓冲区达到触发条件,11为该分区新增的多分区事务的时间戳,则分区二将多分区事务的时间戳11发送至协调服务器,协调服务器将该多分区事务的时间戳存储至分区二的时间戳存储区域中。如图4所示,分区一的时间戳存储区域中包括多分区事务的时间戳4、11,分区二的时间戳存储区域中包括多分区事务的时间戳4、11,说明备集群的两个分区中均包含多分区事务的时间戳4和11对应的日志记录。协调服务器可以明显获知分区一和分区二的多分区事务的时间戳完全重合,因此,协调服务器确定第一指定时间戳为分区二的目标时间戳。
需要说明的是,上述步骤202至步骤204详细介绍了如下过程,使得协调服务器可以根据维护的备集群中每个分区的多分区事务的时间戳,协调备集群的各个分区执行分区内的复制日志,过程可包括:协调服务器根据接收到新增的多分区事务的时间戳以及协调服务器存储的备集群的每个分区的多分区事务的时间戳,确定第一分区的目标时间戳。具体的可以为,协调服务器接收到第一分区发送的新增的多分区事务的时间戳后,更新本地存储的第一分区的多分区事务的时间戳,并根据更新后的各分区的多分区事务的时间戳,确定第一分区的目标时间戳。
需要说明的是,若在步骤201中,如果第一分区达到触发条件时,未获取到新增的多分区事务的时间戳,也即是,在上一次向协调服务器发送新增的多分区事务的时间戳后,第一分区未接收到主集群中对应分区发送的多分区事务的复制日志。此时,第一分区可以向协调服务器发送指定标识,该指定标识用于指示第一分区中没有新增加的多分区事务的时间戳。协调服务器在接收到第一分区发送的指定标识后,采用上述步骤202至步骤204相同的方式获取第一分区的目标时间戳后,再执行下述步骤205和步骤206。
205、协调服务器向第一分区发送目标时间戳。
在本发明实施例中,第一分区在接收到目标时间戳后,可以向协调服务器反馈确认消息。若协调服务器在向第一分区发送目标时间戳后,在指定时间内未接收到第一分区的确认消息,则向第一分区重新发送该目标时间戳,以保证第一分区能够接收到该目标时间戳。
206、第一分区根据目标时间戳,执行第一分区中的复制日志。
在本发明实施例中,第一分区执行第一分区的复制日志的过程可以为:若第一分区的目标时间戳为交集以外的多分区事务的时间戳中数值最小的时间戳,则执行第一分区的复制日志中目标时间戳对应的多分区事务之前的日志记录;若目标时间戳为第一指定时间戳,则执行第一分区内复制日志中的所有日志记录,直到遇到下一个新增多分区事务的日志记录时停止执行。
具体地,第一分区在接收到目标时间戳后,可以判断该目标时间戳是否为第一指定时间戳;若该目标时间戳不是第一指定时间戳,则确定该目标时间戳为交集以外的多分区事务的时间戳中数值最小的时间戳,并根据该目标时间戳指示的数值,在第一分区存储的复制日志中,获取时间戳比目标时间戳小的时间戳以及对应的待执行日志记录,并执行该待执行日志记录。若该目标时间戳是第一指定时间戳,则执行第一分区内复制日志中的日志记录,直到遇到下一个新增多分区事务的日志记录时停止执行。其中,下一个新增多分区事务是指第一分区在接收到目标时间戳之后,第一分区接收到的主集群对应分区发送的第一个多分区事务。
需要说明的是,当第一分区执行了复制日志中的任一日志记录后,在复制日志中删除该执行过的日志记录。
以上述步骤203给出的例子为例,对上述目标时间戳为备集群中各分区的多分区事务的时间戳的交集以外的时间戳中数值最小的时间戳的情况进行解释说明。参见图3,协调服务器在选取多分区事务的时间戳11作为分区二的目标时间戳后,将该目标时间戳发送至分区二。假如第一指定时间戳为“0”,则分区二在接收到目标时间戳后,确定该目标时间戳不是第一指定时间戳“0”,则可以根据多分区事务的时间戳指示的数值11,在存储的复制日志中,获取到时间戳小于11的时间戳包括时间戳3、4、7、8、9、10。之后,分区二执行时间戳3、4、7、8、9、10对应的日志记录。
以上述步骤204给出的例子为例,对上述目标时间戳是第一指定时间戳的情况进行解释说明。参见图4,协调服务器将第一指定时间戳作为分区二的目标时间戳发送至分区二,假如第一指定时间戳为“0”。分区二在接收到目标时间戳后,根据该目标时间戳的内容是“0”,确定该目标时间戳为第一指定时间戳。根据第一指定时间戳指示的复制日志执行方式,执行分区内的日志记录,直到遇到后续第一个新增多分区事务的日志记录时停止执行,由于当前分区二中除了现有的多分区事务4和11外还未接收到新增多分区事务的日志记录,因此,分区二会执行时间戳为3、4、7、8、9、10、11的日志记录。
本发明实施例提供的方法,备集群中每个分区将包含的所有多分区事务的时间戳发送至协调服务器,使得协调服务器可以根据备集群中每个分区包含多分区事务的情况,确定哪些多分区事务在所有分区中都已经存在,哪些多分区事务不是在所有分区中都存在,并通过目标时间戳告知相应分区能够执行哪些日志记录,使得相应分区能够执行在所有分区中都存在但未必执行的多分区事务,不必每遇到一个多分区事务就进入等待状态,避免了各分区的数据不一致。
图5是本发明实施例提供的一种分布式***的数据库复制方法的流程图,参见图5,本发明实施例提供的方法流程包括:
501、第一分区向备集群中的协调服务器发送第一分区中新增的多分区事务的时间戳。
具体地,本步骤与上述步骤201的内容相同,在此不再赘述。
502、协调服务器在接收到新增的多分区事务的时间戳后,确定备集群的每个分区的多分区事务的时间戳的交集,并判断该交集是否为空集;若该交集不为空集,则执行下述步骤503,若该交集为空集,则执行下述步骤504。
在本发明实施例中,协调服务器用于维护备集群中每个分区的多分区事务的时间戳,具体地,协调服务器可以维护一张时间戳存储表,其中为备集群中每个分区开辟了对应的时间戳存储区域,用于存储每个分区的多分区事务的时间戳。其中,时间戳存储表的形式可以如表2所示。
表2
分区 | 多分区事务的时间戳 |
分区一 | 4,11,15 |
分区二 | 4,11 |
分区三 | 4,11,13 |
…… | …… |
具体地,协调服务器接收备集群的第一分区中新增的多分区事务的时间戳,并将该多分区事务的时间戳存储至该第一分区的时间戳存储区域。之后,确定每个分区的多分区事务的时间戳的交集,并判断该交集是否为空集,也即是,判断每个分区的多分区事务的时间戳中是否存在最大时间戳,该最大时间戳为在所有多分区的时间戳存储区域中,都存在的多分区事务的时间戳中数值最大的时间戳。
需要说明的是,协调服务器在确定每个分区的多分区事务的时间戳之间的交集后,可以不用判断即可获知交集是否为空集,本发明实施例对是否存在判断步骤不做具体限定。
503、若该交集不为空集,则协调服务器从该交集中获取数值最大的时间戳作为第一分区的目标时间戳。
在本发明实施例中,若该交集不为空集,也即是,备集群的每个分区的多分区事务的时间戳中存在最大时间戳,说明备集群中每个分区中包含有相同的多分区事务,则为了保证每个分区的数据处理的一致性,协调服务器可以在该交集中,将数值最大的时间戳确定为目标时间戳,该目标时间戳用于告知第一分区可以执行的日志记录,以避免第一分区执行了其他分区中未包含的多分区事务日志记录,造成各分区的数据不一致。
例如,备集群中包含两个分区,分区一和分区二,图6为一种备集群包含的分区与协调服务器交互的示意图。在图6中,分区一的日志缓冲区中包含事务对应的时间戳为4、5、6、11、13、14、15,其中,4、11、15为多分区事务的时间戳,其余的为单分区事务的时间戳。分区二的日志缓冲区中包含事务对应的时间戳为3、4、7、8、9、10、11,其中,4、11为多分区事务的时间戳,其余的为单分区事务的时间戳。
以分区的触发条件为日志缓冲区满为例,假如,此时分区一的日志缓冲区达到触发条件,11、15为该分区新增的多分区事务的时间戳,则分区一将多分区事务的时间戳11、15发送至协调服务器,协调服务器将该多分区事务的时间戳存储至分区一的时间戳存储区域中。如图6所示,分区一的时间戳存储区域中包括多分区事务的时间戳4、11、15,分区二的时间戳存储区域中包括多分区事务的时间戳4、11,说明备集群的两个分区中均包含多分区事务的时间戳4和11对应的日志记录。协调服务器可以明显获知分区一和分区二的多分区事务的时间戳的交集为4、11,则协调服务器在交集中,选取数值最大的时间戳作为目标时间戳,即获取4和11中最大的时间戳,因此,协调服务器选取多分区事务的时间戳11作为目标时间戳。
504、若该交集为空集,则协调服务器将第二指定时间戳作为第一分区的目标时间戳,第二指定时间戳用于指示第一分区依次执行分区内复制日志中的日志记录,直到遇到多分区事务的日志记录时停止执行。
其中,第二指定时间戳的具体内容可以进行预先设置,比如,第二指定时间戳的数值可以为0或无穷大,或者第二指定时间戳可以是一个特殊字符串,比如,“executesingle”等,本发明实施例对第二指定时间戳的具体内容不做具体限定。
具体地,若该交集为空集,也即是,不存在最大时间戳,说明备集群中每个分区中不包含相同的多分区事务,此时,协调服务器获取第二指定时间戳,并将该第二指定时间戳作为第一分区的目标时间戳,该目标时间戳用于指示第一分区可以继续执行分区内的单分区事务的日志记录,以避免由于执行了多分区事务造成各分区的数据不一致。
例如,备集群中包含两个分区,分区一和分区二,图7为一种备集群包含的分区与协调服务器交互的示意图。在图7中,分区一的日志缓冲区中包含事务对应的时间戳为1、2、4、5、6、7,其中,4为多分区事务的时间戳,其余的为单分区事务时间戳。分区二的日志缓冲区中包含事务对应的时间戳为3,其中,3为单分区事务时间戳。
以分区的触发条件为日志缓冲区满为例,假如,此时分区一的日志缓冲区达到触发条件,4为该分区新增的多分区事务的时间戳,则分区一将多分区事务的时间戳4发送至协调服务器,协调服务器将该多分区事务的时间戳存储至分区一的时间戳存储区域中。如图7所示,分区一的时间戳存储区域中包括多分区事务的时间戳4,分区二的时间戳存储区域中没有多分区事务的时间戳,说明备集群的两个分区二中不包含相同的多分区事务的时间戳。因此,协调服务器确定第二指定时间戳为分区一的目标时间戳,以便第一分区继续执行分区内的单分区事务的日志记录。
上述步骤502至步骤504详细介绍了如下过程,使得协调服务器可以根据维护的备集群的多分区事务的时间戳,协调备集群的各个分区执行分区内的复制日志,过程可包括:协调服务器根据接收到新增的多分区事务的时间戳以及协调服务器存储的备集群的每个分区的多分区事务的时间戳,确定第一分区的目标时间戳。
需要说明的是,若在步骤501中,如果第一分区的达到触发条件时,未获取到新增的多分区事务的时间戳,也即是,在上一次向协调服务器发送新增的多分区事务的时间戳后,第一分区未接收到主集群中对应分区发送的多分区事务的复制日志。此时,第一分区可以向协调服务器发送指定标识,该指定标识用于指示第一分区中没有新增加的多分区事务的时间戳。协调服务器在接收到第一分区发送的指定标识后,采用上述步骤502至步骤504相同的方式获取第一分区的目标时间戳后,再执行下述步骤505和步骤506。
505、协调服务器向第一分区发送目标时间戳。
具体地,该步骤与上述步骤205的内容相同,在此不再赘述。
506、第一分区根据目标时间戳,执行第一分区中的复制日志。
在本发明实施例中,第一分区执行第一分区的复制日志的过程可以为:若第一分区的目标时间戳为交集中数值最大的时间戳,则执行第一分区中该目标时间戳之后的第一个多分区事务的时间戳对应的多分区事务之前的日志记录;若第一分区的目标时间戳为第二指定时间戳,则依次执行第一分区中的日志记录,直到遇到多分区事务的日志记录时停止执行。
具体地,第一分区在接收到目标时间戳后,可以判断该目标时间戳是否为第二指定时间戳;若该目标时间戳不是第二指定时间戳,则确定该目标时间戳为交集中数值最大的时间戳,根据该目标时间戳指示的数值,执行复制日志中的日志记录,如果第一分区存储的日志记录中,存在比目标时间戳的数值大的多分区事务日志记录,则获取目标时间戳对应的多分区事务之后第一个多分区事务,并执行该第一个多分区事务的时间戳之前的日志记录;如果第一分区存储的日志记录中,不存在比目标时间戳的数值大的多分区事务日志记录,则执行第一分区中的所有日志记录,直到遇到后续新增的第一个多分区事务的日志记录时停止执行。若该目标时间戳是第二指定时间戳,则继续执行当前分区中的日志记录,若即将执行的日志记录对应单分区事务,则执行该日志记录;若即将执行的日志记录对应多分区事务,则停止执行。
需要说明的是,当第一分区执行了复制日志中的任一日志记录后,在复制日志中删除该执行过的日志记录。
以上述步骤503给出的例子为例,对上述目标时间戳为交集中数值最大的时间戳的情况进行解释说明。参见图6,协调服务器在选取多分区事务的时间戳11作为分区一目标时间戳后,将该目标时间戳发送至分区一。假如第二指定时间戳为“0”,则分区一在接收到目标时间戳后,确定该目标时间戳不是第一指定时间戳“0”,则由于目标时间戳指示的多分区事务的时间戳为11,且第一分区中时间戳11之后的第一个多分区事务的时间戳为15,因此,第一分区会执行时间戳15之前的时间戳对应的日志记录,也即是,分区二执行时间戳4、5、6、11、13、14对应的日志记录。
以上述步骤504给出的例子为例,对上述目标时间戳是第二指定时间戳的情况进行解释说明。参见图7,协调服务器将第二指定时间戳作为目标时间戳发送至分区一,假如第二指定时间戳为“0”。分区一在接收到目标时间戳后,根据该目标时间戳的内容是“0”,确定该目标时间戳为第二指定时间戳。根据第二指定时间戳指示的复制日志执行方式,继续执行分区内的日志记录,如图7所示,分区一中即将执行的日志记录为时间戳为1的日志记录,由于时间戳1对应单分区事务,因此执行该日志记录,之后,执行时间戳为2对应单分区事务的日志记录。当遇到时间戳2对应的日志记录时,由于时间戳4对应多分区事务,因此,停止执行。
本发明实施例提供的方法,备集群中每个分区将包含的所有多分区事务的时间戳发送至协调服务器,使得协调服务器可以根据备集群每个分区包含多分区事务的情况,确定哪些多分区事务在所有分区中都已经存在,哪些多分区事务不是在所有分区中都存在,并通过目标时间戳告知相应分区能够执行哪些日志记录,使得相应分区能够执行在所有分区中都存在但未必执行的多分区事务,不必每遇到一个多分区事务就进入等待状态,避免了各分区的数据不一致。
本发明实施例提供了一种分布式***,该***包括主集群和备集群,主集群和备集群分别包括数据库的多个分区,且主集群中的多个分区与备集群中的多个分区一一对应,主集群中的每个分区将本分区的复制日志发送至备集群中的对应分区,复制日志中记录数据操作的事务,备集群还包括协调服务器,
备集群中的第一分区用于向协调服务器发送第一分区中新增的多分区事务的时间戳,新增的多分区事务为第一分区自上一次完成向协调服务器发送多分区事务的时间戳后,收到的主集群中的对应分区发送的复制日志中记录的事务中的多分区事务;
协调服务器用于根据接收到新增的多分区事务的时间戳以及协调服务器存储的备集群的每个分区的多分区事务的时间戳,确定第一分区的目标时间戳,所述目标时间戳用于指示所述第一分区可以执行的多分区事务的信息;协调服务器还用于向第一分区发送该目标时间戳;
第一分区还用于根据该目标时间戳,执行第一分区中的复制日志。
本发明实施例提供的***,备集群中每个分区将包含的所有多分区事务时间戳发送至协调服务器,使得协调服务器可以根据备集群中每个分区包含多分区事务的情况,确定哪些多分区事务在所有分区中都已经存在,哪些多分区事务不是在所有分区中都存在,并通过目标时间戳告知相应分区能够执行哪些日志记录,使得相应分区能够执行在所有分区中都存在但未必执行的多分区事务,不必每遇到一个多分区事务就进入等待状态,避免了各分区的数据不一致。
图8是本发明实施例提供的一种分布式***的数据库复制装置的框图,包括:接收模块801,获取模块802和发送模块803。
其中,接收模块801与获取模块802连接,用于接收备集群的第一分区中新增的多分区事务的时间戳,新增的多分区事务为第一分区自上一次完成发送多分区事务的时间戳后,收到的主集群中的对应分区发送的复制日志中记录的事务中的多分区事务;获取模块802与发送模块803连接,用于根据接收到新增的多分区事务的时间戳以及存储的备集群的每个分区的多分区事务的时间戳,确定第一分区的目标时间戳,所述目标时间戳用于指示所述第一分区可以执行的多分区事务的信息;发送模块803,用于向第一分区发送目标时间戳,由第一分区根据目标时间戳执行第一分区中的复制日志。
可选地,获取模块802用于判断备集群的每个分区的多分区事务的时间戳是否完全重合;若备集群的每个分区的多分区事务的时间戳不完全重合,则确定备集群的每个分区的多分区事务的时间戳的交集,从备集群的每个分区除交集以外的多分区事务的时间戳中,获取数值最小的时间戳作为第一分区的目标时间戳,数值最小的时间戳用于指示第一分区执行第一分区的复制日志中该目标时间戳对应的多分区事务之前的日志记录;若每个分区的多分区事务时间戳完全重合,则将第一指定时间戳作为作为第一分区的目标时间戳,第一指定时间戳用于指示第一分区执行分区内复制日志中的日志记录,直到遇到下一个新增的多分区事务的日志记录时停止执行。协调服务器通过维护的每个分区包含多分区事务的时间戳,可以确定哪些多分区事务在所有分区中都已经存在,哪些多分区事务不是在所有分区中都存在,并通过目标时间戳告知相应分区能够执行哪些日志记录,使得相应分区能够执行在所有分区中都存在但未必执行的多分区事务,不必每遇到一个多分区事务就进入等待状态,避免备集群中各分区的数据不一致。
可选地,获取模块802用于确定备集群的每个分区的多分区事务的时间戳的交集,并判断交集是否为空集;若交集不为空集,则从交集中获取数值最大的时间戳作为第一分区的目标时间戳,数值最大的时间戳用于指示第一分区执行第一分区中该目标时间戳之后的第一个多分区事务的时间戳对应的多分区事务之前的日志记录;若交集为空集,则将第二指定时间戳作为第一分区的目标时间戳,第二指定时间戳用于指示第一分区依次执行分区内复制日志中的日志记录,直到遇到多分区事务的日志记录时停止执行。协调服务器通过维护的每个分区包含多分区事务的时间戳,可以确定哪些多分区事务在所有分区中都已经存在,哪些多分区事务不是在所有分区中都存在,并通过目标时间戳告知相应分区能够执行哪些日志记录,使得相应分区能够执行在所有分区中都存在但未必执行的多分区事务,不必每遇到一个多分区事务就进入等待状态,在避免了数据不一致的同时,提高了复制效率,使得该种数据库复制方法性能好。
本发明实施例提供的装置,备集群中每个分区将包含的所有多分区事务时间戳发送至协调服务器,使得协调服务器可以根据每个分区包含多分区事务的情况,确定哪些多分区事务在所有分区中都已经存在,哪些多分区事务不是在所有分区中都存在,并通过目标时间戳告知相应分区能够执行哪些日志记录,使得相应分区能够执行在所有分区中都存在但未必执行的多分区事务,不必每遇到一个多分区事务就进入等待状态,避免备集群中各分区的数据不一致。
图9是本发明实施例提供的一种分布式***的数据库复制装置的框图,包括:发送模块901和执行模块902。
其中,发送模块901与接收模块902连接,用于向备集群中的协调服务器发送第一分区中新增的多分区事务的时间戳,由协调服务器根据接收到所述新增的多分区事务的时间戳以及存储的备集群的每个分区的多分区事务的时间戳,确定第一分区的目标时间戳,并向第一分区发送该目标时间戳,所述目标时间戳用于指示所述第一分区可以执行的多分区事务的信息;执行模块902,用于根据第一分区的目标时间戳,执行第一分区内的复制日志。
可选地,执行模块902用于若第一分区的目标时间戳为备集群的每个分区的交集以外的多分区事务的时间戳中数值最小的时间戳,则执行第一分区的复制日志中该目标时间戳对应的多分区事务之前的日志记录;若目标时间戳为第一指定时间戳,则执行第一分区内复制日志中的日志记录,直到遇到下一个新增多分区事务的日志记录时停止执行,所述第一指定时间戳指示所述备集群的每个分区的多分区事务的时间戳完全重合。根据第一分区的目标时间戳执行日志记录,可以保证执行的多分区事务在所有分区中都存在,不必每遇到一个多分区事务就进入等待状态,避免了第一分区与备集群中其他分区之间的数据不一致。
可选地,执行模块902用于若第一分区的目标时间戳为备集群的每个分区的多分区事务的时间戳的交集中数值最大的时间戳,则执行第一分区中该目标时间戳之后的第一个多分区事务的时间戳对应的多分区事务之前的日志记录;若第一分区的目标时间戳为第二指定时间戳,则依次执行第一分区中的日志记录,直到遇到多分区事务的日志记录时停止执行,所述第二指定时间戳指示所述备集群的每个分区的多分区事务的时间戳的交集为空集。根据第一分区的目标时间戳执行日志记录,可以保证执行的多分区事务在所有分区中都存在,不必每遇到一个多分区事务就进入等待状态,避免了第一分区与备集群中其他分区之间的数据不一致。
本发明实施例提供的装置,备集群中每个分区将包含的所有多分区事务时间戳发送至协调服务器,使得协调服务器可以根据每个分区包含多分区事务的情况,确定哪些多分区事务在所有分区中都已经存在,哪些多分区事务不是在所有分区中都存在,并通过目标时间戳告知相应分区能够执行哪些日志记录,使得相应分区能够执行在所有分区中都存在但未必执行的多分区事务,不必每遇到一个多分区事务就进入等待状态,避免了备集群中各分区的数据不一致。
需要说明的是:上述实施例提供的数据传输装置在进行数据传输时,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将装置的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。另外,上述实施例提供的数据传输装置与数据传输方法实施例属于同一构思,其具体实现过程详见方法实施例,这里不再赘述。
图10是本发明实施例示出的一种协调服务器的结构示意图。该协调服务器用于实现上述方法中的协调服务器所执行的方法。参照图10,协调服务器包括处理组件1022,其进一步包括一个或多个处理器,以及由存储器1032所代表的存储器资源,用于存储可由处理组件1022的执行的指令,例如应用程序。存储器1032中存储的应用程序可以包括一个或一个以上的每一个对应于一组指令的模块。此外,处理组件1022被配置为执行指令,以执行下述步骤:
接收备集群的第一分区中新增的多分区事务的时间戳,所述新增的多分区事务为所述第一分区自上一次完成发送多分区事务的时间戳后,收到的主集群中的对应分区发送的复制日志中记录的事务中的多分区事务;根据接收到所述新增的多分区事务的时间戳以及存储的所述备集群的每个分区的多分区事务的时间戳,确定所述第一分区的目标时间戳,所述目标时间戳用于指示所述第一分区可以执行的多分区事务的信息;向所述第一分区发送所述目标时间戳,由所述第一分区根据所述目标时间戳执行所述第一分区中的复制日志。
可选地,所述根据接收到所述新增的多分区事务的时间戳以及存储的所述备集群的每个分区的多分区事务的时间戳,确定所述第一分区的目标时间戳包括:
判断所述备集群的每个分区的多分区事务的时间戳是否完全重合;若所述备集群的每个分区的多分区事务的时间戳不完全重合,则确定所述备集群的每个分区的多分区事务的时间戳的交集,从所述备集群的每个分区除所述交集以外的多分区事务的时间戳中,获取数值最小的时间戳作为所述第一分区的目标时间戳,所述数值最小的时间戳用于指示所述第一分区执行所述第一分区的复制日志中所述目标时间戳对应的多分区事务之前的日志记录;若所述每个分区的多分区事务时间戳完全重合,则将第一指定时间戳作为作为所述第一分区的目标时间戳,所述第一指定时间戳用于指示所述第一分区执行分区内复制日志中的日志记录,直到遇到下一个新增的多分区事务的日志记录时停止执行。协调服务器通过维护的每个分区包含多分区事务的时间戳,可以确定哪些多分区事务在所有分区中都已经存在,哪些多分区事务不是在所有分区中都存在,并通过目标时间戳告知相应分区能够执行哪些日志记录,使得相应分区能够执行在所有分区中都存在但未必执行的多分区事务,不必每遇到一个多分区事务就进入等待状态,避免了备集群中各分区的数据不一致。
可选地,所述根据接收到所述新增的多分区事务的时间戳以及存储的所述备集群的每个分区的多分区事务的时间戳,确定所述第一分区的目标时间戳包括:确定所述所述备集群的每个分区的多分区事务的时间戳的交集,并判断所述交集是否为空集;若所述交集不为空集,则从所述交集中获取数值最大的时间戳作为所述第一分区的目标时间戳,所述数值最大的时间戳用于指示所述第一分区执行所述第一分区中所述目标时间戳之后的第一个多分区事务的时间戳对应的多分区事务之前的日志记录;若所述交集为空集,则将第二指定时间戳作为所述第一分区的目标时间戳,所述第二指定时间戳用于指示所述第一分区依次执行分区内复制日志中的日志记录,直到遇到多分区事务的日志记录时停止执行。通过向第一分区发送目标时间戳,使得第一分区可以通过根据目标时间戳执行分区内的日志记录,保证了第一分区与备集群中其他分区之间的数据一致性。
协调服务器还可以包括一个电源组件1026被配置为执行协调服务器的电源管理,一个有线或无线网络接口1050被配置为将协调服务器连接到网络,和一个输入输出(I/O)接口1058。协调服务器可以操作基于存储在存储器1032的操作***,例如WindowsServerTM,Mac OS XTM,UnixTM,LinuxTM,FreeBSDTM或类似。
本发明实施例提供的协调服务器,通过维护的每个分区包含多分区事务的时间戳,可以确定哪些多分区事务在所有分区中都已经存在,哪些多分区事务不是在所有分区中都存在,并通过目标时间戳告知相应分区能够执行哪些日志记录,使得相应分区能够执行在所有分区中都存在但未必执行的多分区事务,不必每遇到一个多分区事务就进入等待状态,避免了备集群中各分区的数据不一致。
图11是本发明实施例示出的一种分布式***的数据库复制装置的结构示意图。参照图11,包括处理组件1122,其进一步包括一个或多个处理器,以及由存储器1132所代表的存储器资源,用于存储可由处理组件1122的执行的指令,例如应用程序。存储器1132中存储的应用程序可以包括一个或一个以上的每一个对应于一组指令的模块。此外,处理组件1122被配置为:
向协调服务器发送第一分区中新增的多分区事务的时间戳,由协调服务器根据接收到新增的多分区事务的时间戳以及存储的备集群的每个分区的多分区事务的时间戳,确定第一分区的目标时间戳,并向第一分区发送第一分区的目标时间戳,该目标时间戳用于指示第一分区可以执行的多分区事务的信息;根据第一分区的目标时间戳,执行第一分区内的复制日志。
可选地,处理器还被配置为:若第一分区的目标时间戳为备集群的每个分区的多分区事务的时间戳的交集以外的多分区事务的时间戳中数值最小的时间戳,则执行第一分区的复制日志中目标时间戳对应的多分区事务之前的日志记录;若目标时间戳为第一指定时间戳,则执行第一分区内复制日志中的日志记录,直到遇到下一个新增多分区事务的日志记录时停止执行,第一指定时间戳指示备集群的每个分区的多分区事务的时间戳完全重合。第一分区根据目标时间戳执行日志记录,可以保证执行的多分区事务在所有分区中都存在,不必每遇到一个多分区事务就进入等待状态,避免了第一分区与备集群中其他分区之间的数据不一致。
可选地,处理器还被配置为:若第一分区的目标时间戳为备集群的每个分区的多分区事务的时间戳的交集中数值最大的时间戳,则执行第一分区中目标时间戳之后的第一个多分区事务的时间戳对应的多分区事务之前的日志记录;若第一分区的目标时间戳为第二指定时间戳,则依次执行第一分区中的日志记录,直到遇到多分区事务的日志记录时停止执行,第二指定时间戳指示备集群的每个分区的多分区事务的时间戳的交集为空集。第一分区根据目标时间戳执行日志记录,可以保证执行的多分区事务在所有分区中都存在,不必每遇到一个多分区事务就进入等待状态,避免了第一分区与备集群中其他分区之间的数据不一致。
本发明实施例提供的装置,根据第一分区的目标时间戳执行日志记录,可以保证执行的多分区事务在所有分区中都存在,不必每遇到一个多分区事务就进入等待状态,避免了第一分区与备集群中其他分区之间的数据不一致。
本领域普通技术人员可以理解实现上述实施例的全部或部分步骤可以通过硬件来完成,也可以通过程序来指令相关的硬件完成,所述的程序可以存储于一种计算机可读存储介质中,上述提到的存储介质可以是只读存储器,磁盘或光盘等。
以上所述仅为本发明的较佳实施例,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (20)
1.一种分布式***的数据库复制方法,其特征在于,所述分布式***包括主集群和备集群,所述主集群和所述备集群分别包括数据库的多个分区,且所述主集群中的多个分区与所述备集群中的多个分区一一对应,所述主集群中的每个分区将本分区的复制日志发送至所述备集群中的对应分区,所述复制日志中记录数据操作的事务;
所述备集群中的第一分区向协调服务器发送所述第一分区中新增的多分区事务的时间戳,所述新增的多分区事务为所述第一分区自上一次完成向所述协调服务器发送多分区事务的时间戳后,收到的所述主集群中的对应分区发送的复制日志中记录的事务中的多分区事务;
判断所述备集群的每个分区的多分区事务的时间戳是否完全重合;
若所述备集群的每个分区的多分区事务的时间戳完全重合,则将第一指定时间戳作为所述第一分区的目标时间戳,所述第一指定时间戳用于指示所述第一分区执行分区内复制日志中的日志记录,直到遇到下一个新增的多分区事务的日志记录时停止执行,所述目标时间戳用于指示所述第一分区可以执行的多分区事务的信息;
所述协调服务器向所述第一分区发送所述目标时间戳;
所述第一分区根据所述目标时间戳,执行所述第一分区中的复制日志。
2.根据权利要求1所述的方法,其特征在于,所述判断所述备集群的每个分区的多分区事务的时间戳是否完全重合之后,所述方法还包括:
若所述备集群的每个分区的多分区事务的时间戳不完全重合,则确定所述备集群的每个分区的多分区事务的时间戳的交集,从所述备集群的每个分区除所述交集以外的多分区事务的时间戳中,获取数值最小的时间戳作为所述第一分区的目标时间戳。
3.根据权利要求2所述的方法,其特征在于,所述第一分区根据所述目标时间戳,执行所述第一分区中的复制日志包括:
若所述第一分区的目标时间戳为所述交集以外的多分区事务的时间戳中数值最小的时间戳,则执行所述第一分区的复制日志中所述目标时间戳对应的多分区事务之前的日志记录;
若所述目标时间戳为所述第一指定时间戳,则执行所述第一分区内复制日志中的日志记录,直到遇到下一个新增多分区事务的日志记录时停止执行。
4.根据权利要求1所述的方法,其特征在于,所述方法还包括:
确定所述备集群的每个分区的多分区事务的时间戳的交集,并判断所述交集是否为空集;
若所述交集不为空集,则从所述交集中获取数值最大的时间戳作为所述第一分区的目标时间戳;
若所述交集为空集,则将第二指定时间戳作为所述第一分区的目标时间戳,所述第二指定时间戳用于指示所述第一分区依次执行分区内复制日志中的日志记录,直到遇到多分区事务的日志记录时停止执行。
5.根据权利要求4所述的方法,其特征在于,所述第一分区根据所述目标时间戳,执行所述第一分区中的复制日志包括:
若所述第一分区的目标时间戳为所述交集中数值最大的时间戳,则执行所述第一分区中所述目标时间戳之后的第一个多分区事务的时间戳对应的多分区事务之前的日志记录;
若所述第一分区的目标时间戳为所述第二指定时间戳,则依次执行所述第一分区中的日志记录,直到遇到多分区事务的日志记录时停止执行。
6.一种分布式***,其特征在于,所述***包括主集群和备集群,所述主集群和所述备集群分别包括数据库的多个分区,且所述主集群中的多个分区与所述备集群中的多个分区一一对应,所述主集群中的每个分区将本分区的复制日志发送至所述备集群中的对应分区,所述复制日志中记录数据操作的事务,所述备集群还包括协调服务器;
所述备集群中的第一分区用于向所述协调服务器发送所述第一分区中新增的多分区事务的时间戳,所述新增的多分区事务为所述第一分区自上一次完成向所述协调服务器发送多分区事务的时间戳后,收到的所述主集群中的对应分区发送的复制日志中记录的事务中的多分区事务;
所述协调服务器用于判断所述备集群的每个分区的多分区事务的时间戳是否完全重合;若所述备集群的每个分区的多分区事务的时间戳完全重合,则将第一指定时间戳作为所述第一分区的目标时间戳,所述第一指定时间戳用于指示所述第一分区执行分区内复制日志中的日志记录,直到遇到下一个新增的多分区事务的日志记录时停止执行,所述目标时间戳用于指示所述第一分区可以执行的多分区事务的信息;
所述协调服务器还用于向所述第一分区发送所述目标时间戳;
所述第一分区还用于根据所述目标时间戳执行所述第一分区中的复制日志。
7.一种分布式***的数据库复制方法,其特征在于,所述方法包括:
接收备集群的第一分区中新增的多分区事务的时间戳,所述新增的多分区事务为所述第一分区自上一次完成发送多分区事务的时间戳后,收到的主集群中的对应分区发送的复制日志中记录的事务中的多分区事务;
判断所述备集群的每个分区的多分区事务的时间戳是否完全重合;
若所述每个分区的多分区事务时间戳完全重合,则将第一指定时间戳作为作为所述第一分区的目标时间戳,所述第一指定时间戳用于指示所述第一分区执行分区内复制日志中的日志记录,直到遇到下一个新增的多分区事务的日志记录时停止执行,所述目标时间戳用于指示所述第一分区可以执行的多分区事务的信息;
向所述第一分区发送所述目标时间戳,由所述第一分区根据所述目标时间戳执行所述第一分区中的复制日志。
8.根据权利要求7所述的方法,其特征在于,所述判断所述备集群的每个分区的多分区事务的时间戳是否完全重合之后,所述方法还包括:
若所述备集群的每个分区的多分区事务的时间戳不完全重合,则确定所述备集群的每个分区的多分区事务的时间戳的交集,从所述备集群的每个分区除所述交集以外的多分区事务的时间戳中,获取数值最小的时间戳作作为所述第一分区的目标时间戳,所述数值最小的时间戳用于指示所述第一分区执行所述第一分区的复制日志中所述目标时间戳对应的多分区事务之前的日志记录。
9.根据权利要求7所述的方法,其特征在于,所述方法还包括:
确定所述所述备集群的每个分区的多分区事务的时间戳的交集,并判断所述交集是否为空集;
若所述交集不为空集,则从所述交集中获取数值最大的时间戳作为所述第一分区的目标时间戳,所述数值最大的时间戳用于指示所述第一分区执行所述第一分区中所述目标时间戳之后的第一个多分区事务的时间戳对应的多分区事务之前的日志记录;
若所述交集为空集,则将第二指定时间戳作为所述第一分区的目标时间戳,所述第二指定时间戳用于指示所述第一分区依次执行分区内复制日志中的日志记录,直到遇到多分区事务的日志记录时停止执行。
10.一种分布式***的数据库复制方法,所述方法包括:
向协调服务器发送第一分区中新增的多分区事务的时间戳,由所述协调服务器判断备集群的每个分区的多分区事务的时间戳是否完全重合;若所述备集群的每个分区的多分区事务的时间戳完全重合,则由所述协调服务器将第一指定时间戳作为所述第一分区的目标时间戳,并向所述第一分区发送所述目标时间戳,所述第一指定时间戳用于指示所述第一分区执行分区内复制日志中的日志记录,直到遇到下一个新增的多分区事务的日志记录时停止执行,所述目标时间戳用于指示所述第一分区可以执行的多分区事务的信息;
根据所述第一分区的目标时间戳,执行所述第一分区内的复制日志。
11.根据权利要求10所述的方法,其特征在于,所述根据所述第一分区的目标时间戳,执行所述第一分区内的复制日志包括:
若所述第一分区的目标时间戳为所述备集群的每个分区的多分区事务的时间戳的交集以外的多分区事务的时间戳中数值最小的时间戳,则执行所述第一分区的复制日志中所述目标时间戳对应的多分区事务之前的日志记录;
若所述目标时间戳为所述第一指定时间戳,则执行所述第一分区内复制日志中的日志记录,直到遇到下一个新增多分区事务的日志记录时停止执行,所述第一指定时间戳指示所述备集群的每个分区的多分区事务的时间戳完全重合。
12.根据权利要求10所述的方法,其特征在于,所述根据所述第一分区的目标时间戳,执行所述第一分区内的复制日志包括:
若所述第一分区的目标时间戳为所述备集群的每个分区的多分区事务的时间戳的交集中数值最大的时间戳,则执行所述第一分区中所述目标时间戳之后的第一个多分区事务的时间戳对应的多分区事务之前的日志记录;
若所述第一分区的目标时间戳为第二指定时间戳,则依次执行所述第一分区中的日志记录,直到遇到多分区事务的日志记录时停止执行,所述第二指定时间戳指示所述备集群的每个分区的多分区事务的时间戳的交集为空集。
13.一种分布式***的数据库复制装置,其特征在于,所述装置包括:
接收模块,用于接收备集群的第一分区中新增的多分区事务的时间戳,所述新增的多分区事务为所述第一分区自上一次完成发送多分区事务的时间戳后,收到的主集群中的对应分区发送的复制日志中记录的事务中的多分区事务;
获取模块,用于判断所述备集群的每个分区的多分区事务的时间戳是否完全重合;若所述每个分区的多分区事务时间戳完全重合,则将第一指定时间戳作为作为所述第一分区的目标时间戳,所述第一指定时间戳用于指示所述第一分区执行分区内复制日志中的日志记录,直到遇到下一个新增的多分区事务的日志记录时停止执行,所述目标时间戳用于指示所述第一分区可以执行的多分区事务的信息;
发送模块,用于向所述第一分区发送所述目标时间戳,由所述第一分区根据所述目标时间戳执行所述第一分区中的复制日志。
14.根据权利要求13所述的装置,其特征在于,所述获取模块还用于若所述备集群的每个分区的多分区事务的时间戳不完全重合,则确定所述备集群的每个分区的多分区事务的时间戳的交集,从所述备集群的每个分区除所述交集以外的多分区事务的时间戳中,获取数值最小的时间戳作为所述第一分区的目标时间戳,所述数值最小的时间戳用于指示所述第一分区执行所述第一分区的复制日志中所述目标时间戳对应的多分区事务之前的日志记录。
15.根据权利要求13所述的装置,其特征在于,所述获取模块用于确定所述所述备集群的每个分区的多分区事务的时间戳的交集,并判断所述交集是否为空集;若所述交集不为空集,则从所述交集中获取数值最大的时间戳作为所述第一分区的目标时间戳,所述数值最大的时间戳用于指示所述第一分区执行所述第一分区中所述目标时间戳之后的第一个多分区事务的时间戳对应的多分区事务之前的日志记录;若所述交集为空集,则将第二指定时间戳作为所述第一分区的目标时间戳,所述第二指定时间戳用于指示所述第一分区依次执行分区内复制日志中的日志记录,直到遇到多分区事务的日志记录时停止执行。
16.一种分布式***的数据库复制装置,所述装置包括:
发送模块,用于向协调服务器发送第一分区中新增的多分区事务的时间戳,由所述协调服务器判断备集群的每个分区的多分区事务的时间戳是否完全重合;若所述备集群的每个分区的多分区事务的时间戳完全重合,则由所述协调服务器将第一指定时间戳作为所述第一分区的目标时间戳,并向所述第一分区发送所述目标时间戳,所述第一指定时间戳用于指示所述第一分区执行分区内复制日志中的日志记录,直到遇到下一个新增的多分区事务的日志记录时停止执行,所述目标时间戳用于指示所述第一分区可以执行的多分区事务的信息;
执行模块,用于根据所述第一分区的目标时间戳,执行所述第一分区内的复制日志。
17.根据权利要求16所述的装置,其特征在于,所述执行模块用于若所述第一分区的目标时间戳为所述备集群的每个分区的多分区事务的时间戳的交集以外的多分区事务的时间戳中数值最小的时间戳,则执行所述第一分区的复制日志中所述目标时间戳对应的多分区事务之前的日志记录;若所述目标时间戳为所述第一指定时间戳,则执行所述第一分区内复制日志中的日志记录,直到遇到下一个新增多分区事务的日志记录时停止执行,所述第一指定时间戳指示所述备集群的每个分区的多分区事务的时间戳完全重合。
18.根据权利要求16所述的装置,其特征在于,所述执行模块用于若所述第一分区的目标时间戳为所述备集群的每个分区的多分区事务的时间戳的交集中数值最大的时间戳,则执行所述第一分区中所述目标时间戳之后的第一个多分区事务的时间戳对应的多分区事务之前的日志记录;若所述第一分区的目标时间戳为第二指定时间戳,则依次执行所述第一分区中的日志记录,直到遇到多分区事务的日志记录时停止执行,所述第二指定时间戳指示所述备集群的每个分区的多分区事务的时间戳的交集为空集。
19.一种协调服务器,其特征在于,包括存储器和处理器,存储器用于存储处理器可执行指令,处理器被配置为执行上述权利要求7至9任一项所述的方法。
20.一种分布式***的数据库复制装置,包括存储器和处理器,存储器用于存储处理器可执行指令,处理器被配置为执行上述权利要求10至12任一项所述的方法。
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
PCT/CN2016/080068 WO2017181430A1 (zh) | 2016-04-22 | 2016-04-22 | 分布式***的数据库复制方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN108140035A CN108140035A (zh) | 2018-06-08 |
CN108140035B true CN108140035B (zh) | 2020-09-29 |
Family
ID=60115464
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201680057292.XA Active CN108140035B (zh) | 2016-04-22 | 2016-04-22 | 分布式***的数据库复制方法及装置 |
Country Status (4)
Country | Link |
---|---|
US (1) | US11093522B2 (zh) |
EP (1) | EP3438847A4 (zh) |
CN (1) | CN108140035B (zh) |
WO (1) | WO2017181430A1 (zh) |
Families Citing this family (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11224081B2 (en) * | 2018-12-05 | 2022-01-11 | Google Llc | Disengaged-mode active coordination set management |
CN110018884B (zh) * | 2019-03-19 | 2023-06-06 | 创新先进技术有限公司 | 分布式事务处理方法、协调装置、数据库及电子设备 |
US11537454B2 (en) * | 2020-01-09 | 2022-12-27 | International Business Machines Corporation | Reducing write operations in middleware |
US11556370B2 (en) * | 2020-01-30 | 2023-01-17 | Walmart Apollo, Llc | Traversing a large connected component on a distributed file-based data structure |
CN112527759B (zh) * | 2021-02-09 | 2021-06-11 | 腾讯科技(深圳)有限公司 | 日志执行方法、装置、计算机设备及存储介质 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1984448A (zh) * | 2006-05-30 | 2007-06-20 | 华为技术有限公司 | 使用分布式事务实现移动用户数据安全备份的方法及*** |
CN101470629A (zh) * | 2007-12-30 | 2009-07-01 | 英特尔公司 | 用于在事务性存储器***中实现强原子性的机制 |
CN102037463A (zh) * | 2008-02-26 | 2011-04-27 | 甲骨文国际公司 | 使用全局确认的提交进行分布式事务的基于日志的复制 |
Family Cites Families (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102110121B (zh) * | 2009-12-24 | 2015-09-23 | 阿里巴巴集团控股有限公司 | 一种数据处理方法及其*** |
US8671074B2 (en) * | 2010-04-12 | 2014-03-11 | Microsoft Corporation | Logical replication in clustered database system with adaptive cloning |
US9805108B2 (en) * | 2010-12-23 | 2017-10-31 | Mongodb, Inc. | Large distributed database clustering systems and methods |
CN103810060A (zh) * | 2013-11-21 | 2014-05-21 | 北京奇虎科技有限公司 | 基于分布式数据库的数据备份方法及其*** |
US9323569B2 (en) * | 2014-09-10 | 2016-04-26 | Amazon Technologies, Inc. | Scalable log-based transaction management |
EP3191984B1 (en) * | 2014-09-10 | 2021-03-10 | Amazon Technologies Inc. | Scalable log-based transaction management |
CN104573100B (zh) * | 2015-01-29 | 2017-11-14 | 无锡江南计算技术研究所 | 一种带自增量标识的分布式数据库同步方法 |
US10353907B1 (en) * | 2016-03-30 | 2019-07-16 | Microsoft Technology Licensing, Llc | Efficient indexing of feed updates for content feeds |
US10810268B2 (en) * | 2017-12-06 | 2020-10-20 | Futurewei Technologies, Inc. | High-throughput distributed transaction management for globally consistent sharded OLTP system and method of implementing |
US11120006B2 (en) * | 2018-06-21 | 2021-09-14 | Amazon Technologies, Inc. | Ordering transaction requests in a distributed database according to an independently assigned sequence |
US20190392047A1 (en) * | 2018-06-25 | 2019-12-26 | Amazon Technologies, Inc. | Multi-table partitions in a key-value database |
-
2016
- 2016-04-22 WO PCT/CN2016/080068 patent/WO2017181430A1/zh active Application Filing
- 2016-04-22 EP EP16899017.4A patent/EP3438847A4/en active Pending
- 2016-04-22 CN CN201680057292.XA patent/CN108140035B/zh active Active
-
2018
- 2018-10-19 US US16/165,596 patent/US11093522B2/en active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1984448A (zh) * | 2006-05-30 | 2007-06-20 | 华为技术有限公司 | 使用分布式事务实现移动用户数据安全备份的方法及*** |
CN101470629A (zh) * | 2007-12-30 | 2009-07-01 | 英特尔公司 | 用于在事务性存储器***中实现强原子性的机制 |
CN102037463A (zh) * | 2008-02-26 | 2011-04-27 | 甲骨文国际公司 | 使用全局确认的提交进行分布式事务的基于日志的复制 |
Also Published As
Publication number | Publication date |
---|---|
EP3438847A1 (en) | 2019-02-06 |
US20190057142A1 (en) | 2019-02-21 |
CN108140035A (zh) | 2018-06-08 |
US11093522B2 (en) | 2021-08-17 |
EP3438847A4 (en) | 2019-05-01 |
WO2017181430A1 (zh) | 2017-10-26 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108140035B (zh) | 分布式***的数据库复制方法及装置 | |
CN110311831B (zh) | 基于容器云的***资源监控方法及相关设备 | |
CN103455368B (zh) | 一种死锁检测方法、节点及*** | |
CN105824846B (zh) | 数据迁移方法及装置 | |
CN111399764B (zh) | 数据存储方法、读取方法、装置、设备及存储介质 | |
CN113987064A (zh) | 数据处理方法、***及设备 | |
CN113553313B (zh) | 一种数据迁移方法及***、存储介质、电子设备 | |
CN105373563B (zh) | 数据库切换方法及装置 | |
CN114595288A (zh) | 一种基于sql命令级的多idc分布式***数据同步方法 | |
CN114064217A (zh) | 一种基于OpenStack的节点虚拟机迁移方法及装置 | |
CN108829735B (zh) | 并行执行计划的同步方法、装置、服务器及存储介质 | |
CN112527561B (zh) | 基于物联网云存储的数据备份方法及装置 | |
CN115643271A (zh) | 一种云上多应用数据同步方法、装置、服务器及介质 | |
CN112711466B (zh) | 悬挂事务巡检方法和装置、电子设备和存储介质 | |
CN112905696B (zh) | 基于事务标识的多机房同步方法、计算设备及存储介质 | |
CN112685486B (zh) | 数据库集群的数据管理方法、装置、电子设备及存储介质 | |
CN113407629A (zh) | 数据同步的方法、装置、电子设备及存储介质 | |
US10885014B2 (en) | Assigning monitoring responsibilities in distributed systems using optimistic concurrency | |
CN113934792A (zh) | 分布式数据库的处理方法、装置、网络设备和存储介质 | |
CN109995617A (zh) | 主机管理特性的自动化测试方法、装置、设备及存储介质 | |
CN112564953B (zh) | 一种对局远端设备管理的方法和装置及设备 | |
CN110764882A (zh) | 分布式管理方法、分布式管理***及装置 | |
CN112818059B (zh) | 一种基于容器发布平台的信息实时同步方法及装置 | |
CN113609199B (zh) | 数据库***、服务器及存储介质 | |
CN111666338B (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 |