一种数据同步方法、装置、电子设备及存储介质与流程

专利2022-06-29  75

本申请涉及网络
技术领域
:,具体涉及一种数据同步方法、装置、电子设备及存储介质。
背景技术
::随着传统的数据库技术日趋成熟、计算机网络技术的飞速发展和应用范围的扩大,数据库应用普遍建立于计算机网络之上,在大型互联网应用的场景中,并发的读写数据量非常庞大,往往高达上亿甚至是数十亿,大数据时代下的数据存储及管理方式将直接影响着运营过程中的服务效率。为了优化大数据时代下的数据存储及管理方式,分布式数据库系统应运而生,然而在对分布式数据库中的数据进行同步的过程中,相关技术中所采用的全量同步的方式不仅同步效率低下,而且造成了对网络资源的浪费、加重系统的运行负担,尤其对于规模较大、分表数量较多的大型分布式数据库而言,同步流程复杂、耗时较长等问题导致数据库可靠性降低且维护难度升高。技术实现要素:有鉴于此,本申请提供一种数据同步方法及装置,以解决相关技术中数据同步效率低下、耗时较长等技术问题。为实现上述目的,本申请提供技术方案如下:根据本申请的第一方面,提出了一种数据同步方法,应用于分布式数据库,所述分布式数据库包含多个存储节点,以用于对所述分布式数据库中的数据进行分库分表存储;所述方法包括:分别获取各个存储节点上的增量数据和所述增量数据对应的操作时间;基于所述操作时间对所述增量数据进行合并,以使得合并后的数据表中各个增量数据之间的排列顺序对应于操作时间的先后次序;将所述合并后的数据表同步至目标数据库中。可选的,所述增量数据和所述增量数据对应的操作时间是通过对所述存储节点上的二进制日志文件进行增量解析而确定的。可选的,所述获取各个存储节点上的增量数据和所述增量数据对应的操作时间,包括:从各个存储节点对应的缓存数据队列中获取对应于同一数据表标识的增量数据和所述增量数据对应的操作时间;所述基于所述操作时间对所述增量数据进行合并,包括:对归属于同一数据表的增量数据按照操作时间的先后次序进行合并。可选的,所述存储节点对应默认缓存数据队列和至少一个备用缓存数据队列;还包括:检测所述存储节点的默认缓存数据队列的拥塞程度;在所述默认缓存数据队列处于拥塞状态下,由所述存储节点将与自身对应的增量数据和所述增量数据对应的操作时间存储至备用缓存数据队列中;在所述默认缓存数据队列处于空闲状态下,由所述存储节点将与自身对应的增量数据和所述增量数据对应的操作时间存储至所述默认缓存数据队列中。可选的,所述分别获取各个存储节点上的增量数据和所述增量数据对应的操作时间,包括:确定各个存储节点中记录的增量数据的位置标识,所述位置标识用于表示最近一次完成增量解析处的位置信息;将所述位置标识作为读取增量数据的起始位置,以获取所述位置标识之后的增量数据和所述增量数据对应的操作时间。可选的,还包括:周期性地触发向所述目标数据库同步各个存储节点上对应于同一个数据表的增量数据。根据本申请的第二方面,提出了一种数据同步装置,应用于分布式数据库,所述分布式数据库包含多个存储节点,以用于对所述分布式数据库中的数据进行分库分表存储;所述装置包括:获取单元,分别获取各个存储节点上的增量数据和所述增量数据对应的操作时间;合并单元,基于所述操作时间对所述增量数据进行合并,以使得合并后的数据表中各个增量数据之间的排列顺序对应于操作时间的先后次序;同步单元,将所述合并后的数据表同步至目标数据库中。可选的,所述获取单元具体用于:从各个存储节点对应的缓存数据队列中获取对应于同一数据表标识的增量数据和所述增量数据对应的操作时间;所述合并单元具体用于:对归属于同一数据表的增量数据按照操作时间的先后次序进行合并。可选的,所述存储节点对应默认缓存数据队列和至少一个备用缓存数据队列;还包括:检测单元,检测所述存储节点的默认缓存数据队列的拥塞程度;第一存储单元,在所述默认缓存数据队列处于拥塞状态下,由所述存储节点将与自身对应的增量数据和所述增量数据对应的操作时间存储至备用缓存数据队列中;第二存储单元,在所述默认缓存数据队列处于空闲状态下,由所述存储节点将与自身对应的增量数据和所述增量数据对应的操作时间存储至所述默认缓存数据队列中。可选的,所述获取单元具体用于:确定各个存储节点中记录的增量数据的位置标识,所述位置标识用于表示最近一次完成增量解析处的位置信息;将所述位置标识作为读取增量数据的起始位置,以获取所述位置标识之后的增量数据和所述增量数据对应的操作时间。可选的,还包括:触发单元,周期性地触发向所述目标数据库同步各个存储节点上对应于同一个数据表的增量数据。根据本申请的第三方面,提出了一种电子设备,包括:处理器;用于存储处理器可执行指令的存储器;其中,所述处理器被配置为可执行指令以实现如上述第一方面中任一项所述的方法。根据本申请的第四方面,提供一种计算机可读存储介质,其上存储有计算机指令,该指令被处理器执行时实现如上述第一方面中任一所述方法的步骤。由以上技术方案可见,分布式数据库增量式地获取各个存储节点上的增量数据和增量数据对应的操作时间,并根据增量数据对应的操作时间的先后顺序对各个存储节点上的增量数据进行合并与同步,减少了同步的数据量、降低了数据库之间的流量负荷且按照操作时间排序后的增量数据便于目标数据库的直接处理,提高了数据的处理效率。附图说明图1是根据本申请一示例性实施例中的分布式数据库的结构图;图2是根据本申请一示例性实施例中的多个存储节点对数据表共同存储的示意图;图3是根据本申请一示例性实施例提供的一种数据同步方法的流程图;图4是根据本申请一示例性实施例提供的另一种数据同步方法的流程图;图5是根据本申请一示例性实施例提供的一种缓存数据队列确定方法的流程图;图6是根据本申请一示例性实施例提供的一种数据同步的示意图;图7是根据本申请一示例性实施例中的一种电子设备的示意结构图;图8是根据本申请一示例性实施例中的一种数据同步装置的框图。具体实施方式这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本申请相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本申请的一些方面相一致的装置和方法的例子。在本申请使用的术语是仅仅出于描述特定实施例的目的,而非旨在限制本申请。在本申请和所附权利要求书中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其他含义。还应当理解,本文中使用的术语“和/或”是指并包含一个或多个相关联的列出项目的任何或所有可能组合。应当理解,尽管在本申请可能采用术语第一、第二、第三等来描述各种信息,但这些信息不应限于这些术语。这些术语仅用来将同一类型的信息彼此区分开。例如,在不脱离本申请范围的情况下,第一信息也可以被称为第二信息,类似地,第二信息也可以被称为第一信息。取决于语境,如在此所使用的词语“如果”可以被解释成为“在……时”或“当……时”或“响应于确定”。分布式数据库系统(distributeddatabasesystem,ddbs)由若干个支持数据库系统功能的节点组成,各个节点在逻辑上属于同一系统,在物理上可以为不同的物理实体。在实际应用过程中,分布式数据库采用分库分表方式提供可扩展的服务容量和存储容量,基于数据库代理方式提供各个节点上的数据透明访问及数据访问节点的动态平滑扩缩容,使得用户可以基于任意一个节点实现全局应用。由于分布式数据库并不强调系统中各个节点并行地完成数据库任务,因而,节点(场地)之间可以通过局域网或广域网互联,降低对网络带宽的占用;此外,分布式数据库系统中的各个存储节点运算处理过程是基于本地存储的数据实现的,不仅系统结构灵活、具有较高的可扩展性,而且提高了响应速度。分布式数据库中各个节点可以包含能够支持执行局部应用的独立数据库系统,进一步的,分布式数据库中各个节点可以拥有独立的硬件系统,诸如cpu、磁盘、硬盘等。请参考图1,图1是根据本申请一示例性实施例中的分布式数据库的结构图,如图1所示,对于分布式数据库维护的各个信息表而言,信息表中的数据信息可由多个存储节点共同进行存储,以由多个存储节点共同对各个信息表中的数据信息进行维护,诸如图1中的作为一示例性实施例示出的分布式数据库由存储节点node_1、存储节点node_2、存储节点node_3、存储节点node_4构成。分布式数据库中所存储的信息表table_a、table_b、table_c可基于逻辑计算后拆分至不同的存储节点中,从而使得存储节点node_1、存储节点node_2、存储节点node_3、存储节点node_4共同对table_a、table_b、table_c进行维护。如图2所示,图2是根据本申请一示例性实施例中的多个存储节点对数据表共同存储的示意图,作为一示例性实施例,通过对各个信息表进行逻辑拆分,进而得到各个信息表对应的分表,诸如信息表table_a拆分为table_a1~table_a6、table_b拆分为table_b1~table_b6、信息表table_c拆分为table_c1~table_c6。进一步的,经过逻辑分片后的分表可以由多个存储节点分别进行存储,诸如存储节点node_1中存储信息表table_a中的table_a1和table_a2,信息表table_b中的table_b1以及信息表table_c中的table_c1和table_c2;存储节点node_2中存储信息表table_a中的table_a3,信息表table_b中的table_b2以及信息表table_c中的table_c3;存储节点node_3中存储信息表table_a中的table_a4,信息表table_b中的table_b3和table_b4以及信息表table_c中的table_c4;存储节点node_4中存储信息表table_a中的table_a5和table_a6,信息表table_b中的table_b5和table_b6以及信息表table_c中的table_c5和table_c6。为对本申请进行详细阐述说明,请参考下列实施例:图3是根据本申请一示例性实施例提供的一种数据同步方法的流程图,应用于分布式数据库,分布式数据库包含多个存储节点,以用于对分布式数据库中的数据进行分库分表存储,如图3所示,该方法可以包括以下步骤:步骤301,分别获取各个存储节点上的增量数据和所述增量数据对应的操作时间。在一实施例中,可以基于所触发的增量数据采集任务执行对各个存储节点中的增量数据的获取,其中,从各个存储节点获取的增量数据可以对应于特定的一个或多个数据表的标识信息,可以预先对各个存储节点中用于提供增量数据的数据表进行配置,使得按照预配置的信息确定各个存储节点中用于提供增量数据的数据表。进一步的,增量数据采集任务可以由分布式数据库系统周期性地触发,在实际应用过程中,增量数据采集任务可以按照预设时长自动触发对各个存储节点上的增量数据和增量数据对应的操作时间的获取与同步,无需反复由人工进行触发,降低了用工成本且提高了数据同步效率。在另一实施例中,各个存储节点中记录的增量数据的位置标识用于标识最近一次完成增量解析处的位置信息。在存储节点完成对本地数据库中的增量数据的提供后,可以对最后一次提供的增量数据的结束位置信息进行标识,进而在下一个进行数据采集任务的周期中,根据所标识的最近一次完成增量数据解析处的位置开始进行数据解析,在本实施例中,由各个存储节点对自身所记录的位置标识进行维护,而无需在配置的增量任务中添加获取增量数据的起始位置的位置标识,提高了增量数据采集任务的生成效率。在又一实施例中,所确定的增量数据和增量数据对应的操作时间可以存储至各个存储节点对应的缓存数据队列中,以在数据融合过程中从各个存储节点对应的缓存数据队列中获取待合并的数据信息。进一步的,分布式数据库中的各个存储节点可以对应多个缓存数据队列,诸如默认缓存数据队列和至少一个备用缓存数据队列。在确定各个存储节点中所存储的增量数据和增量数据对应的操作时间后,可以对当前存储节点对应的默认缓存数据队列的拥塞程度进行检测,进而在默认缓存数据队列处于空闲状态下,由存储节点将与自身对应的增量数据和增量数据对应的操作时间存储至默认缓存数据队列中;而在默认缓存数据队列对于拥塞状态下,则由存储节点将与自身对应的增量数据和增量数据对应的操作时间存储至备用缓存数据队列中。步骤302,基于所述操作时间对所述增量数据进行合并,以使得合并后的数据表中各个增量数据之间的排列顺序对应于操作时间的先后次序。在一实施例中,增量数据和增量数据对应的操作时间是通过对存储节点上的二进制日志文件进行增量解析而确定的。进一步的,可以逐个按照各个数据表标识信息分别获取各个存储节点的缓存数据队列中对应于该数据表标识信息的增量数据和增量数据的操作时间,进而将获得的对应于同一数据表标识信息的增量数据按照操作时间的先后顺序进行排序合并;或者,可以直接获取各个存储节点的缓存数据队列中的全部增量数据和增量数据的操作时间,进而对获取到的增量数据和增量数据的操作时间按照增量数据对应的数据表进行分类,并将归属于同一个的数据表的增量数据按照操作时间进行顺序排序与合并。步骤303,将所述合并后的数据表同步至目标数据库中。通过上述实施例,分布式数据库增量式地获取各个存储节点上的增量数据和增量数据对应的操作时间,并根据增量数据对应的操作时间的先后顺序对各个存储节点上的增量数据进行合并与同步,减少了同步的数据量、降低了数据库之间的流量负荷且按照操作时间排序后的增量数据便于目标数据库的直接处理,提高了数据的处理效率。图4是根据本申请一示例性实施例提供的另一种数据同步方法的流程图,应用于分布式数据库,分布式数据库包含多个存储节点,以用于对分布式数据库中的数据进行分库分表存储,如图4所示,该方法可以包括以下步骤:步骤401,确定各个存储节点中所记录的增量数据的位置标识。各个存储节点所对应增量数据的位置标识用于表示该存储节点最近一次完成增量解析处的位置信息。具体的,存储节点在完成对本地数据库中的增量数据的提供过程后,可以对最后一次提供的增量数据的结束位置信息进行标识,进而在下一个进行数据采集任务的周期中,可根据所标识的最近一次完成增量数据解析处的位置开始进行数据解析。用于标识增量数据的结束位置的位置标识可以为文本标识信息和文件偏移地址(即文件在磁盘上存放时相对于文件开头的偏移)或者上一个周期完成增量数据解析处的地址信息对应的标识,本申请对位置标识的具体形式不做限制。在一实施例中,可以基于所触发的增量数据采集任务执行对各个存储节点中的增量数据的获取,进一步的,增量数据采集任务可以由分布式数据库系统周期性地触发。在实际应用过程中,首次执行的增量数据采集任务可以在管理员配置后触发执行,进而在完成增量数据采集任务后系统便自动对完成后的时长进行监测,以在完成增量数据采集任务后的持续时长达到预设时长的情况下,系统自动地再次触发用于获取各个存储节点中的增量数据的增量数据采集任务。在另一实施例中,可以预先对各个存储节点中用于提供增量数据的数据表进行配置,存储节点上的增量数据可以对应于特定的一个或多个数据表标识信息,在存储节点上的增量数据对应于多个数据表标识信息的情况下,可以分别针对每一个数据表标识信息设置相应的增量数据的位置标识。步骤402,以位置标识为起始位置解析存储节点中的日志文件以确定增量数据和增量数据的操作时间。各个存储节点中待获取的增量数据为该存储节点中的位置标识之后所存储的数据信息,具体的,各个存储节点可以将自身所存储的位置标识作为读取增量数据和增量数据对应的操作时间的起始位置,在实际应用过程中,位置标识用于表征二进制日志文件中的具体位置,因而,可以从存储节点中的位置标识开始,对该存储节点中位置标识之后的数据信息进行解析,以存储节点所维护的分表中的增量数据和增量数据的操作时间。步骤403,将解析得到的数据信息和数据信息对应的操作时间存储至当前存储节点对应的缓存队列中。在一实施例中,对于确定的增量数据和增量数据对应的操作时间可以存储至各个存储节点对应的缓存数据队列中,以在数据融合过程中从各个存储节点对应的缓存数据队列中获取待合并的数据信息。在另一实施例中,分布式数据库中的各个存储节点可以对应多个缓存数据队列,诸如默认缓存数据队列和至少一个备用缓存数据队列。在确定各个存储节点中所存储的增量数据和增量数据对应的操作时间后,可以对当前存储节点对应的默认缓存数据队列的拥塞程度进行检测,进而在默认缓存数据队列处于空闲状态下,由存储节点将于自身对应的增量数据和增量数据对应的操作时间存储至默认缓存数据队列中;而在默认缓存数据队列对于拥塞状态下,则由存储节点将于自身对应的增量数据和增量数据对应的操作时间存储值备用缓存数据队列中。关于对存储增量数据和增量数据对应的操作时间的流程图可以参考图5,图5是根据本申请一示例性实施例提供的一种缓存数据队列确定方法的流程图,如图5所示,对于存储节点已确定的增量数据和增量数据对应的操作时间,可以由该存储节点存储至与自身对应的缓存数据队列中,在存储节点对应多个缓存数据队列的情况下,对缓存数据队列的确定方法涉及到下述步骤:步骤501,判断默认缓存数据队列是否处于空闲状态,若是,则进入步骤502,否则,进入步骤503。在一实施例中,对默认缓存数据队列是否处于空闲状态的判断依据可以为默认缓存数据队列中的数据长度。具体的,可以在默认缓存数据队列中的数据长度不超过阈值的情况下,确定默认缓存数据队列处于空闲状态,而在默认缓存缓存数据队列中的数据长度超过阈值的情况下,确定默认缓存数据队列处于拥塞状态。或者,优先获取待缓存的增量数据和增量数据对应的操作时间的数据长度,进而在默认缓存队列中的剩余空间长度大于待缓存的增量数据和增量数据对应的操作时间的数据长度的情况,确定默认缓存数据队列处于空闲状态,否则,确定默认缓存数据队列处于拥塞状态。步骤502,将与自身对应的增量数据和增量数据对应的操作时间存储至默认缓存数据队列中。步骤503,将与自身对应的增量数据和增量数据对应的操作时间存储至备用缓存数据队列中。在一实施例中,在存储节点对应于多个备用缓存数据队列的情况下,可以对多个备用缓存数据队列的拥塞程度进行比较,进而选择拥塞程度最弱的备用缓存数据队列确定为接收增量数据和增量数据的操作时间的备用缓存数据队列。在另一实施例中,可以按照多个备用缓存数据队列预设的优先级数据,顺序确定各个缓存数据队列中的剩余空间长度与待缓存的增量数据和增量数据对应的操作时间的数据长度之间的大小关系,并在按照优先级确定出缓存数据队列中的剩余空间长度大于待缓存的增量数据和增量数据对应的操作时间的数据长度的情况下,将该缓存数据队列确定为待缓存增量数据和增量数据对应的操作时间的缓存数据队列,而无需对全部的缓存数据队列的剩余空间长度均进行确定,进而提高了对待缓存增量数据和增量数据对应的操作时间的缓存效率。步骤404,对各个存储节点的缓存数据队列中归属于同一数据表的增量数据按照操作时间的先后次序进行合并。步骤405,将合并后的增量数据表同步至目标数据库。在一实施例中,可以逐个按照各个数据表标识信息分别获取各个存储节点的缓存数据队列中对应于该数据表标识信息的增量数据和增量数据的操作时间,进而将获得的对应于同一数据表标识信息的增量数据按照操作时间的先后顺序进行排序。例如可以先确定各个存储节点对应的缓存数据队列中的对应于数据表table_a的分表,table_a为示例性的一种数据表标识信息,对应于数据表table_a的分表即存储节点node_1中存储的分表table_a1、分表table_a2,存储节点node_2中存储的分表table_a3,存储节点node_3中存储的分表table_a4和存储节点node_4中存储的分表table_a5、分表table_a6,进而从各个存储节点中获取与数据表table_a对应的各个分表的增量数据和增量数据对应的操作时间,以将各个分表中的增量数据按照操作时间的先后顺序进行排列合并,诸如得到包含分表table_a1、分表table_a2、分表table_a3、分表table_a4、分表table_a5、分表table_a6的全部的按照操作时间顺序排序后的增量数据的合并表table_a*。在另一实施例中,可以直接获取各个存储节点的缓存数据队列中的全部增量数据和增量数据的操作时间,进而对获取到的增量数据和增量数据的操作时间按照增量数据对应的数据表进行分类,并将归属于同一个的数据表的增量数据按照操作时间进行顺序排序,进而将包含排序后的增量数据的合并表发送至目标数据库。例如图6所示,图6是根据本申请一示例性实施例提供的一种数据同步的示意图,存储节点node_1的缓存数据队列中缓存了信息表table_a中的table_a1和table_a2的增量数据和增量数据对应的操作时间,信息表table_b中的table_b1的增量数据和增量数据对应的操作时间以及信息表table_c中的table_c1和table_c2的增量数据和增量数据对应的操作时间;存储节点node_2的缓存数据队列中缓存了信息表table_a中的table_a3的增量数据和增量数据对应的操作时间,信息表table_b中的table_b3的增量数据和增量数据对应的操作时间以及信息表table_c中的table_c3的增量数据和增量数据对应的操作时间;存储节点node_3的缓存数据队列中缓存了信息表table_a中的table_a4的增量数据和增量数据对应的操作时间,信息表table_b中的table_b3和table_b4的增量数据和增量数据对应的操作时间以及信息表table_c中的table_c4的增量数据和增量数据对应的操作时间;存储节点node_4的缓存数据队列中缓存了信息表table_a中的table_a5和table_a6的增量数据和增量数据对应的操作时间,信息表table_b中的table_b5和table_b6的增量数据和增量数据对应的操作时间以及信息表table_c中的table_c5和table_c6的增量数据和增量数据对应的操作时间,相应的,可以获取全部分表(即table_a1~table_a6、table_b1~table_b6、table_c1~table_c6)的增量数据和增量数据的操作时间,进而对各个增量数据按照对应的数据表标识信息进行分类,并将同一数据表中的增量数据按照操作时间顺序进行排序,得到增量数据表table_a*、table_b*、table_c*,进而可以将增量数据表table_a*、table_b*、table_c*中的全部或者部分同步至目标数据库。由以上技术方案可见,分布式数据库增量式地获取各个存储节点上的增量数据和增量数据对应的操作时间,并根据增量数据对应的操作时间的先后顺序对各个存储节点上的增量数据进行合并与同步,减少了同步的数据量、降低了数据库之间的流量负荷且按照操作时间排序后的增量数据便于目标数据库的直接处理,提高了数据的处理效率。图7是根据本申请一示例性实施例中的一种电子设备的示意结构图。请参考图7,在硬件层面,该电子设备包括处理器、内部总线、网络接口、内存以及非易失性存储器,当然还可能包括其他业务所需要的硬件。处理器从非易失性存储器中读取对应的计算机程序到内存中然后运行,在逻辑层面上形成数据同步装置。当然,除了软件实现方式之外,本申请并不排除其他实现方式,比如逻辑器件抑或软硬件结合的方式等等,也就是说以下处理流程的执行主体并不限定于各个逻辑单元,也可以是硬件或逻辑器件。请参考图8,图8是根据本申请一示例性实施例中的一种数据同步装置的框图,如图8所示,在软件实施方式中,数据同步装置可以包括:获取单元801,分别获取各个存储节点上的增量数据和所述增量数据对应的操作时间;合并单元802,基于所述操作时间对所述增量数据进行合并,以使得合并后的数据表中各个增量数据之间的排列顺序对应于操作时间的先后次序;同步单元803,将所述合并后的数据表同步至目标数据库中。可选的,所述获取单元801具体用于:从各个存储节点对应的缓存数据队列中获取对应于同一数据表标识的增量数据和所述增量数据对应的操作时间。所述合并单元802具体用于:对归属于同一数据表的增量数据按照操作时间的先后次序进行合并。可选的,所述存储节点对应默认缓存数据队列和至少一个备用缓存数据队列;还包括:检测单元804,检测所述存储节点的默认缓存数据队列的拥塞程度;第一存储单元805,在所述默认缓存数据队列处于拥塞状态下,由所述存储节点将与自身对应的增量数据和所述增量数据对应的操作时间存储至备用缓存数据队列中;第二存储单元806,在所述默认缓存数据队列处于空闲状态下,由所述存储节点将与自身对应的增量数据和所述增量数据对应的操作时间存储至所述默认缓存数据队列中。可选的,所述获取单元801具体用于:确定各个存储节点中记录的增量数据的位置标识,所述位置标识用于表示最近一次完成增量解析处的位置信息;将所述位置标识作为读取增量数据的起始位置,以获取所述位置标识之后的增量数据和所述增量数据对应的操作时间。可选的,还包括:触发单元807,周期性地触发向所述目标数据库同步各个存储节点上对应于同一个数据表的增量数据。所述装置与上述方法相对应,更多相同的细节不再一一赘述。在一个典型的配置中,计算设备包括一个或多个处理器(cpu)、输入/输出接口、网络接口和内存。内存可能包括计算机可读介质中的非永久性存储器,随机存取存储器(ram)和/或非易失性内存等形式,如只读存储器(rom)或闪存(flashram)。内存是计算机可读介质的示例。计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(pram)、静态随机存取存储器(sram)、动态随机存取存储器(dram)、其他类型的随机存取存储器(ram)、只读存储器(rom)、电可擦除可编程只读存储器(eeprom)、快闪记忆体或其他内存技术、只读光盘只读存储器(cd-rom)、数字多功能光盘(dvd)或其他光学存储、磁盒式磁带,磁带磁磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括暂存电脑可读媒体(transitorymedia),如调制的数据信号和载波。对于装置实施例而言,由于其基本对应于方法实施例,所以相关之处参见方法实施例的部分说明即可。以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本申请方案的目的。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。虽然本说明书包含许多具体实施细节,但是这些不应被解释为限制任何发明的范围或所要求保护的范围,而是主要用于描述特定发明的具体实施例的特征。本说明书内在多个实施例中描述的某些特征也可以在单个实施例中被组合实施。另一方面,在单个实施例中描述的各种特征也可以在多个实施例中分开实施或以任何合适的子组合来实施。此外,虽然特征可以如上所述在某些组合中起作用并且甚至最初如此要求保护,但是来自所要求保护的组合中的一个或多个特征在一些情况下可以从该组合中去除,并且所要求保护的组合可以指向子组合或子组合的变型。以上所述仅为本申请的较佳实施例而已,并不用以限制本申请,凡在本申请的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本申请保护的范围之内。当前第1页1 2 3 当前第1页1 2 3 
技术特征:

1.一种数据同步方法,其特征在于,应用于分布式数据库,所述分布式数据库包含多个存储节点,以用于对所述分布式数据库中的数据进行分库分表存储;所述方法包括:

分别获取各个存储节点上的增量数据和所述增量数据对应的操作时间;

基于所述操作时间对所述增量数据进行合并,以使得合并后的数据表中各个增量数据之间的排列顺序对应于操作时间的先后次序;

将所述合并后的数据表同步至目标数据库中。

2.根据权利要求1所述方法,其特征在于,所述增量数据和所述增量数据对应的操作时间是通过对所述存储节点上的二进制日志文件进行增量解析而确定的。

3.根据权利要求1所述方法,其特征在于,所述分别获取各个存储节点上的增量数据和所述增量数据对应的操作时间,包括:从各个存储节点对应的缓存数据队列中获取对应于同一数据表标识的增量数据和所述增量数据对应的操作时间;

所述基于所述操作时间对所述增量数据进行合并,包括:对归属于同一数据表的增量数据按照操作时间的先后次序进行合并。

4.根据权利要求1所述方法,其特征在于,所述存储节点对应默认缓存数据队列和至少一个备用缓存数据队列;还包括:

检测所述存储节点的默认缓存数据队列的拥塞程度;

在所述默认缓存数据队列处于拥塞状态下,由所述存储节点将与自身对应的增量数据和所述增量数据对应的操作时间存储至备用缓存数据队列中;

在所述默认缓存数据队列处于空闲状态下,由所述存储节点将与自身对应的增量数据和所述增量数据对应的操作时间存储至所述默认缓存数据队列中。

5.根据权利要求1所述方法,其特征在于,所述分别获取各个存储节点上的增量数据和所述增量数据对应的操作时间,包括:

确定各个存储节点中记录的增量数据的位置标识,所述位置标识用于表示最近一次完成增量解析处的位置信息;

将所述位置标识作为读取增量数据的起始位置,以获取所述位置标识之后的增量数据和所述增量数据对应的操作时间。

6.根据权利要求1所述方法,其特征在于,还包括:

周期性地触发向所述目标数据库同步各个存储节点上对应于同一个数据表的增量数据。

7.根据权利要求1所述方法,其特征在于,所述各个存储节点上的增量数据对应于特定的一个或多个数据表标识信息。

8.一种数据同步装置,其特征在于,应用于分布式数据库,所述分布式数据库包含多个存储节点,以用于对所述分布式数据库中的数据进行分库分表存储;所述装置包括:

获取单元,分别获取各个存储节点上的增量数据和所述增量数据对应的操作时间;

合并单元,基于所述操作时间对所述增量数据进行合并,以使得合并后的数据表中各个增量数据之间的排列顺序对应于操作时间的先后次序;

同步单元,将所述合并后的数据表同步至目标数据库中。

9.根据权利要求8所述装置,其特征在于,所述获取单元具体用于:

从各个存储节点对应的缓存数据队列中获取对应于同一数据表标识的增量数据和所述增量数据对应的操作时间;

所述合并单元具体用于:对归属于同一数据表的增量数据按照操作时间的先后次序进行合并。

10.根据权利要求8所述装置,其特征在于,所述存储节点对应默认缓存数据队列和至少一个备用缓存数据队列;还包括:

检测单元,检测所述存储节点的默认缓存数据队列的拥塞程度;

第一存储单元,在所述默认缓存数据队列处于拥塞状态下,由所述存储节点将与自身对应的增量数据和所述增量数据对应的操作时间存储至备用缓存数据队列中;

第二存储单元,在所述默认缓存数据队列处于空闲状态下,由所述存储节点将与自身对应的增量数据和所述增量数据对应的操作时间存储至所述默认缓存数据队列中。

11.根据权利要求8所述装置,其特征在于,所述获取单元具体用于:

确定各个存储节点中记录的增量数据的位置标识,所述位置标识用于表示最近一次完成增量解析处的位置信息;

将所述位置标识作为读取增量数据的起始位置,以获取所述位置标识之后的增量数据和所述增量数据对应的操作时间。

12.根据权利要求8所述装置,其特征在于,还包括:

触发单元,周期性地触发向所述目标数据库同步各个存储节点上对应于同一个数据表的增量数据。

13.一种电子设备,其特征在于,包括:

处理器;

用于存储处理器可执行指令的存储器;

其中,所述处理器被配置为可执行指令以实现如权利要求1-7中任一项所述的方法。

14.一种计算机可读存储介质,其上存储有计算机指令,其特征在于,该指令被处理器执行时实现如权利要求1-7中任一项所述方法的步骤。

技术总结
本申请提供一种数据同步方法、装置、电子设备及存储介质,所述方法包括:分别获取各个存储节点上的增量数据和增量数据对应的操作时间;基于操作时间对增量数据进行合并,以使得合并后的数据表中各个增量数据之间的排列顺序对应于操作时间的先后次序;将合并后的数据表同步至目标数据库中。通过本申请的技术方案可以提高数据同步效率。

技术研发人员:褚占峰;江峰;丁晓波
受保护的技术使用者:杭州数梦工场科技有限公司
技术研发日:2020.02.04
技术公布日:2020.06.09

转载请注明原文地址: https://bbs.8miu.com/read-25097.html

最新回复(0)