一种数据同步方法、装置及服务器制造方法及图纸

技术编号:22308250 阅读:58 留言:0更新日期:2019-10-16 08:21
本申请公开了一种数据同步方法、装置及服务器,所述方法包括从单库单表数据库读取全量数据,将所述全量数据写到消息队列中,利用预设数据拆分规则确定所述全量数据的第一分库分表数据源,所述第一分库分表数据源表征分库分表数据库与部分全量数据的映射关系,所述部分全量数据包括所述全量数据中的任意部分数据,基于所述第一分库分表数据源将所述消息队列中全量数据依次写入到目标分库分表中,解决了分库分表场景中全量数据的同步,这种方式的全量数据同步大大减少了网络消耗,提高了数据同步的性能。

A data synchronization method, device and server

【技术实现步骤摘要】
一种数据同步方法、装置及服务器
本申请涉及一种数据同步方法、装置及服务器,更具体的涉及一种基于分库分表数据库的数据同步方法、装置及服务器。
技术介绍
随着数据库单表数据量的增大,现有的单库单表的数据库设计已经不能满足高并发要求,数据库的水平拆分即分库分表的应用愈加广泛。在面对互联网海量数据情况时,所有数据存于单库单表,显然会轻易超过数据库表所能承受的数据量阈值,所以需将单库单表数据库中的数据同步至分库分表数据库中。现实中,企业运营人员或者管理人员经常会需要导出数据库报表,分析数据,在这种场景下,分库分表很难发挥它的作用。目前原始数据拆分到分库分表数据库,一般需要业务开发人员进行开发写成固定的配置,将源表的数据读取后,根据分库分表的规则,写到分库分表数据库中,但这样的方法不够灵活。目前业界针对分库分表数据库还不能实现全量数据的同步,无法解决历史数据的问题。另外就分库分表数据库到单库单表数据库的数据聚合过程,业界只能通过代理的方式进行,网络消耗较大,性能不佳,导致数据聚合过程的效率很低。
技术实现思路
为了克服现有技术存在的缺点与不足,本申请公开一种数据同步方法、装置及服务器,能够实现单库单表至分库分表的数据同步。为了达到上述申请的目的,本申请提供了一种数据同步方法,该方法包括:从单库单表数据库读取全量数据;将所述全量数据写到消息队列中;利用预设数据拆分规则确定所述全量数据的第一分库分表数据源,所述第一分库分表数据源表征分库分表数据库与部分全量数据的映射关系,所述部分全量数据包括所述全量数据中的任意部分数据;基于所述第一分库分表数据源将所述消息队列中全量数据依次写入到目标分库分表数据库中。在更进一步的实施例中,在所述从单库单表数据库读取全量数据之后,所述方法还包括:基于单库单表数据库对应的增量日志信息读取增量数据;将所述增量数据写到消息队列中;利用预设数据拆分规则确定所述增量数据的第二分库分表数据源,所述第二分库分表数据源表征分库分表数据库与部分增量数据的映射关系,所述部分增量数据包括所述增量数据中的任意部分数据;其中,第二分库分表数据源还可以包括增量数据分流向分库分表数据库时新建的分库分表数据库的物理性端口、分库分表数据库的应用程序接口和账号密码等,以便将增量数据存储到分库分表数据库中。基于所述第二分库分表数据源将所述消息队列中增量数据依次写入到所述目标分库分表数据库中。具体的,所述方法还包括:判断所述目标分库分表数据库中全量数据与所述单库单表数据库中的全量数据是否一致;当判断的结果为是时,确定全量数据的一致性比对通过。具体的,在将所述全量数据写到消息队列中之前,所述方法还包括:基于预设过滤规则对所述全量数据进行数据过滤处理,得到过滤后的数据;相应的,所述将所述全量数据写到消息队列中包括将所述过滤后的数据写到消息队列中。具体的,所述将所述全量数据写到消息队列中包括:利用所述单库单表数据库中单表的表名和所述单表中全量数据的每一行数据的关键信息确定所述每一行数据对应的消息队列的分区标识;基于所述消息队列的分区标识对消息队列进行数据分区;将所述单表中全量数据的每一行的数据分别存储到所述消息队列的数据分区中。具体的,所述利用预设数据拆分规则确定第一分库分表数据源包括:基于所述目标分库分表数据库的预设分片算法对所述全量数据进行拆分,得到多个部分全量数据;基于所述目标分库分表数据库的分片键确定所述多个部分全量数据所对应的分库分表位置;将每一部分全量数据和所述部分全量数据所对应的所述分库分表数据库位置的映射关系作为所述第一分库分表数据源。本申请提供的数据同步方法,还包括:利用预设数据聚合规则确定待同步全量数据的第一单库单表数据源,所述第一单库单表数据源表征单库单表数据库与待同步全量数据的多个部分全量数据的映射关系;获取所述多个部分全量数据所对应的库表标识信息;按序从所述库表标识信息所对应的分库分表数据库中读取所述多个部分全量数据;将获取的多个部分全量数据写到消息队列中;根据所述第一单库单表数据源将所述消息队列中的所述多个部分全量数据写到单库单表数据库中。本申请另一方面还提供一种数据同步装置,通过该装置能实现单库单表数据库至分库分表数据库的数据同步方法,所述装置包括:全量读取模块,用于从单库单表数据库读取全量数据;第一全量写入模块,用于将所述全量数据写到消息队列中;数据源确定模块,用于利用预设数据拆分规则确定所述全量数据的第一分库分表数据源,所述第一分库分表数据源表征分库分表数据库与部分全量数据的映射关系,所述部分全量数据包括所述全量数据中的任意部分数据;第二全量写入模块,用于基于所述第一分库分表数据源将所述消息队列中全量数据依次写入到目标分库分表数据库中。本申请还提供一种数据同步装置,通过该装置能实现分库分表数据库至单库单表数据库的数据同步方法,所述装置包括:数据源确定模块,用于利用预设数据聚合规则确定待同步全量数据的第一单库单表数据源,所述第一单库单表数据源表征单库单表数据库与所述待同步全量数据的多个部分全量数据的映射关系;库表标识信息获取模块,用于获取所述多个部分全量数据所对应的库表标识信息;全量读取模块,用于按序从所述库表标识信息所对应的分库分表数据库中读取所述多个部分全量数据;第一全量写入模块,用于将获取的多个部分全量数据写到消息队列中;第二全量写入模块,用于根据所述第一单库单表数据源将所述消息队列中的所述多个部分全量数据写到单库单表数据库中。另一方面,本申请还提供一种数据同步服务器,所述服务器包括处理器和存储器,所述存储器中存储有至少一条指令、至少一段程序、代码集或指令集,所述至少一条指令、所述至少一段程序、所述代码集或指令集由所述处理器加载并执行以实现从单库单表至分库分表的数据同步方法。本申请另外还提供一种数据同步服务器,所述服务器包括处理器和存储器,所述存储器中存储有至少一条指令、至少一段程序、代码集或指令集,所述至少一条指令、所述至少一段程序、所述代码集或指令集由所述处理器加载并执行以实现从分库分表至单库单表的数据同步方法。实施本申请,具有如下有益效果:本申请通过将从单库单表数据库读取的全量数据写入消息队列,然后,利用预设数据拆分规则确定全量数据的第一分库分表数据源,进而基于该第一分库分表数据源直接将消息队列中全量数据依次写入到目标分库分表中,实现从单库单表到分库分表的全量数据的同步,避免通过代理的方式将单库单表中全量数据同步到分库分表所带来的网络消耗较大,性能不佳,数据聚合效率低等问题。附图说明为了更清楚地说明本申请的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其它附图。图1为本申请实施例提供的一种从单库单表至分库分表数据同步的架构示意图;图2为本申请实施例提供的一种数据同步方法的流程图;图3为本申请实施例提供的一种数据同步方法流程图;图4为本申请实施例提供的一种数据同步方法的流程图;图5为本申请实施例提供的一种数据同步方法的流程图;图6为本申请实施例提供的一种数据同步方法的流程图;图7为本申请实施例提供的一种从分库分表至单库单表数据本文档来自技高网...

【技术保护点】
1.一种数据同步方法,其特征在于,该方法包括:从单库单表数据库读取全量数据;将所述全量数据写到消息队列中;利用预设数据拆分规则确定所述全量数据的第一分库分表数据源,所述第一分库分表数据源表征分库分表数据库与部分全量数据的映射关系,所述部分全量数据包括所述全量数据中的任意部分数据;基于所述第一分库分表数据源将所述消息队列中全量数据依次写入到目标分库分表数据库中。

【技术特征摘要】
1.一种数据同步方法,其特征在于,该方法包括:从单库单表数据库读取全量数据;将所述全量数据写到消息队列中;利用预设数据拆分规则确定所述全量数据的第一分库分表数据源,所述第一分库分表数据源表征分库分表数据库与部分全量数据的映射关系,所述部分全量数据包括所述全量数据中的任意部分数据;基于所述第一分库分表数据源将所述消息队列中全量数据依次写入到目标分库分表数据库中。2.根据权利要求1所述的数据同步方法,其特征在于,在所述从单库单表数据库读取全量数据之后,所述方法还包括:基于单库单表数据库对应的增量日志信息读取增量数据;在所述基于所述第一分库分表数据源将所述消息队列中全量数据依次写入到目标分库分表数据库中之后,所述方法还包括:将所述增量数据写到消息队列中;利用预设数据拆分规则确定所述增量数据的第二分库分表数据源,所述第二分库分表数据源表征分库分表数据库与部分增量数据的映射关系,所述部分增量数据包括所述增量数据中的任意部分数据;基于所述第二分库分表数据源将所述消息队列中增量数据依次写入到所述目标分库分表数据库中。3.根据权利要求1所述的数据同步方法,其特征在于,所述方法还包括:判断所述目标分库分表数据库中全量数据与所述单库单表数据库中的全量数据是否一致;当判断的结果为是时,确定全量数据的一致性比对通过。4.根据权利要求1所述的数据同步方法,其特征在于,在将所述全量数据写到消息队列中之前,所述方法还包括:基于预设过滤规则对所述全量数据进行数据过滤处理,得到过滤后的数据;相应的,所述将所述全量数据写到消息队列中包括将所述过滤后的数据写到消息队列中。5.根据权利要求1所述的数据同步方法,其特征在于,所述将所述全量数据写到消息队列中包括:利用所述单库单表数据库中单表的表名和所述单表中全量数据的每一行数据的关键信息确定所述每一行数据对应的消息队列的分区标识;基于所述消息队列的分区标识对消息队列进行数据分区;将所述单库单表数据库中全量数据的每一行的数据分别存储到所述消息队列的数据分区中。6.根据权利要求1所述的数据同步方法,其特征在于,所述利用预设数据拆分规则确定第一分库分表数据源包括:基于所述目标分库分表数据库的分片键确定所述多个部分全量数据所对应的分库分表数据库位置;基于所述目标分库分表数据库的预设分片算法对所述全量数据进行拆分,得到多个部分全量数据;将每一部分全量数据和所述部分全量数据所对应的所述分库分表数据库位置的映射关系作为所述第一分库分表数据源。7.一种数据同步方法,其特征在于,该方法包括:利用预设数据聚合规则确定待同步全量数据的第一单库单表数据源,所述第一单库单表数据源表征单库单表数据库与所述待同步全量数据的多个部分全量数据的映射关系;获取所述多个部分全量数据所对应的库表标识信息;按序从所述库表标识信息所对应的分库分表数据库中读取所述多个部分全量数据;将获取的多个部分全量数据写到消息队列中;根据所述第一单库单表数据源将所述消息队列中的所述多个部分全量数据写到单库单表数据库中。8.根据权利要求7所述的数据同步方法,其特征在于,在所述利用预设数据聚合规则确定待同步全量数据的第一单库单表数据源步骤之前,所述方法还包括:从所述分库分表数据库的日志信息中读取待同...

【专利技术属性】
技术研发人员:赵峰
申请(专利权)人:浙江吉利控股集团有限公司杭州优行科技有限公司
类型:发明
国别省市:浙江,33

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1