同步数据的方法、装置、数据传输组件及系统.pdf

上传人:a3 文档编号:4039372 上传时间:2018-08-12 格式:PDF 页数:19 大小:1.32MB
返回 下载 相关 举报
摘要
申请专利号:

CN201510146300.5

申请日:

2015.03.30

公开号:

CN104699541A

公开日:

2015.06.10

当前法律状态:

授权

有效性:

有权

法律详情:

授权|||实质审查的生效IPC(主分类):G06F 9/50申请日:20150330|||公开

IPC分类号:

G06F9/50; G06F17/30

主分类号:

G06F9/50

申请人:

北京奇虎科技有限公司; 奇智软件(北京)有限公司

发明人:

刘臻

地址:

100088北京市西城区新街口外大街28号D座112室(德胜园区)

优先权:

专利代理机构:

北京智汇东方知识产权代理事务所(普通合伙)11391

代理人:

康正德; 范晓斌

PDF下载: PDF下载
内容摘要

本发明提供了一种同步数据的方法、装置、数据传输组件及系统,该同步数据的方法,应用于具有主从结构的数据库,包括:从主数据库获取待同步数据,并根据所述待同步数据生成多个同步任务;调用至少两个并发的线程,根据预设规则分配所述多个同步任务至所述至少两个并发的线程中;以及利用所述至少两个并发的线程,发送所述多个同步任务至所述从数据库,以供所述从数据库根据所述多个同步任务实现与所述主数据库间的数据同步。本发明实施例提供的技术方案解决了主从数据库单线程同步延时的问题,能够实现实时同步,进而满足后续提供数据服务的需求。

权利要求书

权利要求书
1.  一种同步数据的方法,应用于具有主从结构的数据库,包括:
从主数据库获取待同步数据,并根据所述待同步数据生成多个同步任务;
调用至少两个并发的线程,根据预设规则分配所述多个同步任务至所述至 少两个并发的线程中;以及
利用所述至少两个并发的线程,发送所述多个同步任务至从数据库,以供 所述从数据库根据所述多个同步任务实现与所述主数据库间的数据同步。

2.  根据权利要求1所述的方法,其中,所述同步数据的方法由所述主数 据库与所述待同步的从数据库间设置的数据传输组件执行。

3.  根据权利要求1或2所述的方法,其中,所述根据预设规则分配所述 多个同步任务至所述至少两个并发的线程中的步骤进一步包括:
根据所述多个同步任务中的对象标识分配所述多个同步任务,将具备相同 对象标识的同步任务分配至同一个线程中;或者
根据所述多个同步任务中的数据表标识分配所述多个同步任务,将具备相 同数据表标识的同步任务分配至同一个线程中。

4.  根据权利要求3所述的方法,其中,所述将具备相同对象标识的同步 任务分配至同一个线程中的步骤进一步包括:
将具备相同对象标识的同步任务按照时序或排序顺序分配至同一个线程 中。

5.  根据权利要求3所述的方法,其中,所述将具备相同数据表标识的同 步任务分配至同一个线程中的步骤进一步包括:
将具备相同数据表标识的同步任务按照时序或排序顺序分配至同一个线 程中。

6.  根据权利要求1或2所述的方法,其中,所述调用至少两个并发的线 程,根据预设规则分配所述多个同步任务至所述至少两个并发的线程中的步骤 进一步包括:
根据所述多个同步任务的数量,调用相应数量的并发的线程;以及
将所述多个同步任务一对一的分配至所述相应数量的并发的线程中。

7.  根据权利要求1-6任一项所述的方法,其中,若在利用所述至少两个并 发的线程,发送所述多个同步任务至所述从数据库的过程中,从所述主数据库 获取到新的待同步数据,则根据所述新的待同步数据生成新的多个同步任务。

8.  一种同步数据的装置,应用于具有主从结构的数据库,包括:
获取器,适于从主数据库获取待同步数据;
生成器,适于根据所述待同步数据生成多个同步任务;
分配器,适于调用至少两个并发的线程,根据预设规则分配所述多个同步 任务至所述至少两个并发的线程中;以及
发送器,适于利用所述至少两个并发的线程,发送所述多个同步任务至从 数据库,以供所述从数据库根据所述多个同步任务实现与所述主数据库间的数 据同步。

9.  一种同步数据的数据传输组件,包括:权利要求8所述的同步数据的 装置。

10.  一种同步数据的系统,包括主数据库、从数据库以及权利要求9所述 的同步数据的数据传输组件。

说明书

说明书同步数据的方法、装置、数据传输组件及系统
技术领域
本发明涉及计算机技术领域,特别是一种同步数据的方法、装置、数据传 输组件及系统。
背景技术
MySQL是一种关系型数据库管理系统,其主从架构是目前使用最多的数 据库架构之一,尤其是对于负载量比较大的网站。MySQL在主从架构中,主 数据库进行写入、更新、删除等操作,并通过预定的同步策略将这些操作在从 数据库也执行一遍,从而达到主从数据库中数据的一致性。
相关技术中,MySQL主从数据库同步的过程为:MySQL主数据库上有写 入、更新、删除等操作后,其自身会将这些操作记录到binary log(二进制日 志)里,如图1A所示,为了保证同步数据的准确性,从数据库上只有一个同 步线程顺序并实时地读取主数据库的binary log,并根据binary log的记录顺 序在从数据库上回放执行,从而使从数据库和主数据库中的数据保持一致。
然而,当主数据库的写入、更新、删除等操作较多时,尤其是主数据库在 大量业务的触发下,对从数据库同步时会产生大量写入需求,但是从数据库同 步的时候却只有一个线程在按照binary log的记录顺序在回放并进行写入操 作,单线程对数据的处理速度有限,超过其处理速度的数据需进行排队等待, 若在存在数据排队的过程仍有大量数据写入,则会进一步增加排队时长。因此, 在主数据库写入量很大的时候会因单线程处理速度的限制导致从数据库同步 延时,而且因数据量的增加可能会延时越来越大,进而导致无法满足后续提供 数据服务的需求。
发明内容
鉴于上述问题,提出了本发明以便提供一种克服上述问题或者至少部分地 解决上述问题的同步数据的方法、装置、数据传输组件及系统。
依据本发明的一个方面,提供了一种同步数据的方法,应用于具有主从结 构的数据库,包括:从主数据库获取待同步数据,并根据所述待同步数据生成 多个同步任务;调用至少两个并发的线程,根据预设规则分配所述多个同步任 务至所述至少两个并发的线程中;以及利用所述至少两个并发的线程,发送所 述多个同步任务至从数据库,以供所述从数据库根据所述多个同步任务实现与 所述主数据库间的数据同步。
可选地,所述同步数据的方法由所述主数据库与所述待同步的从数据库间 设置的数据传输组件执行。
可选地,所述根据预设规则分配所述多个同步任务至所述至少两个并发的 线程中的步骤进一步包括:根据所述多个同步任务中的对象标识分配所述多个 同步任务,将具备相同对象标识的同步任务分配至同一个线程中;或者根据所 述多个同步任务中的数据表标识分配所述多个同步任务,将具备相同数据表标 识的同步任务分配至同一个线程中。
可选地,所述将具备相同对象标识的同步任务分配至同一个线程中的步骤 进一步包括:将具备相同对象标识的同步任务按照时序或排序顺序分配至同一 个线程中。
可选地,所述将具备相同数据表标识的同步任务分配至同一个线程中的步 骤进一步包括:将具备相同数据表标识的同步任务按照时序或排序顺序分配至 同一个线程中。
可选地,所述调用至少两个并发的线程,根据预设规则分配所述多个同步 任务至所述至少两个并发的线程中的步骤进一步包括:根据所述多个同步任务 的数量,调用相应数量的并发的线程;以及将所述多个同步任务一对一的分配 至所述相应数量的并发的线程中。
可选地,若在利用所述至少两个并发的线程,发送所述多个同步任务至所 述从数据库的过程中,从所述主数据库获取到新的待同步数据,则根据所述新 的待同步数据生成新的多个同步任务。
可选地,所述根据所述新的待同步数据生成新的多个同步任务之后,还包 括:根据所述预设规则分配所述新的多个同步任务至所述至少两个并发的线程 中;或者调用新的线程,并根据所述预设规则分配所述新的多个同步任务至所 述新的线程中,以利用所述新的线程发送所述新的多个同步任务至所述从数据 库。
可选地,在所述从数据库根据所述多个同步任务实现与所述主数据库间的 数据同步的过程中,所述从数据库记录自身同步的执行位置信息,以得到同步 日志。
可选地,在所述从数据库根据所述多个同步任务实现与所述主数据库间的 数据同步的过程中,还包括:监控所述从数据库的数据同步的状态;若监控到 所述从数据库的数据同步发生中断,则获取所述从数据库的同步日志,并读取 所述从数据库的同步日志中所述从数据库同步的执行位置信息;以及根据所述 从数据库同步的执行位置信息恢复数据同步。
可选地,所述获取所述从数据库的同步日志的步骤进一步包括:从所述从 数据库获取所述从数据库的同步日志。
可选地,所述从数据库的同步日志被上传至云服务器,以及获取所述从数 据库的同步日志的步骤进一步包括:从所述云服务器获取所述从数据库的同步 日志。
可选地,所述从主数据库获取待同步数据的步骤进一步包括:以指定的时 间周期获取所述主数据库的日志文件;以及解析所述主数据库的日志文件,得 到所述待同步数据。
可选地,所述解析所述主数据库的日志文件,得到所述待同步数据的步骤 进一步包括:若初次解析所述主数据库的日志文件,则从所述主数据库的日志 文件的初始位置开始解析,得到所述待同步数据;若非初次解析所述主数据库 的日志文件,则获取上一次解析所述主数据库的日志文件的解析位置,并从所 述解析位置开始解析,得到所述待同步数据。
可选地,所述待同步数据的格式为JSON格式。
可选地,所述主数据库的数量为至少一个。
可选地,所述主数据库或所述从数据库为MySQL数据库。
依据本发明的另一个方面,提供了一种同步数据的装置,应用于具有主从 结构的数据库,包括:
获取器,适于从主数据库获取待同步数据;
生成器,适于根据所述待同步数据生成多个同步任务;
分配器,适于调用至少两个并发的线程,根据预设规则分配所述多个同步 任务至所述至少两个并发的线程中;以及
发送器,适于利用所述至少两个并发的线程,发送所述多个同步任务至从 数据库,以供所述从数据库根据所述多个同步任务实现与所述主数据库间的数 据同步。
可选地,所述同步数据的装置配置于所述主数据库与所述待同步的从数据 库之间。
可选地,所述分配器还适于:根据所述多个同步任务中的对象标识分配所 述多个同步任务,将具备相同对象标识的同步任务分配至同一个线程中;或者 根据所述多个同步任务中的数据表标识分配所述多个同步任务,将具备相同数 据表标识的同步任务分配至同一个线程中。
可选地,所述分配器还适于:将具备相同对象标识的同步任务按照时序或 排序顺序分配至同一个线程中。
可选地,所述分配器还适于:将具备相同数据表标识的同步任务按照时序 或排序顺序分配至同一个线程中。
可选地,所述分配器还适于:根据所述多个同步任务的数量,调用相应数 量的并发的线程;以及将所述多个同步任务一对一的分配至所述相应数量的并 发的线程中。
可选地,若所述发送器在利用所述至少两个并发的线程,发送所述多个同 步任务至所述从数据库的过程中,所述获取器从所述主数据库获取到新的待同 步数据,则所述生成器还适于:根据所述新的待同步数据生成新的多个同步任 务。
可选地,所述生成器根据所述新的待同步数据生成新的多个同步任务之 后,所述分配器还适于:根据所述预设规则分配所述新的多个同步任务至所述 至少两个并发的线程中;或者调用新的线程,并根据所述预设规则分配所述新 的多个同步任务至所述新的线程中,以利用所述新的线程发送所述新的多个同 步任务至所述从数据库。
可选地,在所述从数据库根据所述多个同步任务实现与所述主数据库间的 数据同步的过程中,所述从数据库记录自身同步的执行位置信息,以得到同步 日志。
可选地,所述装置还包括监控器以及执行器,其中在所述从数据库根据所 述多个同步任务实现与所述主数据库间的数据同步的过程中:
所述监控器,适于监控所述从数据库的数据同步的状态;
所述执行器,适于若所述监控器监控到所述从数据库的数据同步发生中 断,则获取所述从数据库的同步日志,并读取所述从数据库的同步日志中所述 从数据库同步的执行位置信息;以及根据所述从数据库同步的执行位置信息恢 复数据同步。
可选地,所述执行器还适于:从所述从数据库获取所述从数据库的同步日 志。
可选地,所述从数据库的同步日志被上传至云服务器,所述执行器还适于: 从所述云服务器获取所述从数据库的同步日志。
可选地,所述获取器还适于:以指定的时间周期获取所述主数据库的日志 文件;以及解析所述主数据库的日志文件,得到所述待同步数据。
可选地,所述获取器还适于:若初次解析所述主数据库的日志文件,则从 所述主数据库的日志文件的初始位置开始解析,得到所述待同步数据;若非初 次解析所述主数据库的日志文件,则获取上一次解析所述主数据库的日志文件 的解析位置,并从所述解析位置开始解析,得到所述待同步数据。
依据本发明的又一个方面,提供了一种同步数据的数据传输组件,包括上 述任一项所述的同步数据的装置。
依据本发明的再一个方面,提供了一种同步数据的系统,包括主数据库、 从数据库以及上述的同步数据的数据传输组件。
在本发明实施例中,利用设置的数据传输组件来实现主数据库与待同步的 从数据库间的数据同步,即数据传输组件从主数据库获取待同步数据,并根据 待同步数据生成多个同步任务,之后调用至少两个并发的线程,根据预设规则 分配多个同步任务至所述的至少两个并发的线程中。随后利用至少两个并发的 线程,发送多个同步任务至从数据库,以供从数据库根据多个同步任务实现与 主数据库间的数据同步。由此可知,数据传输组件可以调用至少两个并发的线 程,利用至少两个并发的线程,能够同时对数据进行处理,即可以由至少两个 并发的线程同步发送多个同步任务至从数据库,与相关技术中的单线程同步相 比较,在单位时间内能够发送数倍于单线程的同步任务,从而提高了同步数据 的效率,缩短同步所需时长,解决相关技术中主从数据库单线程同步延时的问 题,能够实现实时同步,进而满足后续提供数据服务的需求。并且,多线程的 处理方式能够大大缩短了数据排队时长,缓解缓存部件的压力,尽快释放出资 源空间,提高系统资源的利用率。另外,数据传输组件可以根据实际情况设置 预设规则,实现动态分配多个同步任务至所述的至少两个并发的线程中,进一 步提高同步数据的效率。
上述说明仅是本发明技术方案的概述,为了能够更清楚了解本发明的技术 手段,而可依照说明书的内容予以实施,并且为了让本发明的上述和其它目的、 特征和优点能够更明显易懂,以下特举本发明的具体实施方式。
根据下文结合附图对本发明具体实施例的详细描述,本领域技术人员将会 更加明了本发明的上述以及其他目的、优点和特征。
附图说明
通过阅读下文优选实施方式的详细描述,各种其他的优点和益处对于本领 域普通技术人员将变得清楚明了。附图仅用于示出优选实施方式的目的,而并 不认为是对本发明的限制。而且在整个附图中,用相同的参考符号表示相同的 部件。在附图中:
图1A示出了现有技术中主从数据库间同步数据的结构示意图;
图1B示出了根据本发明一个实施例的同步数据的方法的流程示意图;
图2示出了根据本发明一个实施例的同步数据的装置的结构示意图;
图3示出了根据本发明另一个实施例的同步数据的装置的结构示意图;
图4示出了根据本发明一个实施例的同步数据的系统的结构示意图;以及
图5示出了根据本发明另一个实施例的同步数据的系统的结构示意图。
具体实施方式
下面将参照附图更详细地描述本公开的示例性实施例。虽然附图中显示了 本公开的示例性实施例,然而应当理解,可以以各种形式实现本公开而不应被 这里阐述的实施例所限制。相反,提供这些实施例是为了能够更透彻地理解本 公开,并且能够将本公开的范围完整的传达给本领域的技术人员。
为解决上述技术问题,本发明实施例提供了一种同步数据的方法,应用于 具有主从结构的数据库,该同步数据的方法可以由主数据库与待同步的从数据 库间设置的数据传输组件执行。图1B示出了根据本发明一个实施例的同步数 据的方法的流程示意图。如图1B所示,该方法至少包括以下步骤S102、步骤 S104以及步骤S106。
步骤S102、从主数据库获取待同步数据,并根据待同步数据生成多个同步 任务。
步骤S104、调用至少两个并发的线程,根据预设规则分配多个同步任务至 所述的至少两个并发的线程中。
步骤S106、利用至少两个并发的线程,发送多个同步任务至从数据库,以 供从数据库根据多个同步任务实现与主数据库间的数据同步。
在本发明实施例中,可以利用设置的数据传输组件来实现主数据库与待同 步的从数据库间的数据同步,即数据传输组件从主数据库获取待同步数据,并 根据待同步数据生成多个同步任务,之后调用至少两个并发的线程,根据预设 规则分配多个同步任务至所述的至少两个并发的线程中。随后利用至少两个并 发的线程,发送多个同步任务至从数据库,以供从数据库根据多个同步任务实 现与主数据库间的数据同步。由此可知,数据传输组件可以调用至少两个并发 的线程,利用至少两个并发的线程,能够同时对数据进行处理,即可以由至少 两个并发的线程同步发送多个同步任务至从数据库,与相关技术中的单线程同 步相比较,在单位时间内能够发送数倍于单线程的同步任务,从而提高了同步 数据的效率,缩短同步所需时长,解决相关技术中主从数据库单线程同步延时 的问题,能够实现实时同步,进而满足后续提供数据服务的需求。并且,多线 程的处理方式能够大大缩短了数据排队时长,缓解缓存部件的压力,尽快释放 出资源空间,提高系统资源的利用率。另外,数据传输组件可以根据实际情况 设置预设规则,实现动态分配多个同步任务至所述的至少两个并发的线程中, 进一步提高同步数据的效率。
上文步骤S102中从主数据库获取待同步数据,本发明实施例提供了一种 优选的方案,在该方案中,可以以指定的时间周期(如实时、1秒或2秒等) 获取主数据库的日志文件,进而解析主数据库的日志文件,得到待同步数据。 这里,主数据库的日志文件中记录数据的写入、更新、删除等操作,如MySQL 主数据库的binary log中记录数据的写入、更新、删除等操作。进一步地,若 初次解析主数据库的日志文件,则从主数据库的日志文件的初始位置开始解 析,得到待同步数据。若非初次解析主数据库的日志文件,则获取上一次解析 主数据库的日志文件的解析位置,并从解析位置开始解析,得到待同步数据。 例如,可以由主数据库或数据传输组件记录每次解析主数据库的日志文件的解 析位置,当非初次解析数据库的日志文件时,可以从上一次记录的解析位置开 始解析,得到待同步数据,从而可以减少解析数据库的日志文件的时间,有利 于主从数据库间的快速同步。这里,可以阻塞式解析数据库的日志文件,进一 步确保主从数据库能够同步成功。
在本发明实施例的另一种优选方案中,数据传输组件可以分别获取主数据 库的日志文件和从数据库的同步日志,随后比较主数据库的日志文件与从数据 库的同步日志,得到待同步数据。这里,待同步数据的格式可以为多种格式, 如JSON格式,它是一种轻量级的数据交换语言,易于人们阅读和编写,同时 也易于机器解析和生成,且网络传输速度快。
在步骤S102根据待同步数据生成多个同步任务之后,步骤S104中调用至 少两个并发的线程,根据预设规则分配多个同步任务至所述的至少两个并发的 线程中,可以通过多种方式来实现,如利用对象标识或数据表标识等进行分配, 下面分别进行详细介绍。
方式一、利用对象标识进行分配。
在方式一中,根据多个同步任务中的对象标识分配多个同步任务,将具备 相同对象标识的同步任务分配至同一个线程中。这样,具备相同对象标识的同 步任务可以分配至同一个线程中依序(如时序或排序顺序)下达至从数据库, 由从数据库依序执行同步操作,从而保证了数据同步的准确性。例如,5个同 步任务分别是对象A的写入操作、对象B的写入操作、对象B的更新操作、 对象B的删除操作以及对象C的删除操作,此时,可以调用三个线程,分别 是线程1、2和3,可以将对象A的写入操作分配至线程1中,将对象B的写 入操作、对象B的更新操作以及对象B的删除操作分配至线程2中,将对象C 的删除操作分配至线程3中。当然,此处同步任务的个数以及线程的个数仅是 示意性的,在实际应用中,同步任务可能是上千个、上万个甚至百万个,可以 根据同步任务的个数合理调用线程,并根据对象标识进行分配。
方式二、利用数据表标识进行分配。
在方式二中,根据多个同步任务中的数据表标识分配多个同步任务,将具 备相同数据表标识的同步任务分配至同一个线程中。这样,具备相同数据表标 识的同步任务可以分配至同一个线程中依序(如时序或排序顺序)下达至从数 据库,由从数据库依序执行同步操作,从而保证了数据同步的准确性以及提高 了数据同步的效率。例如,4个同步任务分别是数据表1中对象A的写入操作、 数据表1中的对象B的写入操作、数据表1中的对象B的更新操作以及数据表 2中的对象C的删除操作。此时,可以调用两个线程,分别是线程1和2,可 以将数据表1中对象A的写入操作、数据表1中的对象B的写入操作、数据表 1中的对象B的更新操作分配至线程1中,将数据表2中的对象C的删除操作 分配至线程2中。需要说明的是,此处同步任务的个数以及线程的个数仅是示 意性的,在实际应用中,同步任务可能是上千个、上万个甚至百万个,可以根 据同步任务的个数合理调用线程,并根据数据表标识进行分配。
方式三、调用相应数量的并发的线程进行分配。
在方式三中,根据多个同步任务的数量,调用相应数量的并发的线程,随 后将多个同步任务一对一的分配至相应数量的并发的线程中。
进一步地,在步骤S106利用至少两个并发的线程,发送多个同步任务至 从数据库的过程中,若从该主数据库获取到新的待同步数据,并根据新的待同 步数据生成新的多个同步任务时,本发明实施例还可以及时、有效地处理新的 多个同步任务,以实现将新的多个同步任务及时下发至从数据库。例如,根据 上述的预设规则分配新的多个同步任务至所述的至少两个并发的线程中,即可 以采用前文介绍的方式一或方式二进行合理分配。又如,调用新的线程,并根 据上述的预设规则分配新的多个同步任务至新的线程中,以利用新的线程发送 新的多个同步任务至从数据库,这样新的多个同步任务无需等待,可以提高数 据同步的效率。
此外,本发明实施例还提供了监控数据同步的方案,可以实现断点续传和 故障恢复等功能。即在从数据库根据多个同步任务实现与主数据库间的数据同 步的过程中,从数据库记录自身同步的执行位置信息,得到同步日志。此时, 数据传输组件监控从数据库的数据同步的状态,若监控到从数据库的数据同步 发生中断,则获取从数据库的同步日志,并读取从数据库的同步日志中从数据 库同步的执行位置信息,从而根据从数据库同步的执行位置信息恢复数据同 步。这里,从数据库的数据同步发生中断可能有多种因素,如硬盘出现故障、 操作系统崩溃、从服务器断电等等。进一步地,从数据库的同步日志被上传至 云服务器,此时可以从该从数据库或云服务器获取从数据库的同步日志,这样 可以预防从服务器挂机或从数据库的数据丢失等故障。
相关技术中,主从数据库之间进行同步数据遵循一主多从的架构,采用本 发明提供的数据传输组件,可以实现多主多从的架构,可以节省硬件资源。另 外,本发明实施例中主数据库或从数据库可以为MySQL数据库。如前所述, 当主数据库的写入、更新、删除等操作较多时,尤其是主数据库在大量业务的 触发下,对从数据库同步时会产生大量写入需求,但是MySQL从数据库同步 的时候却只有一个线程在按照binary log的记录顺序在回放并进行写入操作, 单线程对数据的处理速度有限,超过其处理速度的数据需进行排队等待,若在 存在数据排队的过程仍有大量数据写入,则会进一步增加排队时长。此外, MySQL5.6及以上的版本支持多线程复制,这种技术的原理是基于database(数 据库),为每一个database启动一个同步的线程,然后进行多线程的数据同步。 然而,基于database的方案,只有在整个服务有多个database的时候才有效, 当单个database的时候不能解决问题,而多个database在业务逻辑上将对数 据库的使用带来很大的制约。如果已经存在的服务只有单个database,那么在 拆分成多个database时需要很大的成本,不仅给数据库维护人员带来额外的工 作,而且对于数据库的使用人员也需要修改相应的业务逻辑。本发明提供的技 术方案能够解决MySQL各主流版本单线程同步造成同步延时的问题,支持主 流的MySQL版本,支持单个或多个database的数据同步。本发明可以根据实 际情况调用自定义个数的线程来做主从数据库的同步,不受自身版本和 database个数的限制。
需要说明的是,实际应用中,上述所有可选实施方式可以采用结合的方式 任意组合,形成本发明的可选实施例,在此不再一一赘述。
对应上述实施例中的同步数据的方法,本发明实施例还提供了一种同步数 据的装置,应用于具有主从结构的数据库,图2示出了根据本发明一个实施例 的同步数据的装置的结构示意图。参见图2,该装置至少包括:获取器210、 生成器220、分配器230以及发送器240。
现介绍本发明实施例的同步数据的装置的各组成或器件的功能以及各部 分间的连接关系:
获取器210,适于从主数据库获取待同步数据;
生成器220,与获取器210相耦合,适于根据获取的待同步数据生成多个 同步任务;
分配器230,与生成器220相耦合,适于调用至少两个并发的线程,根据 预设规则分配多个同步任务至所述的至少两个并发的线程中;
发送器240,与分配器230相耦合,适于利用至少两个并发的线程,发送 多个同步任务至从数据库,以供从数据库根据多个同步任务实现与主数据库间 的数据同步。
在本发明的一个实施例中,上述图2展示的同步数据的装置可以配置于主 数据库与待同步的从数据库之间。
在本发明的一个实施例中,上述分配器230还适于:根据多个同步任务中 的对象标识分配多个同步任务,将具备相同对象标识的同步任务分配至同一个 线程中;或者根据多个同步任务中的数据表标识分配多个同步任务,将具备相 同数据表标识的同步任务分配至同一个线程中。
在本发明的一个实施例中,上述分配器230还适于:将具备相同对象标识 的同步任务按照时序或排序顺序分配至同一个线程中。
在本发明的另一个实施例中,上述分配器230还适于:将具备相同数据表 标识的同步任务按照时序或排序顺序分配至同一个线程中。
在本发明的一个实施例中,上述分配器230还适于:根据多个同步任务的 数量,调用相应数量的并发的线程;将多个同步任务一对一的分配至相应数量 的并发的线程中。
在本发明的一个实施例中,在发送器240利用至少两个并发的线程,发送 多个同步任务至从数据库的过程中,若从主数据库获取到新的待同步数据,则 生成器220根据新的待同步数据生成新的多个同步任务。
在本发明的一个实施例中,生成器220根据新的待同步数据生成新的多个 同步任务之后,上述分配器230还适于:根据预设规则分配新的多个同步任务 至所述的至少两个并发的线程中;或者调用新的线程,并根据预设规则分配新 的多个同步任务至新的线程中,以利用新的线程发送新的多个同步任务至从数 据库。
在本发明的一个实施例中,在从数据库根据多个同步任务实现与主数据库 间的数据同步的过程中,从数据库记录自身同步的执行位置信息,以得到同步 日志。
在本发明的一个实施例中,图3示出了根据本发明另一个实施例的同步数 据的装置的结构示意图。参见图3,该装置还可以包括:
监控器310,与发送器240相耦合,适于监控从数据库的数据同步的状态;
执行器320,与监控器310相耦合,适于若监控到从数据库的数据同步发 生中断,则获取从数据库的同步日志,并读取从数据库的同步日志中从数据库 同步的执行位置信息;根据从数据库同步的执行位置信息恢复数据同步。
在本发明的一个实施例中,上述执行器320还适于:从所述从数据库获取 从数据库的同步日志。
在本发明的一个实施例中,从数据库的同步日志被上传至云服务器,上述 执行器320还适于:从所述从数据库或云服务器获取从数据库的同步日志。
在本发明的一个实施例中,上述获取器210还适于:以指定的时间周期获 取主数据库的日志文件;解析主数据库的日志文件,得到待同步数据。
在本发明的一个实施例中,上述获取器210还适于:若初次解析主数据库 的日志文件,则从主数据库的日志文件的初始位置开始解析,得到待同步数据; 若非初次解析主数据库的日志文件,则获取上一次解析主数据库的日志文件的 解析位置,并从解析位置开始解析,得到待同步数据。
在本发明的一个实施例中,待同步数据的格式为JSON格式。
在本发明的一个实施例中,主数据库的数量为至少一个。
在本发明的一个实施例中,主数据库或从数据库为MySQL数据库。
相应的,本发明还提供一种同步数据的数据传输组件,其包括上述实施例 中所述的任一同步数据的装置。
基于上文各实施例提供的同步数据的方法、装置和数据传输组件,基于同 一发明构思,本发明实施例还提供了一种同步数据的系统,参见图4所示,该 系统至少可以包括:上文介绍的主数据库410、数据传输组件420以及从数据 库430。
下面通过具体实施例详细介绍本发明利用数据传输组件实现同步数据的 方案,在本实施例中,数据传输组件从主数据库获取待同步数据,并根据待同 步数据生成多个同步任务。图5示出了根据本发明另一个实施例的同步数据的 系统的结构示意图。如图5所示,在实施本发明提供的技术方案时,可以关闭 现有的主数据库410和从数据库430单线程同步的接口,由数据传输组件420 从主数据库410获取待同步数据,并根据待同步数据生成多个同步任务(如10 个同步任务,其详细信息如下表1所示)。
表1
同步任务 数据表标识 对象标识 数据操作 1 D1 对象A 写入 2 D1 对象A 更新 3 D1 对象B 写入 4 D1 对象A 删除 5 D2 对象C 写入 6 D2 对象C 删除 7 D1 对象B 更新 8 D3 对象D 写入 9 D3 对象D 更新 10 D3 对象D 删除
此时,可以根据前文所述的方式一、方式二或方式三调用至少两个并发的 线程,并分配同步任务至所述的至少两个并发的线程中。例如,根据表1所示, 可以调用三个线程,分别为线程1、2和3,将同步任务1、2、3、4以及7按 照时序或排序顺序分配至线程1中,将同步任务5和6按照时序或排序顺序分 配至线程2中,以及将同步任务8、9和10按照时序或排序顺序分配至线程3 中,从而利用线程1、2和3同步发送10个同步任务至从数据库430,以供从 数据库430根据10个同步任务实现与主数据库410间的数据同步。又如,根 据对象标识进行分配,可以调用四个线程,分别为线程1、2、3和4,将同步 任务1、2及4按照时序或排序顺序分配至线程1中,将同步任务3和7按照 时序或排序顺序分配至线程2中,将同步任务5和6按照时序或排序顺序分配 至线程3中,以及将同步任务8、9和10按照时序或排序顺序分配至线程4中, 从而利用线程1、2、3和4同步发送10个同步任务至从数据库430,以供从数 据库430根据10个同步任务实现与主数据库410间的数据同步。需要说明的 是,此处同步任务的个数、线程的个数以及数据操作类型仅是示意性的,在实 际应用中,同步任务可能是上千个、上万个甚至百万个,可以根据同步任务的 个数合理调用线程进行分配。
进一步地,若数据传输组件420从该主数据库410获取到新的待同步数据, 并根据新的待同步数据生成新的多个同步任务时,本发明实施例还可以及时、 有效地处理新的多个同步任务,以实现将新的多个同步任务及时下发至从数据 库430。例如,根据上述的预设规则分配新的多个同步任务至所述的至少两个 并发的线程中。又如,调用新的线程,并根据上述的预设规则分配新的多个同 步任务至新的线程中,以利用新的线程发送新的多个同步任务至从数据库430, 这样新的多个同步任务无需等待,可以提高数据同步的效率。
此外,本发明实施例还提供了监控数据同步的方案,可以实现断点续传和 故障恢复等功能,可参照前文所述,此处不再赘述。
根据上述任意一个优选实施例或多个优选实施例的组合,本发明实施例能 够达到如下有益效果:
在本发明实施例中,利用设置的数据传输组件来实现主数据库与待同步的 从数据库间的数据同步,即数据传输组件从主数据库获取待同步数据,并根据 待同步数据生成多个同步任务,之后调用至少两个并发的线程,根据预设规则 分配多个同步任务至所述的至少两个并发的线程中。随后利用至少两个并发的 线程,发送多个同步任务至从数据库,以供从数据库根据多个同步任务实现与 主数据库间的数据同步。由此可知,数据传输组件可以调用至少两个并发的线 程,利用至少两个并发的线程,能够同时对数据进行处理,即可以由至少两个 并发的线程同步发送多个同步任务至从数据库,与相关技术中的单线程同步相 比较,在单位时间内能够发送数倍于单线程的同步任务,从而提高了同步数据 的效率,缩短同步所需时长,解决相关技术中主从数据库单线程同步延时的问 题,能够实现实时同步,进而满足后续提供数据服务的需求。并且,多线程的 处理方式能够大大缩短了数据排队时长,缓解缓存部件的压力,尽快释放出资 源空间,提高系统资源的利用率。另外,数据传输组件可以根据实际情况设置 预设规则,实现动态分配多个同步任务至所述的至少两个并发的线程中,进一 步提高同步数据的效率。
在此处所提供的说明书中,说明了大量具体细节。然而,能够理解,本发 明的实施例可以在没有这些具体细节的情况下实践。在一些实例中,并未详细 示出公知的方法、结构和技术,以便不模糊对本说明书的理解。
类似地,应当理解,为了精简本公开并帮助理解各个发明方面中的一个或 多个,在上面对本发明的示例性实施例的描述中,本发明的各个特征有时被一 起分组到单个实施例、图、或者对其的描述中。然而,并不应将该公开的方法 解释成反映如下意图:即所要求保护的本发明要求比在每个权利要求中所明确 记载的特征更多的特征。更确切地说,如下面的权利要求书所反映的那样,发 明方面在于少于前面公开的单个实施例的所有特征。因此,遵循具体实施方式 的权利要求书由此明确地并入该具体实施方式,其中每个权利要求本身都作为 本发明的单独实施例。
本领域那些技术人员可以理解,可以对实施例中的设备中的模块进行自适 应性地改变并且把它们设置在与该实施例不同的一个或多个设备中。可以把实 施例中的模块或单元或组件组合成一个模块或单元或组件,以及此外可以把它 们分成多个子模块或子单元或子组件。除了这样的特征和/或过程或者单元中的 至少一些是相互排斥之外,可以采用任何组合对本说明书(包括伴随的权利要 求、摘要和附图)中公开的所有特征以及如此公开的任何方法或者设备的所有 过程或单元进行组合。除非另外明确陈述,本说明书(包括伴随的权利要求、 摘要和附图)中公开的每个特征可以由提供相同、等同或相似目的的替代特征 来代替。
此外,本领域的技术人员能够理解,尽管在此所述的一些实施例包括其它 实施例中所包括的某些特征而不是其它特征,但是不同实施例的特征的组合意 味着处于本发明的范围之内并且形成不同的实施例。例如,在权利要求书中, 所要求保护的实施例的任意之一都可以以任意的组合方式来使用。
本发明的各个部件实施例可以以硬件实现,或者以在一个或者多个处理器 上运行的软件模块实现,或者以它们的组合实现。本领域的技术人员应当理解, 可以在实践中使用微处理器或者数字信号处理器(DSP)来实现根据本发明实 施例的同步数据的设备及系统中的一些或者全部部件的一些或者全部功能。本 发明还可以实现为用于执行这里所描述的方法的一部分或者全部的设备或者 装置程序(例如,计算机程序和计算机程序产品)。这样的实现本发明的程序 可以存储在计算机可读介质上,或者可以具有一个或者多个信号的形式。这样 的信号可以从因特网网站上下载得到,或者在载体信号上提供,或者以任何其 他形式提供。
应该注意的是上述实施例对本发明进行说明而不是对本发明进行限制,并 且本领域技术人员在不脱离所附权利要求的范围的情况下可设计出替换实施 例。在权利要求中,不应将位于括号之间的任何参考符号构造成对权利要求的 限制。单词“包括”不排除存在未列在权利要求中的元件或步骤。位于元件之 前的单词“一”或“一个”不排除存在多个这样的元件。本发明可以借助于包 括有若干不同元件的硬件以及借助于适当编程的计算机来实现。在列举了若干 装置的单元权利要求中,这些装置中的若干个可以是通过同一个硬件项来具体 体现。单词第一、第二、以及第三等的使用不表示任何顺序。可将这些单词解 释为名称。
至此,本领域技术人员应认识到,虽然本文已详尽示出和描述了本发明的 多个示例性实施例,但是,在不脱离本发明精神和范围的情况下,仍可根据本 发明公开的内容直接确定或推导出符合本发明原理的许多其他变型或修改。因 此,本发明的范围应被理解和认定为覆盖了所有这些其他变型或修改。
本发明还公开了:A1、一种同步数据的方法,应用于具有主从结构的数据 库,包括:
从主数据库获取待同步数据,并根据所述待同步数据生成多个同步任务;
调用至少两个并发的线程,根据预设规则分配所述多个同步任务至所述至 少两个并发的线程中;以及
利用所述至少两个并发的线程,发送所述多个同步任务至从数据库,以供 所述从数据库根据所述多个同步任务实现与所述主数据库间的数据同步。
A2、根据A1所述的方法,其中,所述同步数据的方法由所述主数据库与 所述待同步的从数据库间设置的数据传输组件执行。
A3、根据A1或A2所述的方法,其中,所述根据预设规则分配所述多个 同步任务至所述至少两个并发的线程中的步骤进一步包括:
根据所述多个同步任务中的对象标识分配所述多个同步任务,将具备相同 对象标识的同步任务分配至同一个线程中;或者
根据所述多个同步任务中的数据表标识分配所述多个同步任务,将具备相 同数据表标识的同步任务分配至同一个线程中。
A4、根据A3所述的方法,其中,所述将具备相同对象标识的同步任务分 配至同一个线程中的步骤进一步包括:
将具备相同对象标识的同步任务按照时序或排序顺序分配至同一个线程 中。
A5、根据A3所述的方法,其中,所述将具备相同数据表标识的同步任务 分配至同一个线程中的步骤进一步包括:
将具备相同数据表标识的同步任务按照时序或排序顺序分配至同一个线 程中。
A6、根据A1或A2所述的方法,其中,所述调用至少两个并发的线程, 根据预设规则分配所述多个同步任务至所述至少两个并发的线程中的步骤进 一步包括:
根据所述多个同步任务的数量,调用相应数量的并发的线程;以及
将所述多个同步任务一对一的分配至所述相应数量的并发的线程中。
A7、根据A1-A6任一项所述的方法,其中,若在利用所述至少两个并发 的线程,发送所述多个同步任务至所述从数据库的过程中,从所述主数据库获 取到新的待同步数据,则根据所述新的待同步数据生成新的多个同步任务。
A8、根据A7所述的方法,其中,所述根据所述新的待同步数据生成新的 多个同步任务之后,还包括:
根据所述预设规则分配所述新的多个同步任务至所述至少两个并发的线 程中;或者
调用新的线程,并根据所述预设规则分配所述新的多个同步任务至所述新 的线程中,以利用所述新的线程发送所述新的多个同步任务至所述从数据库。
A9、根据A1-A8任一项所述的方法,其中,在所述从数据库根据所述多 个同步任务实现与所述主数据库间的数据同步的过程中,所述从数据库记录自 身同步的执行位置信息,以得到同步日志。
A10、根据A1-A9任一项所述的方法,其中,在所述从数据库根据所述多 个同步任务实现与所述主数据库间的数据同步的过程中,还包括:
监控所述从数据库的数据同步的状态;
若监控到所述从数据库的数据同步发生中断,则获取所述从数据库的同步 日志,并读取所述从数据库的同步日志中所述从数据库同步的执行位置信息; 以及
根据所述从数据库同步的执行位置信息恢复数据同步。
A11、根据A10所述的方法,其中,所述获取所述从数据库的同步日志的 步骤进一步包括:
从所述从数据库获取所述从数据库的同步日志。
A12、根据A10所述的方法,其中,所述从数据库的同步日志被上传至云 服务器,以及获取所述从数据库的同步日志的步骤进一步包括:
从所述云服务器获取所述从数据库的同步日志。
A13、根据A1-A12任一项所述的方法,其中,所述从主数据库获取待同 步数据的步骤进一步包括:
以指定的时间周期获取所述主数据库的日志文件;以及
解析所述主数据库的日志文件,得到所述待同步数据。
A14、根据A13所述的方法,其中,所述解析所述主数据库的日志文件, 得到所述待同步数据的步骤进一步包括:
若初次解析所述主数据库的日志文件,则从所述主数据库的日志文件的初 始位置开始解析,得到所述待同步数据;
若非初次解析所述主数据库的日志文件,则获取上一次解析所述主数据库 的日志文件的解析位置,并从所述解析位置开始解析,得到所述待同步数据。
A15、根据A1-A14任一项所述的方法,其中,所述待同步数据的格式为 JSON格式。
A16、根据A1-A15任一项所述的方法,其中,所述主数据库的数量为至 少一个。
A17、根据A1-A16任一项所述的方法,其中,所述主数据库或所述从数 据库为MySQL数据库。
B18、一种同步数据的装置,应用于具有主从结构的数据库,包括:
获取器,适于从主数据库获取待同步数据;
生成器,适于根据所述待同步数据生成多个同步任务;
分配器,适于调用至少两个并发的线程,根据预设规则分配所述多个同步 任务至所述至少两个并发的线程中;以及
发送器,适于利用所述至少两个并发的线程,发送所述多个同步任务至从 数据库,以供所述从数据库根据所述多个同步任务实现与所述主数据库间的数 据同步。
B19、根据B18所述的装置,其中,所述同步数据的装置配置于所述主数 据库与所述待同步的从数据库之间。
B20、根据B18或B19所述的装置,其中,所述分配器还适于:
根据所述多个同步任务中的对象标识分配所述多个同步任务,将具备相同 对象标识的同步任务分配至同一个线程中;或者
根据所述多个同步任务中的数据表标识分配所述多个同步任务,将具备相 同数据表标识的同步任务分配至同一个线程中。
B21、根据B20所述的装置,其中,所述分配器还适于:
将具备相同对象标识的同步任务按照时序或排序顺序分配至同一个线程 中。
B22、根据B20所述的装置,其中,所述分配器还适于:
将具备相同数据表标识的同步任务按照时序或排序顺序分配至同一个线 程中。
B23、根据B18所述的装置,其中,所述分配器还适于:
根据所述多个同步任务的数量,调用相应数量的并发的线程;以及
将所述多个同步任务一对一的分配至所述相应数量的并发的线程中。
B24、根据B18-B23任一项所述的装置,其中,若所述发送器在利用所述 至少两个并发的线程,发送所述多个同步任务至所述从数据库的过程中,所述 获取器从所述主数据库获取到新的待同步数据,则所述生成器还适于:
根据所述新的待同步数据生成新的多个同步任务。
B25、根据B24所述的装置,其中,所述生成器根据所述新的待同步数据 生成新的多个同步任务之后,所述分配器还适于:
根据所述预设规则分配所述新的多个同步任务至所述至少两个并发的线 程中;或者
调用新的线程,并根据所述预设规则分配所述新的多个同步任务至所述新 的线程中,以利用所述新的线程发送所述新的多个同步任务至所述从数据库。
B26、根据B18-B25任一项所述的装置,其中,在所述从数据库根据所述 多个同步任务实现与所述主数据库间的数据同步的过程中,所述从数据库记录 自身同步的执行位置信息,以得到同步日志。
B27、根据B18-B26任一项所述的装置,还包括监控器以及执行器,其中, 在所述从数据库根据所述多个同步任务实现与所述主数据库间的数据同步的 过程中:
所述监控器,适于监控所述从数据库的数据同步的状态;
所述执行器,适于若所述监控器监控到所述从数据库的数据同步发生中 断,则获取所述从数据库的同步日志,并读取所述从数据库的同步日志中所述 从数据库同步的执行位置信息;以及根据所述从数据库同步的执行位置信息恢 复数据同步。
B28、根据B27所述的装置,其中,所述执行器还适于:
从所述从数据库获取所述从数据库的同步日志。
B29、根据B27所述的装置,其中,所述从数据库的同步日志被上传至云 服务器,所述执行器还适于:
从所述云服务器获取所述从数据库的同步日志。
B30、根据B18-B29任一项所述的装置,其中,所述获取器还适于:
以指定的时间周期获取所述主数据库的日志文件;以及
解析所述主数据库的日志文件,得到所述待同步数据。
B31、根据B30所述的装置,其中,所述获取器还适于:
若初次解析所述主数据库的日志文件,则从所述主数据库的日志文件的初 始位置开始解析,得到所述待同步数据;
若非初次解析所述主数据库的日志文件,则获取上一次解析所述主数据库 的日志文件的解析位置,并从所述解析位置开始解析,得到所述待同步数据。
C32、一种同步数据的数据传输组件,包括:B18-B31任一项所述的同步 数据的装置。
D33、一种同步数据的系统,包括主数据库、从数据库以及C32所述的同 步数据的数据传输组件。

同步数据的方法、装置、数据传输组件及系统.pdf_第1页
第1页 / 共19页
同步数据的方法、装置、数据传输组件及系统.pdf_第2页
第2页 / 共19页
同步数据的方法、装置、数据传输组件及系统.pdf_第3页
第3页 / 共19页
点击查看更多>>
资源描述

《同步数据的方法、装置、数据传输组件及系统.pdf》由会员分享,可在线阅读,更多相关《同步数据的方法、装置、数据传输组件及系统.pdf(19页珍藏版)》请在专利查询网上搜索。

本发明提供了一种同步数据的方法、装置、数据传输组件及系统,该同步数据的方法,应用于具有主从结构的数据库,包括:从主数据库获取待同步数据,并根据所述待同步数据生成多个同步任务;调用至少两个并发的线程,根据预设规则分配所述多个同步任务至所述至少两个并发的线程中;以及利用所述至少两个并发的线程,发送所述多个同步任务至所述从数据库,以供所述从数据库根据所述多个同步任务实现与所述主数据库间的数据同步。本发明。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 物理 > 计算;推算;计数


copyright@ 2017-2020 zhuanlichaxun.net网站版权所有
经营许可证编号:粤ICP备2021068784号-1