CN115481198A - 数据表同步方法、装置、计算机设备、存储介质 - Google Patents
数据表同步方法、装置、计算机设备、存储介质 Download PDFInfo
- Publication number
- CN115481198A CN115481198A CN202211178512.8A CN202211178512A CN115481198A CN 115481198 A CN115481198 A CN 115481198A CN 202211178512 A CN202211178512 A CN 202211178512A CN 115481198 A CN115481198 A CN 115481198A
- Authority
- CN
- China
- Prior art keywords
- cluster
- data
- synchronization
- target cluster
- metadata
- 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
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
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/25—Integrating or interfacing systems involving database management systems
- G06F16/258—Data format conversion from or to a database
-
- 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/28—Databases characterised by their database models, e.g. relational or object models
- G06F16/283—Multi-dimensional databases or data warehouses, e.g. MOLAP or ROLAP
Abstract
本公开涉及一种数据表同步方法、装置、计算机设备、存储介质。所述方法包括:获取源集群和目标集群的组件版本信息;响应于所述源集群的组件版本信息和目标集群的组件版本信息存在版本差异,根据所述版本差异对应的差异点对所述源集群中数据表的元数据进行转换;与所述目标集群进行交互,将转换后得到的元数据写入至目标集群的元数据库中;根据所述版本差异确定所述目标集群的主数据的存储路径,利用所述存储路径对所述源集群和目标集群的主数据进行同步。采用本方法能够解决目前数据处理工具在不同的Hive表版本之间无法复制或者无法兼容的问题。
Description
技术领域
本公开涉及数据处理技术领域,特别是涉及一种数据表同步方法、装置、计算机设备、存储介质。
背景技术
随着大数据的发展,各种行业产生的数据量呈现指数级的增长。而对于一些大型的网络公司或者金融机构,每天需要处理的数据量非常大,通常的数据量以TB为单位。而面对巨大的数据量,一般的数据处理软件难以满足需求。因此,通常会使用一些数据处理工具来对大量的数据进行处理。
目前,例如Sqoop、BDR、Datax等数据处理工具在对比较复杂的业务场景进行同步时,一般的Hive表数据同步仅仅对原有表的结构进行复制,而且并非完全复刻,如在不同版本的集群中,复制前后,表的元数据中记录的数据存储位置发生变化。另外,通过Sqoop、BDR、Datax等数据处理工具在不同的Hive数据表版本之间有可能存在无法复制,或者无法兼容的情况。
发明内容
基于此,有必要针对上述技术问题,提供一种能够解决目前数据处理工具在不同的Hive数据表版本之间无法复制或者无法兼容的数据表同步方法、装置、计算机设备、存储介质。
第一方面,本公开提供了一种数据表同步方法。所述方法包括:
获取源集群和目标集群的组件版本信息;
响应于所述源集群的组件版本信息和目标集群的组件版本信息存在版本差异,根据所述版本差异对应的差异点对所述源集群中数据表的元数据进行复制和转换;
与所述目标集群进行交互,将转换后得到的元数据写入至目标集群的元数据库中;
根据所述版本差异确定所述目标集群的主数据的存储路径,利用所述存储路径将所述源集群和目标集群中数据表的主数据进行同步。
在其中一个实施例中,所述方法还包括:
在主数据进行同步的过程中,响应于主数据进行同步时出现异常情况,导致同步失败,则将该主数据进行同步时对应的同步任务加入预先创建的同步队列;
当满足预先设置的重试条件时,对所述同步队列中同步失败的所述源集群和目标集群的主数据再次进行同步。
在其中一个实施例中,所述方法还包括:
响应于接收到极速同步指令,仅根据所述版本差异确定所述目标集群的主数据的存储路径,利用所述存储路径对所述源集群和目标集群的主数据进行同步,所述极速同步指令表征无需进行元数据比对;
在对所述源集群和目标集群的多个数据表进行同步的过程中,响应于接收到失败日志,确定与所述失败日志对应的同步失败的数据表,其中,所述失败日志表征对数据表进行同步的过程中同步终止或者失败;
利用断点续传继续从同步终止或失败的数据表开始进行同步。
在其中一个实施例中,所述利用所述存储路径对所述源集群和目标集群的主数据进行同步,包括:
根据所述源集群或目标集群的集群性能和资源确定并行同步的进程数;
利用所述进程数和所述存储路径并行对所述源集群和目标集群的主数据进行同步。
在其中一个实施例中,所述根据所述版本差异对应的差异点对所述源集群中数据表的元数据进行转换之前,所述方法还包括:
响应于接收到修改参数,根据修改参数对所述源集群中数据表的元数据进行修改。
在其中一个实施例中,所述方法还包括:
在对主数据进行同步的过程中,分别在所述源集群和目标集群中建立快照;
响应于接收到同步日志,删除所述源集群中的所述快照,以及,对所述目标集群中的主数据进行一致性校验,其中,所述同步日志表征进行同步完成;
响应于接收到查杀命令,获取进行同步时对应的进程,根据所述查杀命令终止所述进程,并停止进行同步。
第二方面,本公开还提供了一种数据表同步装置。所述装置包括:
信息获取模块,用于获取源集群和目标集群的组件版本信息;
数据转换模块,用于响应于所述源集群的组件版本信息和目标集群的组件版本信息存在版本差异,根据所述版本差异对应的差异点对所述源集群中数据表的元数据进行复制和转换;
数据交互模块,用于与所述目标集群进行交互,将转换后得到的元数据写入至目标集群的元数据库中;
数据同步模块,用于根据所述版本差异确定所述目标集群的主数据的存储路径,利用所述存储路径将所述源集群和目标集群中数据表的主数据进行同步。
第三方面,本公开还提供了一种计算机设备。所述计算机设备包括存储器和处理器,所述存储器存储有计算机程序,所述处理器执行所述计算机程序时实现任一方法实施例的步骤。
第四方面,本公开还提供了一种计算机可读存储介质。所述计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现任一方法实施例的步骤。
第五方面,本公开还提供了一种计算机程序产品。所述计算机程序产品,包括计算机程序,该计算机程序被处理器执行时实现上述任一方法实施例的步骤。
上述各实施例中,获取源集群和目标集群的组件版本信息,若组件版本信息存在版本差异则对元数据进行复制和转换,然后将转换后得到的元数据写入至目标集群的元数据库中,根据元数据差异进行调整,从而使得不同组件版本信息间仍可进行数据同步,能够消除不同版本之间的差异。另外根据所述版本差异确定所述目标集群的主数据的存储路径,利用所述存储路径将所述源集群和目标集群中数据表的主数据进行同步,可以在源集群和目标集群组件版本信息存在差异时,通过完成不同版本间主数据存储路径的转换,完成主数据同步,保证待同步的数据表(源集群中的数据表)类型不发生改变。在组件版本信息存在差异的情况下,通过对元数据和主数据两种不同的处理方式,能够解决目前数据处理工具在不同的Hive版本之间数据表无法复制或者无法兼容问题。
附图说明
为了更清楚地说明本公开具体实施方式或现有技术中的技术方案,下面将对具体实施方式或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本公开的一些实施方式,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为一个实施例中数据表同步方法的应用环境示意图;
图2为一个实施例中数据表同步方法的流程示意图;
图3为一个实施例中重试步骤的流程示意图;
图4为一个实施例中极速同步和断点续传步骤的流程示意图;
图5为一个实施例中S208步骤和S402步骤的流程示意图;
图6为一个实施例中快照同步、一致性校验和查杀步骤的流程示意图;
图7为另一个实施例中数据表同步方法的流程示意图;
图8为一个实施例中数据表同步装置的结构示意框图;
图9为一个实施例中计算机设备的内部结构示意图。
具体实施方式
为了使本公开的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本公开进行进一步详细说明。应当理解,此处描述的具体实施例仅仅用以解释本公开,并不用于限定本公开。
需要说明的是,本文的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本文的实施例能够以除了在这里图示或描述的那些以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、装置、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
在本文中,术语“和/或”仅仅是一种描述关联对象的关联关系,表示可以存在三种关系。例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。另外,本文中字符“/”,一般表示前后关联对象是一种“或”的关系。
正如背景技术所述,目前的数据处理的软件可以包括如:基于传统数据库到集群数据同步的Sqoop,Sqoop是Apache旗下一款用来将Hadoop和关系型数据相互转移的工具。其使用范围有所限定,仅可从MySQL、Oracle、Postgres等关系型数据库数据导入到HDFS中,也可以从HDFS(Hadoop Distributed File System)导入到关系型数据库中。也存在针对大数据集群应用的数据同步软件:Cloudera的BDR以及阿里的Datax。BDR是Cloudera提供的企业级数据同步工具,该软件集成在Cloudera Manager中,通过页面化的配置方式提供用户进行数据同步和备份操作。该软件能够实现不同CDH(Cloudera Distribution Hadoop的简称)集群间Hive数据表和HDFS数据文件的同步,同时在CDH的版本兼容性上也有不错的表现。Datax是阿里开源的异构数据源离线同步工具,能够支持大多数类型的数据源。同时,该软件简单易用、运行稳定、并且能够很好的保证数据质量,因此该软件在国内有着比较广泛的应用。
目前,对于大数据的存储,大多数都是用的是Hive仓库。Hive是建立在Hadoop上的数据仓库架构,常用的数据加载、提取和转化都可以在Hive中实现。因其定义的HQL语法相对于使用过MySQL的用户来说比较容易接受,因此学习成本低。同时其适用于大批量数据的分析,因此应用比较广泛。对于Hive中的数据表存储、备份也就成了拥有大量数据的企业每天所要面对的问题。
数据库表的复制和备份在生产环境中应用的频次很高,在面对数据库表的复制和备份时,BDR对于表的复制,虽然可以改变库的名称但无法做到对表的重命名,BDR在跨Hive版本的时候,无法保证数据表属性(内表/外表)的一致性,如数据表从CDH6到CDP7(Cloudera Data Platform的简称)同步时所有的表都将变为外表,存储位置也在不同版本集群中有所差异。Datax可以手动指定数据同步位置,但是每次都需要修改配置文件,对于用户来说操作不便。Datax则关注更高层次的数据同步,同步前需要在Hive库中手动新建表,无法做到自动建表,操作繁琐。在不同版本的集群复制时,源集群在复制的过程中对数据进行操作,无法保证在复制完成后,目标数据和原有集群数据一致。现有的数据表同步方案中,大多是通用数据同步,不注重表的同步,同时对于表的基础信息无法保证一致。
因此,为解决上述问题,本公开实施例提供了一种数据表同步方法,可以应用于如图1所示的应用环境中。其中,终端102通过网络分别与源集群104和目标集群106进行通信。终端102获取源集群104和目标集群106的组件版本信息。终端102判断源集群104的组件版本信息和目标集群106的组件版本信息是否存在差异。响应于源集群104和目标集群106的组件版本信息存在差异,终端102根据版本差异对应的差异点对源集群104中数据表的元数据进行复制和转换。终端102与目标集群106进行交互,将转换后得到的元数据写入目标集群106的元数据库中。终端102根据版本差异确定目标集群106的主数据的存储路径,终端102利用所述存储路径对源集群和目标集群的主数据进行同步。其中,终端102可以但不限于是各种个人计算机、笔记本电脑、智能手机、平板电脑等。源集群104和目标集群106可以用独立的服务器或者是多个服务器组成的服务器集群来实现。
在一个实施例中,如图2所示,提供了一种数据表同步方法,以该方法应用于图1中的终端102为例进行说明,包括以下步骤:
S202,获取源集群和目标集群的组件版本信息。
其中,源集群可以是需要备份数据的数据库或集群。目标集群可以是数据同步写入到的数据库或集群。组件版本信息通常可以是Hive的版本。可以包括:Hive 2.x、Hive3.x,其中x可以表示具体的小版本号。
具体地,可以连接至源集群和目标集群中,通过获取源集群和目标集群的集群配置,进而获取源集群的Hive的组件版本信息和目标集群Hive的组件版本信息。
在一些示例性的实施例中,可以通过本地的集群文件获取源集群和目标集群的集群配置,集群配置中可以包括:源集群和目标集群的组件的版本号。
可以理解的是,在执行本方案前,用户可以选择源集群、目标集群、源集群中的源表和目标集群中的目标表。选择这些参数可以完成待同步的Hive数据表的同步来源和同步目标。源集群、源表的信息可以定位需要同步的表;目标集群和目标表的信息可以定位源表同步到的目标位置。
S204,响应于所述源集群的组件版本信息和目标集群的组件版本信息存在版本差异,根据所述版本差异对应的差异点对所述源集群中数据表的元数据进行复制和转换。
其中,版本差异可以指的是大数据平台版本存在不同,例如CDH6和CDP7、CDH6和CDH5、CDP7和CDH5、CDP7和CDH6中。版本差异对应的差异点可以是每个不同版本中Hive组件版本之间的差异,例如CDH6和CDP7中Hive的差异版本。转换可以是将CDH6的Hive版本的数据表对象转换为CDP7中对应的Hive版本的数据表对象。本案中源集群和目标集群的元数据可以是用来表示Hive中的数据库,数据表,数据表的字段,分区,索引以及命名空间(一套命名规则为确保唯一标识)等。Hive中的表结构是元数据的一部分,Hive的数据表中的数据可以称之为主数据。元数据通常存储在关系型数据库中。Hive中所有的元数据通常情况下都维护在HMS(Hive metastore)中,并且Hive所有表和分区的元数据都可以通过HMS(Hivemetastore)进行访问。
具体地,由于源集群的组件版本信息和目标集群的组件版本信息存在版本差异,因此为了保证元数据复制到目标集群中可以适用,首先可以对源集群和目标集群中的数据表的元数据进行对比,通常情况下,存在版本差异时元数据对比后元数据也会存在差异。因此,需要对元数据进行转换,消除Hive版本差异而不修改Hive中表的结构。可以通过HMS(Hive metastore)获取源集群中源表的元数据,根据源集群和目标集群中对应的差异点,将元数据进行复制和转换,复制和转换后的元数据与目标集群的组件版本信息适配。对元数据进行调整主要是为了消除Hive版本差异而不修改Hive中数据表的结构,因此可以保证数据表的结构不会变化。
在一些示例性的实施例中,例如,源集群中的分区总共分为三个区,分别为A、B、C,而目标集群中的分区总共为两个区为C、D,则需要将源集群中的A、B、C三个区调整为目标集群中的A、B、C三个分区或者A、B、C、D四个分区,可以理解的是,上述仅用于举例说明,并不代表实际应用场景。
S206,与所述目标集群进行交互,将转换后得到的元数据写入至目标集群的元数据库中。
具体地,上述将元数据进行复制和转换后,可以与目标集群的HMS(Hivemetastore)进行交互,可以通过目标集群的HMS(Hive metastore)将复制和转换后的元数据直接写入到目标集群的元数据库中,即完成了元数据的同步。该元数据库通常可以是存储元数据的关系型数据库。
S208,根据所述版本差异确定所述目标集群的主数据的存储路径,利用所述存储路径将所述源集群和目标集群中数据表的主数据进行同步。
具体地,上述完成元数据的同步后,可以对主数据进行同步。因为源集群和目标集群存在版本差异,例如CDH和CDP之间,其所属的Hive版本不同,存储的内外表主数据的存储路径也不相同。如:CDH6到CDP7同步时,内部表同步后其表类型会转变成外部表,同时存储位置也由原来的/user/hive/warehouse目录转变为/warehouse/tablespace/managed/hive目录,这种情况不仅使得表类型无法保持一致,数据存储位置也发生了变化。因此,需要对数据存储的位置进行调整。继续以CDH6到CDP7同步时为例进行说明,若CDH6为源集群中Hive的版本,CDP7为目标集群中Hive的版本,则可以将CDH6对应的存储路径转换为目标集群CDP7版本对应的存储路径,修改后因为源集群中Hive版本和目标集群中Hive版本的存储路径相同。因此可以直接利用该存储路径对源集群和目标集群中的数据表的主数据进行同步。例如,可以将源集群中的主数据直接按照存储路径写入目标集群中。
上述数据表同步方法中,获取源集群和目标集群的组件版本信息,若组件版本信息存在版本差异则对元数据进行复制和转换,然后将转换后得到的元数据写入至目标集群的元数据库中,根据元数据差异进行调整,从而使得不同组件版本信息间仍可进行数据同步,能够消除不同版本之间的差异。另外根据所述版本差异确定所述目标集群的主数据的存储路径,利用所述存储路径将所述源集群和目标集群中数据表的主数据进行同步,可以在源集群和目标集群组件版本信息存在差异时,通过完成不同版本间主数据存储路径的转换,完成主数据同步,保证待同步的数据表(源集群中的数据表)类型不发生改变。在组件版本信息存在差异的情况下,通过对元数据和主数据两种不同的处理方式,能够解决目前数据处理工具在不同的Hive版本之间数据表无法复制或者无法兼容问题。
在一个实施例中,如图3所示,所述方法还包括:
S302,在主数据进行同步的过程中,响应于主数据进行同步时出现异常情况,导致同步失败,则将该主数据进行同步时对应的同步任务加入预先创建的同步队列。
S304,判断是否满足预先设置的重试条件。
S306,当满足预先设置的重试条件时,对所述同步队列中同步失败的所述源集群和目标集群的主数据再次进行同步。
当未满足预先设置的重试条件时,继续进行同步。
其中,异常情况可以是导致DistCp任务执行过程中失败退出的情况,例如网络抖动、网络瞬断、HDFS和YARN组件(负责执行DistCp任务)短暂服务异常等。DistCp(分布式拷贝)是用于大规模集群内部和集群之间拷贝的工具。它使用MapReduce实现文件分发,错误处理和恢复,以及报告生成。它把文件和目录的列表作为map任务的输入,每个任务会完成源表中主数据的拷贝。预先设置的重试条件可以是失败后间隔一段时间再次尝试,例如可以是间隔如5分钟、10分钟后对同步队列中的同步任务进行重试。预先设置的重试条件还可以是例如同步队列中的同步任务超过预先设置的数量阈值时,对同步队列中的同步任务进行重试。可以理解的是,根据不同的情况,本领域技术人员可以灵活的设置重试条件,在公开的一些实施例中不对重试条件进行具体的限制。
具体地,在主数据进行同步的过程中,若发生异常情况,则可能会导致主数据同步任务中某些表或者整个同步任务失败,且在执行日志中会有相应的错误信息。当在执行日志中找到相应的错误信息时,可以确定同步失败,以及同步失败对应的同步任务。可以将该同步任务加入预先创建的同步队列的队尾。当满足预先设置的重试条件时,可以依次获取同步队列中队首的同步任务进行处理,对同步失败的所述源集群和目标集群的主数据再次进行同步。直至同步队列中不存在失败的同步任务。当未满足预先设置的重试条件时,可以继续对所述源集群和目标集群的主数据进行同步。
在一些示例性的实施例中,例如,需要同步的表为A、B、C、D四个表。其中,若在对B表的主数据进行同步过程中,出现异常情况,导致同步B表中所有主数据,即同步B表的同步任务失败,则可以将B表对应的同步任务加入预先创建的同步队列的队尾。继续对C表进行同步任务,若对C表进行同步任务的时,也出现异常情况,同步C表的同步任务失败,可以将C表对应的同步任务加入上述的同步队列的队尾,相应的同步队列中依次为:B表同步任务和C表同步任务。当满足预先设置的重试条件时,可以执行同步队列中B表的同步任务,然后执行C表的同步任务。当未满足预先设置的重试条件时,可以继续对D表的主数据进行同步。
本实施例中,通过将同步失败对应的同步任务加入同步队列中,能够保证同步失败的同步任务不丢失,减少了任务的创建次数,另外,当满足预先设置的重试条件时,便可以对同步队列中同步失败对应的同步任务再次进行重试,保证每个同步任务均执行完成。考虑到可能因集群情况导致任务失败,而集群状态一时难以恢复,可以把失败的同步任务移动到队列末端,其他正常的任务优先执行。
在一个实施例中,如图4所示,所述方法还包括:
S402,响应于接收到极速同步指令,仅根据所述版本差异确定所述目标集群的主数据的存储路径,利用所述存储路径对所述源集群和目标集群的主数据进行同步;
其中,所述极速同步指令表征无需进行元数据比对。极速同步指令通常可以是用户需要快速进行数据表同步时而发出的指令。
具体地,当用户需要快速的进行数据表同步时,通常会发出极速同步指令。当接收到极速同步指令时,并且默认的场景是将源集群中的数据首次同步到目标集群。如果目标集群上相应的与源集群中对应的表已存在,也会认为是表已经过时而进行覆盖。因此,在接收到极速同步指令时,不考虑做元数据的对比,默认目标集群不存在与源集群相同的数据库和数据表,如存在则直接覆盖,仅仅进行元数据的复制和转换。可以直接利用所述存储路径对所述源集群和目标集群的主数据进行同步。
S404,在对所述源集群和目标集群的多个数据表进行同步的过程中,响应于接收到失败日志,确定与所述失败日志对应的同步失败的数据表;
S406,利用断点续传继续从同步失败的数据表开始进行同步。
其中,所述失败日志表征对数据表进行同步的过程中同步终止或者失败。
具体地,当同步任务涉及到大量的数据表同步时,则需要对源集群和目标集群的多个数据表进行同步。在对源集群和目标集群的多个数据表进行同步的过程中,若接收到失败日志时,则可以通过失败日志确定对应的数据表进行同步终止或者失败。可以利用断点续传功能从同步终止或失败的数据表继续进行同步,同步失败的数据表可以包括:数据表中的主数据同步失败和数据表中的元数据同步失败。当元数据同步失败时,可以再次对元数据进行复制和转换,当主数据同步失败时,可以再次确定存储路径,利用存储路径进行主数据的同步。
在一些示例性的实施例中,例如同步任务需要同步1000张表的数据。在同步第600张表时因为同步任务发起节点系统故障导致同步失败,可以通过启动同步程序,利用同步程序中断点续传功能从第600张表进行继续进行同步,同步过程包括了元数据复制和转换以及主数据同步。
在本实施例中,通过不进行元数据的比对,直接对元数据和主数据进行同步,由于省去了元数据比对环节,可以提高数据表同步的效率。同步任务进行断点保护,在发生同步失败时,不会从开始节点重新进行数据同步,保证了同步任务的执行效率。
在一个实施例中,如图5所示,所述利用所述存储路径对所述源集群和目标集群的主数据进行同步,包括:
S502,根据所述源集群或目标集群的集群性能和资源确定并行同步的进程数。
S504,利用所述进程数和所述存储路径并行对所述源集群和目标集群的主数据进行同步。
其中,集群性能可以理解为进行同步时使用计算资源、IO资源和硬盘资源。计算资源一般指计算机程序运行时所需的CPU资源、内存资源和网络资源等。资源在本案中通常可以是进行同步主数据时需要使用的计算资源。
具体的,进行同步的集群性能可以选择使用源集群或者目标集群的集群性能。因此,可以选择使用源集群或者目标集群为数据同步(包括元数据复制和转换和主数据同步)提供计算资源。然后确定进行数据同步时需要使用计算资源,根据集群性能和计算资源确定可以并进同步的进程数。依照修改后的进程数和存储路径并行对所述源集群和目标集群进行数据同步。在一些示例性的实施例中,可以使用资源池的方式来控制进程数。资源池是管理数据同步的线程,即线程资源池。通过管理线程资源池来控制最大的表同步的并行进行同步的并行数。而在主数据进行同步完成后,可以销毁线程资源池。若使用的集群性能为100,进行同步主数据时需要使用的计算资源为50,则可以确定并行同步的进程数可以为2。可以理解的是,上述集群性能和计算资源仅用于举例说明。
在本实施例中,通过确定并行同步的进程数,多个进程同时处理,加快了数据表的同步速度,充分利用集群的闲置资源。
在一个实施例中,所述根据所述版本差异对应的差异点对所述源集群中数据表的元数据进行转换之前,所述方法还包括:
响应于接收到修改参数,根据修改参数对所述源集群中数据表的元数据进行修改。
其中,修改参数通常可以包括需要修改的数据库名和表名等。
具体地,在进行元数据转换的过程中,用户可以输入修改参数,根据修改参数对所述源集群中数据表的元数据进行拷贝和修改,源集群的数据表(源表)的元数据保持不变,即修改参数通常会直接影响元数据的转换。在进行元数据转换时,可以将修改后的源集群中数据表的元数据进行转换。目标集群可以根据转换后的元数据中的修改参数生成对应的数据库名和表名。
在本实施例中,在进行数据表同步的过程中,可以对目标集群的库和表进行重新命名,满足用户需求。
在一个实施例中,如图6所示,所述方法还包括:
S602,在对主数据进行同步的过程中,分别在所述源集群和目标集群中建立快照。
其中,快照通常可以是HDFS的snapshot,是HDFS文件系统在某一时刻只读的镜像;可以是一个完整的文件系统也可以是某个目录的镜像。
具体地,在源集群中建立快照,确保在数据同步的过程中源集群数据不会发生改变。同时在目标集群中,也会建立快照,该快照的目的是防止主数据同步发生错误,目标集群数据受到污染。
S604,响应于接收到同步日志,删除所述源集群中的所述快照,以及,对所述目标集群中的主数据进行一致性校验,其中,所述同步日志表征进行同步完成。
具体地,数据同步任务中每张表都由一个线程执行,当该线程执行完成且成功返回后则可以确定数据表的主数据和元数据同步完成。同时,任务执行完成也会有相应的日志输出。该输出的日志可以为同步日志。当接收到同步日志后,源集群的快照将会被删除。对进行同步的数据表中的主数据进行一致性校验,确认数据同步结果的正确性。如果数据同步后的结果不一致则数据同步失败,可以进行提示,或者再次进行主数据同步。
在一些示例性的实施例中,一致性校验的方式可以为CRC校验,对源集群和目标集群的主数据使用CRC生成校验码,对比校验码确认数据是否一致。一致性校验的方式还可以为:奇偶校验,累加校验等。
S606,响应于接收到查杀命令,获取进行同步时对应的进程,根据所述查杀命令终止所述进程,并停止进行同步。
其中,查杀命令通常可以是终止同步的命令。
具体地,该功能可对于正在运行的同步时,对应的同步任务进行查杀,可以通过在操作系统中获取同步任务的进程,然后终止该进程完成查杀。在完成当前表的同步后,后续的表将不进行同步。
在本实施例中,源集群快照保证数据同步的表主数据不变,对目标集群进行快照,确保其可恢复,保证数据不会因为同步任务异常导致目标集群产生脏数据。同时对已产生的快照进行清理(源集群),避免源集群空间占用过多。
在一个实施例中,响应于接收到操作命令,解析所述操作命令,执行所述操作命令对应的功能。所述功能可以包括:利用并行数进行并行同步、利用重试次数进行同步任务的重试、是否使用快照、是否跳过CRC校验、DistCp同步模式、单表多表模式、带宽大小、DistCp的MAP数、极速模式、断点续传模式、主任务查杀模式等。通过灵活的参数控制操作命令,满足用户多种需求。
其中,单表多表模式可以是这个模式是用于匹配不同的应用场景。多表模式支持通配符匹配多张表,在同一个同步任务中完成多表的同步,不支持库表的重命名;单表模式不支持通配符,但是可以对库表进行重命名。控制带宽大小可以用来限制同步任务的网络IO(input和output),避免占用了大量的网络带宽影响集群其他任务的正常运行。
区别于现有技术,现有的同步软件中,对于较高为负载的数据同步场景支持能力较弱,提供的个性化配置参数少,同时各同步软件的使用范围有限,无法覆盖目前库表同步的需求。本方案在操作命令上添加大量用户自选配置,并且增加了各种指令,例如极速同步指令、查杀命令等,极大丰富了用户提交任务的类型,从而生成用户需要的结果。
在一个实施例中,当对源集群和目标集群的数据表同步完成后,可以对本次数据表同步的结果进行汇总分析,例如本次同步多少数据表,数据表同步成功的数量以及失败的数量和失败的数据表名称等信息。
在一个实施例中,本公开实施例还提供了另一种数据表同步方法,如图7所示,包括:
S702,获取源集群和目标集群的组件版本信息。
S704,响应于所述源集群的组件版本信息和目标集群的组件版本信息存在版本差异,且响应于接收到修改参数,根据修改参数对所述源集群中数据表的元数据进行修改。
S706,根据所述版本差异对应的差异点对所述源集群中数据表的元数据进行复制和转换。
S708,与所述目标集群进行交互,将转换后得到的元数据写入至目标集群的元数据库中。
S710,根据所述源集群或目标集群的集群性能和资源确定并行同步的进程数。
S712,利用所述进程数和所述存储路径并行对所述源集群和目标集群的主数据进行同步。
S714,在主数据进行同步的过程中,响应于主数据进行同步时出现异常情况,导致同步失败,则将该主数据进行同步时对应的同步任务加入预先创建的同步队列。
S716,当满足预先设置的重试条件时,对所述同步队列中同步失败的所述源集群和目标集群的数据表再次进行同步。
S718,响应于接收到极速同步指令,仅根据所述版本差异确定所述目标集群的主数据的存储路径,利用所述存储路径对所述源集群和目标集群的主数据进行同步,所述极速同步指令表征无需进行元数据比对。
S720,在对所述源集群和目标集群的多个数据表进行同步的过程中,响应于接收到失败日志,确定与所述失败日志对应的同步失败的数据表,其中,所述失败日志表征对数据表进行同步的过程中同步终止或者失败。
S722,利用断点续传继续从同步终止或失败的数据表开始进行同步。
S724,在对主数据进行同步的过程中,分别在所述源集群和目标集群中建立快照。
S726,响应于接收到同步日志,删除所述源集群中的所述快照,以及,对所述目标集群中的主数据进行一致性校验,其中,所述同步日志表征进行同步完成。
S728,响应于接收到查杀命令,获取进行同步时对应的进程,根据所述查杀命令终止所述进程,并停止进行同步。
关于本实施例中的具体实施方式和限定可参见上述实施例,在此不进行重复赘述。
应该理解的是,虽然如上所述的各实施例所涉及的流程图中的各个步骤按照箭头的指示依次显示,但是这些步骤并不是必然按照箭头指示的顺序依次执行。除非本文中有明确的说明,这些步骤的执行并没有严格的顺序限制,这些步骤可以以其它的顺序执行。而且,如上所述的各实施例所涉及的流程图中的至少一部分步骤可以包括多个步骤或者多个阶段,这些步骤或者阶段并不必然是在同一时刻执行完成,而是可以在不同的时刻执行,这些步骤或者阶段的执行顺序也不必然是依次进行,而是可以与其它步骤或者其它步骤中的步骤或者阶段的至少一部分轮流或者交替地执行。
基于同样的发明构思,本公开实施例还提供了一种用于实现上述所涉及的数据表同步方法的数据表同步装置。该装置所提供的解决问题的实现方案与上述方法中所记载的实现方案相似,故下面所提供的一个或多个数据表同步装置实施例中的具体限定可以参见上文中对于数据表同步方法的限定,在此不再赘述。
在一个实施例中,如图8所示,提供了一种数据表同步装置800,包括:信息获取模块802、数据转换模块804、数据交互模块806和数据同步模块808,其中:
信息获取模块802,用于获取源集群和目标集群的组件版本信息;
数据转换模块804,用于响应于所述源集群的组件版本信息和目标集群的组件版本信息存在版本差异,根据所述版本差异对应的差异点对所述源集群中数据表的元数据进行复制和转换;
数据交互模块806,用于与所述目标集群进行交互,将转换后得到的元数据写入至目标集群的元数据库中;
数据同步模块808,用于根据所述版本差异确定所述目标集群的主数据的存储路径,利用所述存储路径对所述源集群和目标集群的主数据进行同步。
在所述装置的一个实施例中,所述装置还包括:异常处理模块,用于在主数据进行同步的过程中,响应于主数据进行同步时出现异常情况,导致同步失败,则将该主数据进行同步时对应的同步任务加入预先创建的同步队列。
重试模块,用于当满足预先设置的重试条件时,对所述同步队列中同步失败的所述源集群和目标集群的主数据再次进行同步。
在所述装置的一个实施例中,所述装置还包括:极速同步模块,用于响应于接收到极速同步指令,仅根据所述版本差异确定所述目标集群的主数据的存储路径,利用所述存储路径对所述源集群和目标集群的主数据进行同步,所述极速同步指令表征无需进行元数据比对。
在所述装置的一个实施例中,所述数据同步模块808,包括:进程数确定模块,用于根据所述源集群或目标集群的集群性能和资源确定并行同步的进程数。
数据同步子模块,用于利用所述进程数和所述存储路径并行对所述源集群和目标集群的主数据进行同步。
在所述装置的一个实施例中,同步失败确定模块,用于在对所述源集群和目标集群的多个数据表进行同步的过程中,响应于接收到失败日志,确定与所述失败日志对应的同步失败的数据表,其中,所述失败日志表征对数据表进行同步的过程中同步终止或者失败。
断点续传模块,用于利用断点续传继续从同步终止或失败的数据表开始进行同步。
在所述装置的一个实施例中,所述装置还包括:修改模块,用于响应于接收到修改参数,根据修改参数对所述源集群中数据表的元数据进行修改。
在所述装置的一个实施例中,所述装置还包括:快照模块,用于在对主数据进行同步的过程中,分别在所述源集群和目标集群中建立快照。
同步处理模块,用于响应于接收到同步日志,删除所述源集群中的所述快照,以及,对所述目标集群中的主数据进行一致性校验,其中,所述同步日志表征进行同步完成。
进程查杀模块,用于响应于接收到查杀命令,获取进行同步时对应的进程,根据所述查杀命令终止所述进程,并停止进行同步。
上述数据表同步装置中的各个模块可全部或部分通过软件、硬件及其组合来实现。上述各模块可以硬件形式内嵌于或独立于计算机设备中的处理器中,也可以以软件形式存储于计算机设备中的存储器中,以便于处理器调用执行以上各个模块对应的操作。
在一个实施例中,提供了一种计算机设备,该计算机设备可以是服务器,其内部结构图可以如图9所示。该计算机设备包括通过系统总线连接的处理器、存储器和网络接口。其中,该计算机设备的处理器用于提供计算和控制能力。该计算机设备的存储器包括非易失性存储介质和内存储器。该非易失性存储介质存储有操作系统、计算机程序和数据库。该内存储器为非易失性存储介质中的操作系统和计算机程序的运行提供环境。该计算机设备的数据库用于存储元数据、主数据或数据表等。该计算机设备的网络接口用于与外部的终端通过网络连接通信。该计算机程序被处理器执行时以实现一种数据表同步方法。
本领域技术人员可以理解,图9中示出的结构,仅仅是与本公开方案相关的部分结构的框图,并不构成对本公开方案所应用于其上的计算机设备的限定,具体的计算机设备可以包括比图中所示更多或更少的部件,或者组合某些部件,或者具有不同的部件布置。
在一个实施例中,提供了一种计算机设备,包括存储器和处理器,存储器中存储有计算机程序,该处理器执行计算机程序时实现上述任一方法实施例中的步骤。
在一个实施例中,提供了一种计算机可读存储介质,其上存储有计算机程序,计算机程序被处理器执行时实现上述任一方法实施例中的步骤。
在一个实施例中,提供了一种计算机程序产品,包括计算机程序,该计算机程序被处理器执行时实现上述任一方法实施例中的步骤。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一非易失性计算机可读取存储介质中,该计算机程序在执行时,可包括如上述各方法的实施例的流程。其中,本公开所提供的各实施例中所使用的对存储器、数据库或其它介质的任何引用,均可包括非易失性和易失性存储器中的至少一种。非易失性存储器可包括只读存储器(Read-OnlyMemory,ROM)、磁带、软盘、闪存、光存储器、高密度嵌入式非易失性存储器、阻变存储器(ReRAM)、磁变存储器(Magnetoresistive Random Access Memory,MRAM)、铁电存储器(Ferroelectric Random Access Memory,FRAM)、相变存储器(Phase Change Memory,PCM)、石墨烯存储器等。易失性存储器可包括随机存取存储器(Random Access Memory,RAM)或外部高速缓冲存储器等。作为说明而非局限,RAM可以是多种形式,比如静态随机存取存储器(Static Random Access Memory,SRAM)或动态随机存取存储器(Dynamic RandomAccess Memory,DRAM)等。本公开所提供的各实施例中所涉及的数据库可包括关系型数据库和非关系型数据库中至少一种。非关系型数据库可包括基于区块链的分布式数据库等,不限于此。本公开所提供的各实施例中所涉及的处理器可为通用处理器、中央处理器、图形处理器、数字信号处理器、可编程逻辑器、基于量子计算的数据处理逻辑器等,不限于此。
以上实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。
以上所述实施例仅表达了本公开的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对本公开专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本公开构思的前提下,还可以做出若干变形和改进,这些都属于本公开的保护范围。因此,本公开的保护范围应以所附权利要求为准。
Claims (10)
1.一种数据表同步方法,其特征在于,所述方法包括:
获取源集群和目标集群的组件版本信息;
响应于所述源集群的组件版本信息和目标集群的组件版本信息存在版本差异,根据所述版本差异对应的差异点对所述源集群中数据表的元数据进行复制和转换;
与所述目标集群进行交互,将转换后得到的元数据写入至目标集群的元数据库中;
根据所述版本差异确定所述目标集群的主数据的存储路径,利用所述存储路径将所述源集群和目标集群中数据表的主数据进行同步。
2.根据权利要求1所述的方法,其特征在于,所述方法还包括:
在主数据进行同步的过程中,响应于主数据进行同步时出现异常情况,导致同步失败,则将该主数据进行同步时对应的同步任务加入预先创建的同步队列;
当满足预先设置的重试条件时,对所述同步队列中同步失败的所述源集群和目标集群的主数据再次进行同步。
3.根据权利要求1所述的方法,其特征在于,所述方法还包括:
响应于接收到极速同步指令,仅根据所述版本差异修改所述目标集群的主数据的存储路径,利用所述存储路径对所述源集群和目标集群的主数据进行同步,所述极速同步指令表征无需进行元数据比对;
在对所述源集群和目标集群的多个数据表进行同步的过程中,响应于接收到失败日志,确定与所述失败日志对应的同步失败的数据表,其中,所述失败日志表征对数据表进行同步的过程中同步终止或者失败;
利用断点续传继续从同步终止或失败的数据表开始进行同步。
4.根据权利要求1或3所述的方法,其特征在于,所述利用所述存储路径对所述源集群和目标集群的主数据进行同步,包括:
根据所述源集群或目标集群的集群性能和资源确定并行同步的进程数;
利用所述进程数和所述存储路径并行对所述源集群和目标集群的主数据进行同步。
5.根据权利要求1所述的方法,其特征在于,所述根据所述版本差异对应的差异点对所述源集群中数据表的元数据进行转换之前,所述方法还包括:
响应于接收到修改参数,根据修改参数对所述源集群中数据表的元数据进行修改。
6.根据权利要求4所述的方法,其特征在于,所述方法还包括:
在对主数据进行同步的过程中,分别在所述源集群和目标集群中建立快照;
响应于接收到同步日志,删除所述源集群中的所述快照,以及,对所述目标集群中的主数据进行一致性校验,其中,所述同步日志表征进行同步完成;
响应于接收到查杀命令,获取进行同步时对应的进程,根据所述查杀命令终止所述进程,并停止进行同步。
7.一种数据表同步装置,其特征在于,所述装置包括:
信息获取模块,用于获取源集群和目标集群的组件版本信息;
数据转换模块,用于响应于所述源集群的组件版本信息和目标集群的组件版本信息存在版本差异,根据所述版本差异对应的差异点对所述源集群中数据表的元数据进行复制和转换;
数据交互模块,用于与所述目标集群进行交互,将转换后得到的元数据写入至目标集群的元数据库中;
数据同步模块,用于根据所述版本差异确定所述目标集群的主数据的存储路径,利用所述存储路径将所述源集群和目标集群中数据表的主数据进行同步。
8.一种计算机设备,包括存储器和处理器,所述存储器存储有计算机程序,其特征在于,所述处理器执行所述计算机程序时实现权利要求1至6中任一项所述的方法的步骤。
9.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现权利要求1至6中任一项所述的方法的步骤。
10.一种计算机程序产品,包括计算机程序,其特征在于,该计算机程序被处理器执行时实现权利要求1至6中任一项所述的方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211178512.8A CN115481198A (zh) | 2022-09-26 | 2022-09-26 | 数据表同步方法、装置、计算机设备、存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211178512.8A CN115481198A (zh) | 2022-09-26 | 2022-09-26 | 数据表同步方法、装置、计算机设备、存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN115481198A true CN115481198A (zh) | 2022-12-16 |
Family
ID=84394083
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202211178512.8A Pending CN115481198A (zh) | 2022-09-26 | 2022-09-26 | 数据表同步方法、装置、计算机设备、存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115481198A (zh) |
-
2022
- 2022-09-26 CN CN202211178512.8A patent/CN115481198A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US20230244404A1 (en) | Managing digital assets stored as components and packaged files | |
AU2018397572B2 (en) | Incremental client synchronization | |
US8468291B2 (en) | Asynchronous distributed object uploading for replicated content addressable storage clusters | |
US11321291B2 (en) | Persistent version control for data transfer between heterogeneous data stores | |
US11093387B1 (en) | Garbage collection based on transmission object models | |
US10628298B1 (en) | Resumable garbage collection | |
CN108369588B (zh) | 数据库级别自动存储管理 | |
US11494271B2 (en) | Dynamically updating database archive log dependency and backup copy recoverability | |
CN105227672A (zh) | 数据存储及访问的方法和系统 | |
US11500738B2 (en) | Tagging application resources for snapshot capability-aware discovery | |
US11436089B2 (en) | Identifying database backup copy chaining | |
US11966297B2 (en) | Identifying database archive log dependency and backup copy recoverability | |
US20210334165A1 (en) | Snapshot capability-aware discovery of tagged application resources | |
US10956446B1 (en) | Log-based synchronization with inferred context | |
CN115658391A (zh) | 基于QianBase MPP数据库的WAL机制的备份恢复方法 | |
US11544156B1 (en) | Incremental restore for volumes using object-based snapshots | |
US10691557B1 (en) | Backup file recovery from multiple data sources | |
CN115587141A (zh) | 一种数据库同步方法和装置 | |
CN115481198A (zh) | 数据表同步方法、装置、计算机设备、存储介质 | |
CN111400098A (zh) | 一种副本管理方法、装置、电子设备及存储介质 | |
CN111522688A (zh) | 分布式系统的数据备份方法及装置 | |
US11586375B1 (en) | Incremental restore for volumes using object-based snapshots | |
CN114546731A (zh) | 一种工作流数据恢复方法及数据恢复系统 | |
WO2024078677A1 (en) | Mapping identifiers to maintain name and location coherency in file system objects |
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 |