[go: up one dir, main page]

CN118585577A - 数据同步方法和装置 - Google Patents

数据同步方法和装置 Download PDF

Info

Publication number
CN118585577A
CN118585577A CN202310165047.2A CN202310165047A CN118585577A CN 118585577 A CN118585577 A CN 118585577A CN 202310165047 A CN202310165047 A CN 202310165047A CN 118585577 A CN118585577 A CN 118585577A
Authority
CN
China
Prior art keywords
data
incremental
synchronized
snapshot
source database
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
CN202310165047.2A
Other languages
English (en)
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.)
Huawei Cloud Computing Technologies Co Ltd
Original Assignee
Huawei Cloud Computing Technologies Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Huawei Cloud Computing Technologies Co Ltd filed Critical Huawei Cloud Computing Technologies Co Ltd
Priority to CN202310165047.2A priority Critical patent/CN118585577A/zh
Priority to PCT/CN2023/120314 priority patent/WO2024174516A1/zh
Publication of CN118585577A publication Critical patent/CN118585577A/zh
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/27Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/11File system administration, e.g. details of archiving or snapshots
    • 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/11File system administration, e.g. details of archiving or snapshots
    • G06F16/128Details of file system snapshots on the file-level, e.g. snapshot creation, administration, deletion
    • 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/16File or folder operations, e.g. details of user interfaces specifically adapted to 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/2379Updates performed during online database operations; commit processing
    • 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/245Query processing
    • G06F16/2457Query processing with adaptation to user needs
    • 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/25Integrating or interfacing systems involving database management 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/25Integrating or interfacing systems involving database management systems
    • G06F16/254Extract, transform and load [ETL] procedures, e.g. ETL data flows in data warehouses

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)
  • Human Computer Interaction (AREA)
  • Computational Linguistics (AREA)
  • Computing Systems (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本申请提供了一种数据同步方法,涉及数据处理领域,该方法用于把源数据库的数据传输到目标数据库,该方法包括:在第一时刻开始从该源数据库中抽取增量数据,其中,该增量数据是该源数据库在该第一时刻之后被插入、更新或删除的数据;根据该源数据库在第二时刻的待同步数据的快照,将该待同步数据传输到该目标数据库中;过滤该增量数据中与该待同步数据重复的数据;将过滤后的增量数据回放到该目标数据库中。该方法通过过滤增量数据,提高了数据同步的效率。该方法还可以将全量数据同步阶段的数据进行分片,以数据分片为粒度进行并发传输,实现了全量数据同步阶段的断点续传,提高了数据同步的性能和容错性。

Description

数据同步方法和装置
技术领域
本申请涉及数据处理领域,并且更具体地,涉及一种数据同步方法和装置、计算设备、计算设备集群、计算机程序产品以及计算机可读存储介质。
背景技术
在数据容灾(disaster tolerance)、备份等应用场景中,需要在源数据库和目标数据库之间实现数据同步。为了减少数据同步对业务的影响,数据同步要支持不停服迁移,即在线迁移,以实现在数据同步的过程中,实现业务0停机。
在线迁移主要包括三个阶段,即结构迁移、全量数据同步和增量数据同步。在相关的技术方案中,全量数据同步启动后,需要开始对增量数据的抽取和保存,以便在增量数据同步阶段,能够与全量数据接续,保证数据的完整性和一致性。当全量数据同步结束后,保存的增量数据会进行解析和回放,直到使得目标数据库中的数据与源数据库中的数据一致。
然而,增量数据与全量数据有重复的部分,这些重复的部分被多次传输,导致数据同步的效率较低。
发明内容
本申请提供一种数据同步方法,该方法提高了数据同步的效率。
第一方面,提供了一种数据同步方法,该方法用于把源数据库的数据传输到目标数据库,该方法包括:数据同步装置在第一时刻开始从该源数据库中抽取增量数据,其中,该增量数据是该源数据库在该第一时刻之后被插入、更新或删除的数据;该数据同步装置根据该源数据库在第二时刻的待同步数据的快照,将该待同步数据传输到该目标数据库中,其中,该第一时刻在该第二时刻之前;该数据同步装置过滤该增量数据中与该待同步数据重复的数据;该数据同步装置将过滤后的增量数据回放到该目标数据库中。
本申请实施例提供的数据同步方法,在回放增量数据前,还要过滤增量数据。过滤后的增量数据不包含与已经传输到目标数据库的数据重复的部分,从而避免了已传输到目标数据库中的数据被重复地回放,提高了数据同步的效率。另一方面,相关的技术方案在全量数据同步阶段启动之后,才开始增量数据的抽取,这样导致部分增量数据缺失。本申请实施例提供的数据同步方法,在全量数据同步阶段启动之前,开始抽取增量数据,避免了数据缺失,提高了数据同步的一致性和完整性。
结合第一方面,在第一方面的某些实现方式中,该源数据库包括多个数据分片,该待同步数据分片是该多个数据分片之一。
在相关的技术方案中,如果全量数据同步阶段中断,只能重新进行所有数据的同步,容错性较低。本申请实施例提供的数据同步方法,通过将全量数据同步阶段的数据进行分片,以数据分片为粒度进行传输,实现了全量数据同步阶段的断点续传,提高了数据同步的容错性。另一方面,相关技术方案在全量数据同步阶段需要保存所有数据的快照,本申请实施例提供的数据同步方法,在传输完一个数据分片之后,可以选择删除该数据分片的快照,释放了存储资源,提高了数据库查询的速度。
结合第一方面,在第一方面的某些实现方式中,该数据同步装置过滤该增量数据中与该待同步数据重复的数据,包括:该数据同步装置获取该待同步数据的快照信息;该数据同步装置将该快照信息与该增量数据的事务信息进行可见性判断,以过滤该增量数据中与该待同步数据重复的数据。
本申请实施例提供的数据同步方法,在回放增量数据前,还要根据快照信息过滤增量数据。过滤后的增量数据不包含与已经传输到目标数据库的数据重复的部分,从而避免了已传输到目标数据库中的数据被重复地回放,提高了数据同步的效率。
结合第一方面,在第一方面的某些实现方式中,该源数据库是以PostgreSQL为数据源的数据库。
结合第一方面,在第一方面的某些实现方式中,该方法还包括:该数据同步装置确定该增量数据的世代信息;该数据同步装置将该世代信息加入该增量数据的事务信息;其中,该数据同步装置将该快照信息与该增量数据的事务信息进行可见性判断,包括:该数据同步装置将该快照信息与带有世代信息的事务信息进行可见性判断。
增量数据的事务信息可能不包含世代信息,与全量数据的快照信息进行可见性判断时,需要将增量数据的事务信息进行格式转换。本申请实施例提供的方法通过将世代信息加入增量数据的事务信息中,提高了可见性判断的准确性,从而能够准确地过滤增量数据,提高数据同步的效率。
结合第一方面,在第一方面的某些实现方式中,该数据同步装置在第一时刻开始从该源数据库中抽取增量数据,包括:该数据同步装置在该第一时刻确定逻辑复制槽,其中,该逻辑复制槽用于传输和控制该增量数据,该逻辑复制槽包括位点;其中,该数据同步装置确定该增量数据的世代信息,包括:该数据同步装置在该逻辑复制槽的位点推进时,获取基准点;该数据同步装置根据该基准点与该增量数据,确定该增量数据的世代信息。
本申请实施例中,在逻辑复制槽推进位点时获取基准点,根据基准点和增量数据可以确定世代信息,从而实现了数据分片的快照信息与增量数据的事务信息的可见性判断,进而能够准确地过滤增量数据,提高数据同步的效率。另一方面,以上操作只需要源数据库的读取(select)权限,将用户的授权范围降到了最低。
结合第一方面,在第一方面的某些实现方式中,该待同步数据包括至少一条记录,每条记录对应一个标识,该方法还包括:该数据同步装置根据该待同步数据的至少一条记录对应的标识,获取该待同步数据的快照。
本申请实施例中,通过数据分片中记录的标识进行全量数据同步阶段的数据分片,得到的各个数据分片之间不重叠,各个数据分片的总和构成全量数据同步阶段的数据,从而提升了数据同步的效率和完整性。
结合第一方面,在第一方面的某些实现方式中,该待同步数据分片的至少一条记录对应的标识属于一个区间。
本申请实施例中,将记录的标识按照所属区间进行分片,得到的各个数据分片之间不重叠,各个数据分片的总和构成全量数据同步阶段的数据,从而提升了数据同步的效率和完整性。
结合第一方面,在第一方面的某些实现方式中,该多个数据分片的记录对应的标识不重叠。
本申请实施例中,源数据库的数据被分为多个数据分片,各个数据分片之间不重叠,各个数据分片的总和构成全量数据同步阶段的数据,从而提升了数据同步的效率和完整性。
结合第一方面,在第一方面的某些实现方式中,该方法应用于云数据中心。
第二方面,本申请实施例提供一种数据同步装置,该数据同步装置包括用于实现第一方面或第一方面的任意一种可能的实现方式的模块。
第三方面,提供了一种计算设备,包括处理器和存储器,该处理器用于执行该存储器中存储的指令,以使得该计算设备执行第一方面或者第一方面的任意一种可能的实现方式的数据同步方法。
第四方面,提供了一种计算设备集群,包括至少一个计算设备,每个计算设备包括处理器和存储器;该至少一个计算设备的处理器用于执行该至少一个计算设备的存储器中存储的指令,以使得该计算设备集群执行第一方面或者第一方面的任意一种可能的实现方式的数据同步方法。
第五方面,提供了一种包含指令的计算机程序产品,当该指令被计算设备运行时,使得该计算设备执行第一方面或者第一方面的任意一种可能的实现方式的数据同步方法。
第六方面,提供了一种包含指令的计算机程序产品,当该指令被计算设备集群运行时,使得该计算设备集群执行第一方面或者第一方面的任意一种可能的实现方式的数据同步方法。
第七方面,提供了一种计算机可读存储介质,包括计算机程序指令,当该计算机程序指令由计算设备执行时,该计算设备执行第一方面或者第一方面的任意一种可能的实现方式的数据同步方法。
第八方面,提供了一种计算机可读存储介质,包括计算机程序指令,当该计算机程序指令由计算设备集群执行时,该计算设备集群执行第一方面或者第一方面的任意一种可能的实现方式的数据同步方法。
附图说明
图1是一种数据同步方法的示意图。
图2是本申请实施例的基于云服务器系统的系统示意图。
图3是本申请实施例提供的一种数据同步方法的示意性流程图。
图4是本申请实施例提供的一种数据同步装置400的示意性框图。
图5本申请实施例提供的一种计算设备500的架构示意图。
图6是本申请实施例提供的一种计算设备集群的架构示意图。
图7是本申请实施例提供的计算设备500A和500B之间通过网络进行连接的示意图。
图8是本申请实施例提供的另一种数据同步方法的示意性流程图。
具体实施方式
下面将结合附图,对本申请中的技术方案进行描述。
本申请将围绕可包括多个设备、组件、模块等的系统来呈现各个方面、实施例或特征。应当理解和明白的是,各个系统可以包括另外的设备、组件、模块等,并且/或者可以并不包括结合附图讨论的所有设备、组件、模块等。此外,还可以使用这些方案的组合。
另外,在本申请实施例中,“示例的”、“例如”等词用于表示作例子、例证或说明。本申请中被描述为“示例”的任何实施例或设计方案不应被解释为比其它实施例或设计方案更优选或更具优势。确切而言,使用示例的一词旨在以具体方式呈现概念。
本申请实施例描述的网络架构以及业务场景是为了更加清楚的说明本申请实施例的技术方案,并不构成对于本申请实施例提供的技术方案的限定,本领域普通技术人员可知,随着网络架构的演变和新业务场景的出现,本申请实施例提供的技术方案对于类似的技术问题,同样适用。
在本说明书中描述的参考“一个实施例”或“一些实施例”等意味着在本申请的一个或多个实施例中包括结合该实施例描述的特定特征、结构或特点。由此,在本说明书中的不同之处出现的语句“在一个实施例中”、“在一些实施例中”、“在其他一些实施例中”、“在另外一些实施例中”等不是必然都参考相同的实施例,而是意味着“一个或多个但不是所有的实施例”,除非是以其他方式另外特别强调。术语“包括”、“包含”、“具有”及它们的变形都意味着“包括但不限于”,除非是以其他方式另外特别强调。
为了便于理解,下面先对本申请实施例可能涉及的相关术语和概念进行介绍。
数据同步:将源数据库中的数据同步到目标数据库的过程,数据同步不会对源数据库的数据产生影响。
全量数据:数据同步的进程启动时,源数据库中存在的数据被称为全量数据。
增量数据:数据同步的进程启动后,由于源数据库不停止写入,新写入的数据被称为增量数据,增量数据可以包括数据的插入、修改、删除等。
事务快照:事务快照可以是某个事务在某段时间内所看到的静态数据集,事务快照可以对应一个数据库版本。例如,事务快照可以是读事务快照。本申请实施例将一个数据分片的读事务快照简称为该数据分片的快照。
分片:也称为数据分片,例如,将数据库中的数据划分成多个部分,每一部分称为一个分片。
结构化查询语言(structured query language,SQL):SQL是具有数据操纵和数据定义等多种功能的数据库语言,这种语言具有交互性特点,能为用户提供较大的便利。
PostgreSQL:PostgreSQL是一种源代码开放的客户/服务器关系型数据库系统(relational database system)。
GaussDB:GaussDB是一种企业级分布式关系型数据库。GasussDB具备企业级复杂事务混合负载能力,同时支持分布式事务,同城跨可用区(availability zone,AZ)部署,数据0丢失。GaussDB还拥有云上高可用,高可靠,高安全,弹性伸缩,一键部署,快速备份恢复,监控告警等关键能力,能为企业提供功能全面,稳定可靠,扩展性强,性能优越的企业级数据库服务。
MySQL:MySQL是一种关系型数据库管理系统。MySQL所使用的SQL语言是用于访问数据库的最常用标准化语言。MySQL采用了双授权政策,分为社区版和商业版。MySQL具有体积小、速度快、总体拥有成本低,源码开放的特点。
本申请实施例提供一种数据同步方法,该方法可以应用于云数据中心。下面先介绍相关的技术方案。
图1示出了一种数据同步方法的示意图。
参见图1,数据同步可以包括三个阶段,分别为结构迁移阶段110、全量数据同步阶段120和增量数据同步阶段130。在结构迁移阶段110,可以进行结构查询111和结构回放112。例如,可以对源数据库执行结构化的查询语言(比如“show create table;”等SQL语句)获取源数据库的表结构,并将该表结构回放到目标数据库中,以实现结构迁移。
在全量数据同步阶段120,要启动增量数据的抽取和保存,也就是增量抽取131,以便在增量数据同步阶段130时,能够将增量数据与全量数据接续,保证数据的完整性和一致性。例如,可以控制服务器的主进程连接数据库,创建用于传输和控制增量数据的逻辑复制槽,并导出建槽事务的快照名称。
全量数据同步阶段120要进行全量数据查询121和全量数据传输122。例如,创建复制槽也可以当作一次全量数据查询121,控制服务器的子进程根据快照名称导入建槽事务的快照,进行全量数据传输122。
增量数据同步阶段130在全量数据同步阶段120之后,服务器可以将逻辑复制槽中的增量数据写入目标数据库,直到源数据库与目标数据库的数据同步。这一过程也可以称为增量数据回放132。
然而,在图1示出的数据同步方法中,增量数据与全量数据有重复的部分,这些重复的部分被多次传输,导致数据同步的效率较低。
另一方面,在全量数据同步中断时,只能重新建立逻辑复制槽,重新同步所有的数据,这样导致数据同步的容错性较差。并且,数据同步装置需要持有全量数据的快照,直到全量数据同步完成。在此期间,由于同步的粒度是整个全量数据,数据同步装置不会清理快照可见的数据,占用了存储资源,导致表空间膨胀以及SQL查询变慢。
下面介绍本申请实施例的应用场景,需要说明的是,图2示出的场景仅作为示例,不构成对本申请的限定。
图2是本申请实施例的基于云服务器系统的系统示意图。如图2所示,云管理平台210用于管理提供多个云服务的基础设施,基础设施包括多个云数据中心,每个云数据中心中包括多个服务器,每个服务器中分别包括云服务资源,为租户提供相应的云服务。
云管理平台210提供访问接口(如界面或应用程序接口(application programinterface,API)),租户可操作客户端远程接入访问接口在云管理平台注册云账号和密码,并登录云管理平台,云管理平台对云账号和密码鉴权成功后,租户可进一步在云管理平台付费选择并购买特定规格(处理器、内存、磁盘)的虚拟机,付费购买成功后,云管理平台提供所购买的虚拟机的远程登录账号密码,客户端可远程登录该虚拟机,在该虚拟机中安装并运行租户的应用。云服务的租户可以是个人、企业、学校、医院、行政机关等。
云管理平台210的功能包括但不限于用户控制台、计算管理服务、网络管理服务、存储管理服务、鉴权服务、镜像管理服务。用户控制台提供界面或API与租户交互,计算管理服务用于管理运行虚拟机和容器的服务器以及裸金属服务器,网络管理服务用于管理网络服务(如网关、防火墙等),存储管理服务用于管理存储服务(如数据桶服务),鉴权服务用于管理租户的账号密码,镜像管理服务用于管理虚拟机镜像。租户使用客户端230,通过互联网220可以登录云管理平台210,对租用的云服务进行管理。
图3示出了本申请实施例提供的一种数据同步方法,该方法用于把源数据库的数据传输到目标数据库。该方法过滤了增量数据中与全量数据重复的部分,避免增量数据被重复地传输,可以提高数据同步的效率。例如,图3示出的方法可以由数据同步装置执行,数据同步装置可以是服务器等。
需要说明的是,本申请不限定源数据库或目标数据库的具体形式,例如源数据库可以是PostgreSQL为数据源的数据库,目标数据库可以是PostgreSQL、MySQL、GaussDB为数据源的数据库。例如,图3示出的方法可以应用于任何数据中心,比如云数据中心。
另一方面,本申请实施例中的数据分片的总和与相关技术方案中的全量数据不同。在相关的技术方案中,在启动全量数据传输的进程后,全量数据不会发生改变。而如果在分片传输的场景下,数据在一片一片地传输时,后传输的数据分片可能相对于启动数据传输时发生改变。但是为便于与相关的技术方案比对,下面仍沿用全量数据这一概念。下面所说的全量数据同步阶段,在分片传输的场景下,是指将各个数据分片从源数据库传输到目标数据库的阶段。如果不特别说明分片传输,全量数据既可以是全量数据同步阶段启动时源数据库中已有的静态数据,也可以是各个数据分片的总和。
S310,数据同步装置在第一时刻开始从该源数据库中抽取增量数据,其中,该增量数据是该源数据库在该第一时刻之后被插入、更新或删除的数据。
在数据同步的过程中,为了实现业务0停机,源数据库可以不停止接收新的数据。接收的新数据作为增量数据,在全量数据同步阶段之后,回放到目标数据库中,以使得源数据库与目标数据库中的数据一致。可以理解,这里的接收包括插入、更新或删除。
开始从源数据库中抽取增量数据是一个“启动”的动作。因为增量数据是随着数据同步的过程中,用户根据业务需要写入的,换言之,在数据同步服务器在开始从源数据库中抽取增量数据时,源数据库中未必有增量数据。所以,抽取增量数据是一个持续的过程,一直到数据同步结束时,抽取增量数据才会结束。
例如,开始从源数据库中抽取增量数据时,可以启动逻辑复制槽。如果不存在逻辑复制槽,可以先创建一个逻辑复制槽。继而,从源数据库中抽取增量数据到逻辑复制槽中。
S320,该数据同步装置根据该源数据库在第二时刻的待同步数据的快照,将该待同步数据传输到该目标数据库中,其中,该第一时刻在该第二时刻之前。
快照(snapshot)由至少一条记录的可见版本组成,本申请实施例所称的快照,可以是读事务快照。例如,在可重复读(repeatable read)隔离级别下对源数据库启动读事务,以生成源数据库的数据的快照。如果在该读事务启动(begin)和提交(commit)之间,源数据库的数据被修改,被修改的记录(record)可以称为增量数据,但是源数据库的数据的快照不包括这些被修改的记录。也就是说,源数据库的数据的快照可以包括读事务启动时的静态数据。
记录是数据库中的一组相对完整的信息,一条记录也可以称为一行(row)。
例如,数据同步服务器可以根据待同步数据的快照,将待同步数据传输到目标数据库中。也就是说,数据同步服务器可以根据源数据库的数据的快照,将该源数据库的记录传输到目标数据库中。
在一些实施例中,数据同步服务器可以在第二时刻获取源数据库的全部数据的快照。也就是说,该快照包括在获取快照时源数据库中已经存在的全部静态数据。随后,数据同步服务器执行S320,将源数据库的全部数据传输到目标数据库中。
可选地,该源数据库包括多个数据分片,该待同步数据是该多个数据分片之一。
例如,第一数据分片是多个数据分片之一,第二数据分片是多个数据分片中的另一个数据分片。下面以第一数据分片作为待同步数据为例,进行说明。
第一数据分片包括源数据库中的部分数据,例如,第一数据分片可以包括源数据库的部分记录。
可以理解,源数据库包括多个数据分片,第一数据分片是多个数据分片之一。
例如,在可重复读隔离级别下对第一数据分片启动读事务,以生成第一数据分片的快照。如果在该读事务启动和提交之间,第一数据分片被修改,被修改的记录可以称为增量数据,但是第一数据分片的快照不包括这些被修改的记录。也就是说,第一数据分片的快照可以包括读事务启动时的静态数据。
在一些实施例中,源数据库中的记录可以根据标识进行逻辑分片。例如,标识可以是主键(primary key),把多个主键按照一定规则划分为若干个区间,每个区间中的主键对应的记录组成了一个分片。
其中,主键也可以称为主关键字,是数据库中的字段,主键的值可以用于唯一地指示数据库中的某一条记录。
在另一些实施例中,全量数据可以进行任意的分片。例如,将某个字段(field)的值所对应的一些记录组成一个分片。
示例性地,获取第一数据分片的快照,可以通过查询(或者称为读取)记录,以生成第一数据分片的快照。例如,可以查询主键数值在1至100万之间的记录,从而生成主键数值在1至100万之间的记录的快照,该快照可以称为第一数据分片的快照。
可以理解,本申请实施例中记录的标识不限于主键,例如还可以是唯一索引。数据同步服务器可以根据第一数据分片的快照,将该第一数据分片传输到目标数据库中。也就是说,数据同步服务器可以根据一个数据分片的快照,将该数据分片的记录传输到目标数据库中。
可以理解,在获取第一数据分片的快照以及根据第一数据的快照将第一数据分片传输到目标数据库的过程中,如果发生中断,第一数据分片传输失败,此时数据同步服务器仅需要重新传输第一数据分片,而之前传输的数据分片不受影响。
在相关的技术方案中,如果全量数据同步阶段中断,只能重新进行所有数据的同步,容错性较低。本申请实施例提供的数据同步方法,通过将全量数据同步阶段的数据进行分片,以数据分片为粒度进行传输,实现了全量数据同步阶段的断点续传,提高了数据同步的容错性。另一方面,相关技术方案在全量数据同步阶段需要保存所有数据的快照,本申请实施例提供的数据同步方法,在传输完一个数据分片之后,可以选择删除该数据分片的快照,释放了存储资源,提高了数据库查询的速度。可选地,该待同步数据包括至少一条记录,每条记录对应一个标识,该方法还包括:该数据同步装置根据该待同步数据的至少一条记录对应的标识,获取该待同步数据的快照。
标识可以是主键,也可以是唯一索引(unique index)。一条记录可以对应一个标识。
唯一索引可以提高对数据库的访问速度,用于查询记录。与普通的索引不同,唯一索引的值是唯一的,但是允许有空值。
可以理解,数据同步服务器可以确定一个数据分片的至少一条记录对应的标识。例如,假设用户定义的查询规则为按照主键数值进行顺序查询,每次查询50万条记录。在这种情况下,数据同步服务器可以根据上次查询的主键数值进行运算,确定本次查询的主键数值,也就是这个数据分片的记录对应的标识。
本申请对全量数据同步阶段的数据分片方法不作限定,除了上述通过区间进行分片的方案之外,还可以通过其他的方式进行分片。例如可以将主键数值尾号进行分片,将主键数值尾号为1的记录组成一个数据分片,在获取该数据分片的快照时,可以查询主键数值尾号为1的记录,从而生成该数据分片的快照。再例如,可以按照数据量的大小划分,将数据量较大的表划分为多个分片,将数据量较小的表作为一个分片。
例如,数据同步服务器可以根据第一数据分片的至少一条记录对应的标识进行查询,从而获取第一数据分片的快照。也就是说,全量数据同步阶段的数据可以根据标识进行分片,标识包括主键或唯一标识,这样得到的多个数据分片之间不重叠,并且各个数据分片的总和足以构成全量数据同步阶段的数据。
本申请实施例中,通过数据分片中记录的标识进行全量数据同步阶段的数据分片,得到的各个数据分片之间不重叠,各个数据分片的总和构成全量数据同步阶段的数据,从而提升了数据同步的效率和完整性。
可选地,该待同步数据的该至少一条记录对应的标识属于一个区间。
数据分片中的记录对应的标识属于一个区间,也就是说,可以将标识划分为一个个区间,一个区间内的标识对应的记录构成一个数据分片。
例如,将主键数值在30万-70万之间所对应记录作为第一数据分片,这样,30万-70万是该至少一条记录对应的标识所属于的区间。
本申请实施例中,将记录的标识按照所属区间进行分片,得到的各个数据分片之间不重叠,各个数据分片的总和构成全量数据同步阶段的数据,从而提升了数据同步的效率和完整性。
可选地,该多个数据分片的记录对应的标识不重叠。
例如,相对于第一数据分片,第二数据分片是源数据库的多个数据分片中的另一个数据分片。第二数据分片的标识与第一数据分片的标识不重叠,也就是说,第一数据分片的记录与第二数据分片的记录不重叠。
可以理解,多个数据分片不限于第一数据分片和第二数据分片,例如还可以有第三数据分片、第四数据分片等,本申请对多个数据分片的具体数目不限定,也就是说,本申请不限定源数据库的数据具体被分为多少个分片。
本申请实施例中,源数据库的数据被分为多个数据分片,各个数据分片之间不重叠,各个数据分片的总和构成全量数据同步阶段的数据,从而提升了数据同步的效率和完整性。
S330,该数据同步装置过滤该增量数据中与该待同步数据重复的数据。
增量数据可能与源数据库的待同步数据重复。重复的数据有两方面的来源,以下结合举例详细描述。
来源1:如果在全量数据同步阶段之前开始抽取增量数据,那么在开始抽取增量数据的第一时刻,到获取源数据库的待同步数据的快照的第二时刻之间,源数据库中的一部分数据既属于增量数据,又属于全量数据,从而造成了增量数据与源数据库的数据的重复。
例如,假设某一条记录在第一时刻和第二时刻之间被修改。由于该记录是在增量启动后被修改的,属于增量数据,被修改的数据会被当作增量数据抽取。另一方面,由于该记录是在第二时刻前被修改的,在全量同步启动时,这些修改的数据是可见的,也就是说,获取源数据库的数据的快照时,快照中包含修改后的数据。因此,被修改的数据既属于增量数据,又属于全量数据,造成了增量数据的重复。
可以理解,在来源1的情形中,如果对源数据库的数据进行分片,数据重复可能发生在源数据库的任意一个数据分片中。
来源2:在数据分片的场景下,假设在传输第一数据分片之后,获取第二数据分片的快照,其中,第二数据分片是源数据库的另一个数据分片,在传输第一数据分片时,增量数据的抽取处于已经启动的状态。如果在传输第一数据分片时,第二数据分片发生了修改,那么第二数据分片中修改的数据会被当作增量数据抽取。在获取第二数据分片的快照时,第二数据分片中被修改的数据是可见的,也就是说,获取第二数据分片的快照时,快照中包含修改后的第二数据分片的数据。因此,第一数据分片中被修改的部分既属于增量数据,又属于全量数据,造成了增量数据的重复。
来源1是由于增量数据的启动先于全量数据同步阶段的启动,来源2是由于全量数据分片传输,对后传输的数据分片的修改是可见的。
可选地,该数据同步装置过滤该增量数据中与该待同步数据重复的数据,包括:该数据同步装置获取该待同步数据的快照信息;该数据同步装置将该快照信息与该增量数据的事务信息进行可见性判断,以过滤该增量数据中与该待同步数据重复的数据。
快照信息包括xmin、xmax和xip_list,根据快照信息可以对事务信息做可见性判断。其中,xmin是指仍然活动的最早的事务信息(txid),比xmin更早的事务要么已经被提交并且可见,要么已经被回滚(rollback)并且死亡;xmax是指第一个还未分配的事务信息,大于等于xmax的事务信息在获取第一数据分片的快照时还没有开始,因此是不可见的;xip_list是指在获取快照时活动的事务信息,xip_list包括那些位于xmin和xmax之间的活动的事务信息。
需要注意的是,快照与快照信息的作用不同,快照用于传输数据,快照信息用于可见性判断。
事务信息也可以称为事务号、事务ID,事务信息可以是32位的整数,从3(十进制)开始。在新事务的创建过程中,事务信息会不断消耗,当消耗到一定程度时,事务信息会回卷到3。
事务信息也可以是64位的整数,前32位称为世代信息,当事务信息回卷时,世代信息数值加1。
根据快照信息,可以对增量数据的事务信息进行可见性判断,从而过滤增量数据。例如,根据快照信息中xip_list的事务信息,尝试读取增量数据的事务信息,如果可以读到,说明这些数据是可见的,需要过滤掉,不再进行回放。如果不可以读到,说明这些数据是不可见的,需要进行回放,保留这些数据。
本申请实施例提供的数据同步方法,在回放增量数据前,还要根据快照信息过滤增量数据。过滤后的增量数据不包含与已经传输到目标数据库的数据重复的部分,从而避免了已传输到目标数据库中的数据被重复地回放,提高了数据同步的效率。
可选地,该方法还包括:该数据同步装置确定该增量数据的世代信息;该数据同步装置将该世代信息加入该增量数据的事务信息;其中,该数据同步装置将该快照信息与该增量数据的事务信息进行可见性判断,包括:该数据同步装置将该快照信息与带有世代信息的事务信息进行可见性判断。
例如,如果是根据PostgreSQL中的逻辑复制槽抽取的增量数据,增量数据的事务信息是32位的,不包含世代信息。而快照信息中的事务信息是64位的,包含世代信息。如果希望将快照信息与增量数据的事务信息进行可行性判断,还需要对增量数据进行格式转换,即将32位的世代信息加到原有的增量数据的事务信息之前,组成64位的事务信息,继而与快照信息进行可见性判断。
增量数据的事务信息可能不包含世代信息,与全量数据的快照信息进行可见性判断时,需要将增量数据的事务信息进行格式转换。本申请实施例提供的方法通过将世代信息加入增量数据的事务信息中,提高了可见性判断的准确性,从而能够准确地过滤增量数据,提高数据同步的效率。
可选地,该数据同步装置在第一时刻开始从该源数据库中抽取增量数据,包括:该数据同步装置在该第一时刻确定逻辑复制槽,其中,该逻辑复制槽用于传输和控制该增量数据,该逻辑复制槽包括位点;其中,该数据同步装置确定该增量数据的世代信息,包括:该数据同步装置在该逻辑复制槽的位点推进时,获取基准点;该数据同步装置根据该基准点与该增量数据,确定该增量数据的世代信息。
逻辑复制槽可以包括位点,该位点可以指示一个日志序号(log sequencenumber,LSN)。位点还用于指示在该位点前的数据可以被清除,而在该位点之后的数据需要持久化保存。
推进位点,可以是将该位点指示的LSN增大,从而有更多的数据可以被清除。
当位点推进时,可以获取一个64位的事务信息作为基准点,该事务信息的前32位为世代信息。例如,可以通过txid_current指令获取事务信息作为基准点。其中,txid_current用于获得当前事务信息,如果当前事务没有事务信息,则分配一个新的事务信息。
获取到某一条增量数据后,可以根据基准点和该增量数据确定这一条增量数据的世代信息。由于数据库的回卷机制,基准点与增量数据的世代信息相同或者相邻,从而可以计算出这一条增量数据的世代信息。
本申请实施例中,在逻辑复制槽推进位点时获取基准点,根据基准点和增量数据可以确定世代信息,从而实现了数据分片的快照信息与增量数据的事务信息的可见性判断,进而能够准确地过滤增量数据,提高数据同步的效率。另一方面,以上操作只需要源数据库的读取(select)权限,将用户的授权范围降到了最低。
S340,该数据同步装置将过滤后的增量数据回放到该目标数据库中。
将过滤后的增量数据回放到目标数据库,可以是将增量数据的事务对目标数据库执行。也就是说,可以根据全量数据同步阶段中对源数据库进行的修改,对目标数据库进行同样的修改,以实现源数据库与目标数据库的一致性。
可选地,该源数据库是以PostgreSQL为数据源的数据库。
本申请实施例提供的数据同步方法,在回放增量数据前,还要过滤增量数据。过滤后的增量数据不包含与该第一数据分片重复的数据,从而避免了已传输到目标数据库中的数据被重复地回放,提高了数据同步的效率。另一方面,相关的技术方案在全量数据同步阶段启动之后,才开始增量数据的抽取,这样导致部分增量数据缺失。本申请实施例提供的数据同步方法,在全量数据同步阶段启动之前,开始抽取增量数据,避免了数据缺失,提高了数据同步的一致性和完整性。
上面结合图3详细说明了本申请的方法实施例。下面描述本申请实施例的装置实施例,装置实施例与方法实施例相互对应,因此未详细描述的部分可参见前面各方法实施例,装置可以实现上述方法中任意可能实现的方式。
本申请还提供一种数据同步装置400,如图4所示,该装置400包括:抽取模块410,用于在第一时刻开始从该源数据库中抽取增量数据,其中,该增量数据是该源数据库在该第一时刻之后被插入、更新或删除的数据;传输模块420,用于根据该源数据库在第二时刻的待同步数据的快照,将该待同步数据传输到该目标数据库中,其中,该第一时刻在该第二时刻之前;过滤模块430,用于过滤该增量数据中与该待同步数据重复的数据;回放模块440,用于将过滤后的增量数据回放到该目标数据库中。
图4示出的数据同步装置400可以是数据同步服务器,该装置400可以应用于数据中心。本申请对数据中心不作限定,可以应用于任何数据中心,例如云数据中心。
其中,抽取模块410、传输模块420、过滤模块430和回放模块440均可以通过软件实现,或者可以通过硬件实现。示例性的,接下来以抽取模块410为例,介绍抽取模块410的实现方式。类似的,传输模块420、过滤模块430和回放模块440的实现方式可以参考抽取模块410的实现方式。
模块作为软件功能单元的一种举例,抽取模块410可以包括运行在计算实例上的代码。其中,计算实例可以包括物理主机(计算设备)、虚拟机、容器中的至少一种。进一步地,上述计算实例可以是一台或者多台。例如,抽取模块410可以包括运行在多个主机/虚拟机/容器上的代码。需要说明的是,用于运行该代码的多个主机/虚拟机/容器可以分布在相同的区域(region)中,也可以分布在不同的region中。进一步地,用于运行该代码的多个主机/虚拟机/容器可以分布在相同的可用区(availability zone,AZ)中,也可以分布在不同的AZ中,每个AZ包括一个数据中心或多个地理位置相近的数据中心。其中,通常一个region可以包括多个AZ。
同样,用于运行该代码的多个主机/虚拟机/容器可以分布在同一个虚拟私有云(virtual private cloud,VPC)中,也可以分布在多个VPC中。其中,通常一个VPC设置在一个region内,同一region内两个VPC之间,以及不同region的VPC之间跨区通信需在每个VPC内设置通信网关,经通信网关实现VPC之间的互连。
模块作为硬件功能单元的一种举例,抽取模块410可以包括至少一个计算设备,如服务器等。或者,抽取模块410也可以是利用专用集成电路(application-specificintegrated circuit,ASIC)实现、或可编程逻辑器件(programmable logic device,PLD)实现的设备等。其中,上述PLD可以是复杂程序逻辑器件(complex programmable logicaldevice,CPLD)、现场可编程门阵列(field-programmable gate array,FPGA)、通用阵列逻辑(generic array logic,GAL)或其任意组合实现。
抽取模块410包括的多个计算设备可以分布在相同的region中,也可以分布在不同的region中。抽取模块410包括的多个计算设备可以分布在相同的AZ中,也可以分布在不同的AZ中。同样,抽取模块410包括的多个计算设备可以分布在同一个VPC中,也可以分布在多个VPC中。其中,该多个计算设备可以是服务器、ASIC、PLD、CPLD、FPGA和GAL等计算设备的任意组合。
需要说明的是,在其他实施例中,抽取模块410可以用于执行数据同步方法中的任意步骤,传输模块420可以用于执行数据同步方法中的任意步骤,过滤模块430可以用于执行数据同步方法中的任意步骤,回放模块440可以用于执行数据同步方法中的任意步骤。抽取模块410、传输模块420、过滤模块430和回放模块440负责实现的步骤可根据需要指定,通过抽取模块410、传输模块420、过滤模块430以及回放模块440分别实现数据同步方法中不同的步骤来实现数据同步装置的全部功能。
本申请还提供一种计算设备500。如图5所示,计算设备500包括:总线502、处理器504、存储器506和通信接口508。处理器504、存储器506和通信接口508之间通过总线502通信。计算设备500可以是服务器或终端设备。应理解,本申请不限定计算设备500中的处理器、存储器的个数。
总线502可以是外设部件互连标准(peripheral component interconnect,PCI)总线或扩展工业标准结构(extended industry standard architecture,EISA)总线等。总线可以分为地址总线、数据总线、控制总线等。为便于表示,图5中仅用一条线表示,但并不表示仅有一根总线或一种类型的总线。总线502可包括在计算设备500各个部件(例如,存储器506、处理器504、通信接口508)之间传送信息的通路。
处理器504可以包括中央处理器(central processing unit,CPU)、图形处理器(graphics processing unit,GPU)、微处理器(micro processor,MP)或者数字信号处理器(digital signal processor,DSP)等处理器中的任意一种或多种。
存储器506可以包括易失性存储器(volatile memory),例如随机存取存储器(random access memory,RAM)。存储器506还可以包括非易失性存储器(non-volatilememory),例如只读存储器(read-only memory,ROM),快闪存储器,机械硬盘(hard diskdrive,HDD)或固态硬盘(solid state drive,SSD)。
存储器506中存储有可执行的程序代码,处理器504执行该可执行的程序代码以分别实现前述抽取模块410、传输模块420、过滤模块430和回放模块440的功能,从而实现数据同步方法。也即,存储器506上存有用于执行数据同步方法的指令。
通信接口508使用例如但不限于网络接口卡、收发器一类的收发模块,来实现计算设备500与其他设备或通信网络之间的通信。
本申请实施例还提供了一种计算设备集群。该计算设备集群包括至少一台计算设备。该计算设备可以是服务器,例如是中心服务器、边缘服务器,或者是本地数据中心中的本地服务器。在一些实施例中,计算设备也可以是台式机、笔记本电脑或者智能手机等终端设备。
如图6所示,该计算设备集群包括至少一个计算设备500。计算设备集群中的一个或多个计算设备500中的存储器506中可以存有相同的用于执行数据同步方法的指令。
在一些可能的实现方式中,该计算设备集群中的一个或多个计算设备500的存储器506中也可以分别存有用于执行数据同步方法的部分指令。换言之,一个或多个计算设备500的组合可以共同执行用于执行数据同步方法的指令。
需要说明的是,计算设备集群中的不同的计算设备500中的存储器506可以存储不同的指令,分别用于执行数据同步装置的部分功能。也即,不同的计算设备500中的存储器506存储的指令可以实现抽取模块410、传输模块420、过滤模块430和回放模块440中的一个或多个模块的功能。
在一些可能的实现方式中,计算设备集群中的一个或多个计算设备可以通过网络连接。其中,该网络可以是广域网或局域网等等。图8示出了一种可能的实现方式。如图7所示,两个计算设备500A和500B之间通过网络进行连接。具体地,通过各个计算设备中的通信接口与该网络进行连接。在这一类可能的实现方式中,计算设备500A中的存储器506中存有执行抽取模块410和传输模块420的功能的指令。同时,计算设备500B中的存储器506中存有执行过滤模块430和回放模块440的功能的指令。
图7所示的计算设备集群之间的连接方式可以是考虑到本申请提供的数据同步方法需要大量地传输全量数据和过滤增量数据,因此考虑将过滤模块430和回放模块440实现的功能交由计算设备500B执行。
应理解,图7中示出的计算设备500A的功能也可以由多个计算设备500完成。同样,计算设备500B的功能也可以由多个计算设备500完成。
本申请实施例还提供了另一种计算设备集群。该计算设备集群中各计算设备之间的连接关系可以类似的参考图6和图7中的计算设备集群的连接方式。不同的是,该计算设备集群中的一个或多个计算设备500中的存储器506中可以存有相同的用于执行数据同步方法的指令。
在一些实施例中,该计算设备集群中的一个或多个计算设备500的存储器506中也可以分别存有用于执行数据同步方法的部分指令。换言之,一个或多个计算设备500的组合可以共同执行用于执行数据同步方法的指令。
本申请实施例还提供了一种包含指令的计算机程序产品。该计算机程序产品可以是包含指令的,能够运行在计算设备上或被储存在任何可用介质中的软件或程序产品。当该计算机程序产品在至少一个计算设备上运行时,使得至少一个计算设备数据同步方法。
本申请实施例还提供了一种计算机可读存储介质。该计算机可读存储介质可以是计算设备能够存储的任何可用介质或者是包含一个或多个可用介质的数据中心等数据存储设备。该可用介质可以是磁性介质,(例如,软盘、硬盘、磁带)、光介质(例如,DVD)、或者半导体介质(例如固态硬盘)等。该计算机可读存储介质包括指令,该指令指示计算设备执行数据同步方法。
图8示出了本申请实施例提供的另一种数据同步方法。图8以PostgreSQL为例进行说明。
参见图8,源数据库810可以包括全量数据811和增量数据812,其中本申请实施例所称的全量数据是指数据同步进程启动后,源数据库中存在的数据。下面描述图8的一些实施例。
在全量同步启动之前,增量抽取模块820可以启动增量抽取。具体地,可以启动一个非临时的逻辑复制槽821,如果逻辑复制槽821不存在,会先创建一个逻辑复制槽821。
在增量数据的事务信息中,由于缺乏世代信息,无法直接与全量数据同步阶段获取的事务快照信息进行可见性判断。
增量抽取模块820的事务信息转换组件822会在每次推进位点之后,再次读取增量数据时,通过PostgreSQL的对应接口获取一个事务信息作为基准点,基于获取的基准点来计算增量数据的事务信息的世代信息。具体地,基于PostgreSQL的回卷机制,增量数据的事务信息的世代与基准点相同或者相邻。通过比较基准点的低32位事务号与增量数据的事务号,可以判断增量数据的世代与基准点的世代相同还是相邻,从而计算出增量数据的事务信息的世代信息。
将世代信息加入增量数据的事务信息中,从而将增量数据的事务信息转换为可以进行可见性判断的格式。
在全量传输模块830中,以数据分片作为读取的最小单元,每个读取事务负责读取一个数据分片。全量传输模块可以包括分片组件831,该分片组件按照一定的规则将全量数据划分为多个数据分片,并组成查询条件。例如,分片组件可以按照区间进行划分,无法划分的表或者数据量较小的表可以作为一个数据分片。全量传输组件832用于将读取到的数据分片传输到目标数据库850中。
在一些实施例中,多个数据分片可以并行传输,从而提高了数据同步的效率。当全量数据同步阶段中断时,已完成传输的数据分片不用再重新传输,达到了以数据分片为粒度进行断点续传的目的。
PostgreSQL会为每次查询自动生成一个快照,并提供了获取快照信息的接口。全量传输模块的快照组件在每次读取数据分片时,可以显式启动一个可重复读隔离级别的事务;事务中所有的查询都将使用相同的快照信息,该快照信息会被临时存储。
增量回放模块840可以包括数据过滤组件841,在每条增量数据回放前,通过将增量数据的事务信息与对应全量数据分片的快照信息进行可见性判断来过滤数据。如果增量数据对全量分片的快照是可见的,该条数据将不再被增量回放组件842进行回放,反之,该条数据将被增量回放组件842回放到目标数据库850中。通过事务快照信息的精确过滤,可以使已经同步过的增量数据不会重复回放。
本申请实施例提供的数据同步方法,将增量数据抽取先于全量数据同步阶段启动,与过滤增量数据相结合,使全量数据的读取与逻辑复制槽的创建解耦,避免了数据缺失、数据冲突、锁表和长期持有快照,减少了对源数据库业务的影响。
最后应说明的是:以上实施例仅用以说明本申请的技术方案,而非对其限制;尽管参照前述实施例对本申请进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本申请各实施例技术方案的保护范围。

Claims (26)

1.一种数据同步方法,其特征在于,所述方法用于把源数据库的数据传输到目标数据库,所述方法包括:
数据同步装置在第一时刻开始从所述源数据库中抽取增量数据,其中,所述增量数据是所述源数据库在所述第一时刻之后被插入、更新或删除的数据;
所述数据同步装置根据所述源数据库在第二时刻的待同步数据的快照,将所述待同步数据传输到所述目标数据库中,其中,所述第一时刻在所述第二时刻之前;
所述数据同步装置过滤所述增量数据中与所述待同步数据重复的数据;
所述数据同步装置将过滤后的增量数据回放到所述目标数据库中。
2.根据权利要求1所述的方法,其特征在于,所述源数据库包括多个数据分片,所述待同步数据是所述多个数据分片之一。
3.根据权利要求1或2所述的方法,其特征在于,所述数据同步装置过滤所述增量数据中与所述待同步数据重复的数据,包括:
所述数据同步装置获取所述待同步数据的快照信息;
所述数据同步装置将所述快照信息与所述增量数据的事务信息进行可见性判断,以过滤所述增量数据中与所述待同步数据重复的数据。
4.根据权利要求1至3中任意一项所述的方法,其特征在于,所述源数据库是以PostgreSQL为数据源的数据库。
5.根据权利要求3所述的方法,其特征在于,还包括:
所述数据同步装置确定所述增量数据的世代信息;
所述数据同步装置将所述世代信息加入所述增量数据的事务信息;
其中,所述数据同步装置将所述快照信息与所述增量数据的事务信息进行可见性判断,包括:
所述数据同步装置将所述快照信息与带有世代信息的事务信息进行可见性判断。
6.根据权利要求5所述的方法,其特征在于,所述数据同步装置在第一时刻开始从所述源数据库中抽取增量数据,包括:
所述数据同步装置在所述第一时刻确定逻辑复制槽,其中,所述逻辑复制槽用于传输和控制所述增量数据,所述逻辑复制槽包括位点;
其中,所述数据同步装置确定所述增量数据的世代信息,包括:
所述数据同步装置在所述逻辑复制槽的位点推进时,获取基准点;
所述数据同步装置根据所述基准点与所述增量数据,确定所述增量数据的世代信息。
7.根据权利要求2至6中任意一项所述的方法,其特征在于,所述待同步数据包括至少一条记录,每条记录对应一个标识,所述方法还包括:
所述数据同步装置根据所述待同步数据的至少一条记录对应的标识,获取所述待同步数据的快照。
8.根据权利要求7所述的方法,其特征在于,所述待同步数据的至少一条记录对应的标识属于一个区间。
9.根据权利要求7或8所述的方法,其特征在于,所述多个数据分片的记录对应的标识不重叠。
10.根据权利要求1至9中任意一项所述的方法,其特征在于,所述方法应用于云数据中心。
11.一种数据同步装置,其特征在于,所述装置用于把源数据库的数据传输到目标数据库,所述装置包括:
抽取模块,用于在第一时刻开始从所述源数据库中抽取增量数据,其中,所述增量数据是所述源数据库在所述第一时刻之后被插入、更新或删除的数据;
传输模块,用于根据所述源数据库在第二时刻的待同步数据的快照,将所述待同步数据传输到所述目标数据库中,其中,所述第一时刻在所述第二时刻之前;
过滤模块,用于过滤所述增量数据中的与所述待同步数据重复的数据;
回放模块,用于将过滤后的增量数据回放到所述目标数据库中。
12.根据权利要求11所述的装置,其特征在于,所述源数据库包括多个数据分片,所述待同步数据是所述多个数据分片之一。
13.根据权利要求11或12所述的装置,其特征在于,所述过滤模块具体用于:
获取所述待同步数据的快照信息;
将所述快照信息与所述增量数据的事务信息进行可见性判断,以过滤所述增量数据中与所述待同步数据重复的数据。
14.根据权利要求11至13中任意一项所述的装置,其特征在于,所述源数据库是以PostgreSQL为数据源的数据库。
15.根据权利要求13所述的装置,其特征在于,还包括:
转换模块,用于确定所述增量数据的世代信息;
所述转换模块还用于将所述世代信息加入所述增量数据的事务信息;
其中,所述过滤模块具体用于将所述快照信息与带有世代信息的事务信息进行可见性判断。
16.根据权利要求15所述的装置,其特征在于,所述抽取模块具体用于在所述第一时刻确定逻辑复制槽,其中,所述逻辑复制槽用于传输和控制所述增量数据,所述逻辑复制槽包括位点;
其中,所述转换模块具体用于:
在所述逻辑复制槽的位点推进时,获取基准点;
根据所述基准点和所述增量数据,确定所述增量数据的世代信息。
17.根据权利要求12至16中任意一项所述的装置,其特征在于,所述待同步数据包括至少一条记录,每条记录对应一个标识,所述装置还包括:
获取模块,用于根据所述待同步数据的至少一条记录对应的标识,获取所述待同步数据的快照。
18.根据权利要求17所述的装置,其特征在于,所述待同步数据的至少一条记录对应的标识属于一个区间。
19.根据权利要求17或18所述的装置,其特征在于,所述多个数据分片的记录对应的标识不重叠。
20.根据权利要求11至19中任意一项所述的装置,其特征在于,所述装置应用于云数据中心。
21.一种计算设备,其特征在于,包括处理器和存储器,所述处理器用于执行所述存储器中存储的指令,以使得所述计算设备执行如权利要求1至10中任意一项所述的方法。
22.一种计算设备集群,其特征在于,包括至少一个计算设备,每个计算设备包括处理器和存储器;
所述至少一个计算设备的处理器用于执行所述至少一个计算设备的存储器中存储的指令,以使得所述计算设备集群执行如权利要求1至10中任意一项所述的方法。
23.一种包含指令的计算机程序产品,其特征在于,当所述指令被计算设备运行时,使得所述计算设备执行如权利要求1至10中任意一项所述的方法。
24.一种包含指令的计算机程序产品,其特征在于,当所述指令被计算设备集群运行时,使得所述计算设备集群执行如权利要求1至10中任意一项所述的方法。
25.一种计算机可读存储介质,其特征在于,包括计算机程序指令,当所述计算机程序指令由计算设备执行时,所述计算设备执行如权利要求1至10中任意一项所述的方法。
26.一种计算机可读存储介质,其特征在于,包括计算机程序指令,当所述计算机程序指令由计算设备集群执行时,所述计算设备集群执行如权利要求1至10中任意一项所述的方法。
CN202310165047.2A 2023-02-24 2023-02-24 数据同步方法和装置 Pending CN118585577A (zh)

Priority Applications (2)

Application Number Priority Date Filing Date Title
CN202310165047.2A CN118585577A (zh) 2023-02-24 2023-02-24 数据同步方法和装置
PCT/CN2023/120314 WO2024174516A1 (zh) 2023-02-24 2023-09-21 数据同步方法和装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202310165047.2A CN118585577A (zh) 2023-02-24 2023-02-24 数据同步方法和装置

Publications (1)

Publication Number Publication Date
CN118585577A true CN118585577A (zh) 2024-09-03

Family

ID=92500176

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202310165047.2A Pending CN118585577A (zh) 2023-02-24 2023-02-24 数据同步方法和装置

Country Status (2)

Country Link
CN (1) CN118585577A (zh)
WO (1) WO2024174516A1 (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN119988355A (zh) * 2025-04-11 2025-05-13 深圳华为云计算技术有限公司 一种数据库管理方法、数据库管理装置以及计算设备集群

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN118796801B (zh) * 2024-09-12 2025-01-28 苏州吉呗思数据技术有限公司 数据迁移方法、装置及电子设备

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11630814B2 (en) * 2020-12-10 2023-04-18 International Business Machines Corporation Automated online upgrade of database replication
CN113094442B (zh) * 2021-04-30 2024-04-19 广州虎牙科技有限公司 全量数据同步方法、装置、设备和介质
CN113535856B (zh) * 2021-07-29 2022-11-04 上海哔哩哔哩科技有限公司 数据同步方法及系统
CN114896641B (zh) * 2022-05-06 2025-01-03 平凯星辰(北京)科技有限公司 数据校验方法、装置、电子设备及计算机可读存储介质

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN119988355A (zh) * 2025-04-11 2025-05-13 深圳华为云计算技术有限公司 一种数据库管理方法、数据库管理装置以及计算设备集群

Also Published As

Publication number Publication date
WO2024174516A1 (zh) 2024-08-29

Similar Documents

Publication Publication Date Title
CA3121919C (en) System and method for augmenting database applications with blockchain technology
US10802921B2 (en) Systems and methods including committing a note to master and slave copies of a data volume based on sequential operation numbers
CN111143389B (zh) 事务执行方法、装置、计算机设备及存储介质
JP5918244B2 (ja) フォールトトレラントデータベース管理システムにおいてクエリ結果を統合するシステム及び方法
WO2024174516A1 (zh) 数据同步方法和装置
JP2013545162A5 (zh)
US11627122B2 (en) Inter-system linking method and node
CN116134420A (zh) 使用多个区块链以将事务应用于持久存储系统中的持久数据对象集
CN110825546A (zh) 一种面向高可用数据库集群的恢复方法、系统及设备终端
CN113377763B (zh) 数据库表格切换方法、装置、电子设备及计算机存储介质
US20100293143A1 (en) Initialization of database for synchronization
US20240394241A1 (en) Transactionally consistent database exports
CN110704239B (zh) 数据复制方法、装置、电子设备
CN114579559A (zh) 数据同步方法及装置、计算机设备、存储介质
CN115484274B (zh) 数据的同步系统和方法
CN116089359A (zh) 数据库快照的生成方法、装置、电子设备和介质
CN116049306A (zh) 数据同步方法、装置、电子设备以及可读存储介质
CN116339609A (zh) 一种数据处理方法以及存储设备
WO2024178935A1 (zh) 日志同步方法、装置、电子设备及存储介质
CN114722125B (zh) 数据库事务处理的方法、装置、设备和计算机可读介质
CN115473930B (zh) 一种跨运行环境的文件预置方法
WO2025044090A1 (zh) 一种对象存储系统、数据处理方法及相关设备
CN119645722A (zh) 一种数据恢复的方法和装置
CN119961350A (zh) 一种在线扩容方法以及云数据库系统
WO2024193138A1 (zh) 事务处理方法及相关设备

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication