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

文档序号:8380803阅读:452来源:国知局
同步数据的方法、装置、数据传输组件及系统的制作方法
【技术领域】
[0001] 本发明涉及计算机技术领域,特别是一种同步数据的方法、装置、数据传输组件及 系统。
【背景技术】
[0002] MySQL是一种关系型数据库管理系统,其主从架构是目前使用最多的数据库架构 之一,尤其是对于负载量比较大的网站。MySQL在主从架构中,主数据库进行写入、更新、删 除等操作,并通过预定的同步策略将这些操作在从数据库也执行一遍,从而达到主从数据 库中数据的一致性。
[0003] 相关技术中,MySQL主从数据库同步的过程为:MySQL主数据库上有写入、更新、 删除等操作后,其自身会将这些操作记录到binary log(二进制日志)里,如图IA所示, 为了保证同步数据的准确性,从数据库上只有一个同步线程顺序并实时地读取主数据库的 binary log,并根据binary log的记录顺序在从数据库上回放执行,从而使从数据库和主 数据库中的数据保持一致。
[0004] 然而,当主数据库的写入、更新、删除等操作较多时,尤其是主数据库在大量业务 的触发下,对从数据库同步时会产生大量写入需求,但是从数据库同步的时候却只有一个 线程在按照binary log的记录顺序在回放并进行写入操作,单线程对数据的处理速度有 限,超过其处理速度的数据需进行排队等待,若在存在数据排队的过程仍有大量数据写入, 则会进一步增加排队时长。因此,在主数据库写入量很大的时候会因单线程处理速度的限 制导致从数据库同步延时,而且因数据量的增加可能会延时越来越大,进而导致无法满足 后续提供数据服务的需求。

【发明内容】

[0005] 鉴于上述问题,提出了本发明以便提供一种克服上述问题或者至少部分地解决上 述问题的同步数据的方法、装置、数据传输组件及系统。
[0006] 依据本发明的一个方面,提供了一种同步数据的方法,应用于具有主从结构的数 据库,包括:从主数据库获取待同步数据,并根据所述待同步数据生成多个同步任务;调用 至少两个并发的线程,根据预设规则分配所述多个同步任务至所述至少两个并发的线程 中;以及利用所述至少两个并发的线程,发送所述多个同步任务至从数据库,以供所述从数 据库根据所述多个同步任务实现与所述主数据库间的数据同步。
[0007] 可选地,所述同步数据的方法由所述主数据库与所述待同步的从数据库间设置的 数据传输组件执行。
[0008] 可选地,所述根据预设规则分配所述多个同步任务至所述至少两个并发的线程中 的步骤进一步包括:根据所述多个同步任务中的对象标识分配所述多个同步任务,将具备 相同对象标识的同步任务分配至同一个线程中;或者根据所述多个同步任务中的数据表标 识分配所述多个同步任务,将具备相同数据表标识的同步任务分配至同一个线程中。
[0009] 可选地,所述将具备相同对象标识的同步任务分配至同一个线程中的步骤进一步 包括:将具备相同对象标识的同步任务按照时序或排序顺序分配至同一个线程中。
[0010] 可选地,所述将具备相同数据表标识的同步任务分配至同一个线程中的步骤进一 步包括:将具备相同数据表标识的同步任务按照时序或排序顺序分配至同一个线程中。
[0011] 可选地,所述调用至少两个并发的线程,根据预设规则分配所述多个同步任务至 所述至少两个并发的线程中的步骤进一步包括:根据所述多个同步任务的数量,调用相应 数量的并发的线程;以及将所述多个同步任务一对一的分配至所述相应数量的并发的线程 中。
[0012] 可选地,若在利用所述至少两个并发的线程,发送所述多个同步任务至所述从数 据库的过程中,从所述主数据库获取到新的待同步数据,则根据所述新的待同步数据生成 新的多个同步任务。
[0013] 可选地,所述根据所述新的待同步数据生成新的多个同步任务之后,还包括:根据 所述预设规则分配所述新的多个同步任务至所述至少两个并发的线程中;或者调用新的线 程,并根据所述预设规则分配所述新的多个同步任务至所述新的线程中,以利用所述新的 线程发送所述新的多个同步任务至所述从数据库。
[0014] 可选地,在所述从数据库根据所述多个同步任务实现与所述主数据库间的数据同 步的过程中,所述从数据库记录自身同步的执行位置信息,以得到同步日志。
[0015] 可选地,在所述从数据库根据所述多个同步任务实现与所述主数据库间的数据同 步的过程中,还包括:监控所述从数据库的数据同步的状态;若监控到所述从数据库的数 据同步发生中断,则获取所述从数据库的同步日志,并读取所述从数据库的同步日志中所 述从数据库同步的执行位置信息;以及根据所述从数据库同步的执行位置信息恢复数据同 步。
[0016] 可选地,所述获取所述从数据库的同步日志的步骤进一步包括:从所述从数据库 获取所述从数据库的同步日志。
[0017] 可选地,所述从数据库的同步日志被上传至云服务器,以及获取所述从数据库的 同步日志的步骤进一步包括:从所述云服务器获取所述从数据库的同步日志。
[0018] 可选地,所述从主数据库获取待同步数据的步骤进一步包括:以指定的时间周期 获取所述主数据库的日志文件;以及解析所述主数据库的日志文件,得到所述待同步数据。
[0019] 可选地,所述解析所述主数据库的日志文件,得到所述待同步数据的步骤进一步 包括:若初次解析所述主数据库的日志文件,则从所述主数据库的日志文件的初始位置开 始解析,得到所述待同步数据;若非初次解析所述主数据库的日志文件,则获取上一次解析 所述主数据库的日志文件的解析位置,并从所述解析位置开始解析,得到所述待同步数据。
[0020] 可选地,所述待同步数据的格式为JSON格式。
[0021] 可选地,所述主数据库的数量为至少一个。
[0022] 可选地,所述主数据库或所述从数据库为MySQL数据库。
[0023] 依据本发明的另一个方面,提供了一种同步数据的装置,应用于具有主从结构的 数据库,包括:
[0024] 获取器,适于从主数据库获取待同步数据;
[0025] 生成器,适于根据所述待同步数据生成多个同步任务;
[0026] 分配器,适于调用至少两个并发的线程,根据预设规则分配所述多个同步任务至 所述至少两个并发的线程中;以及
[0027] 发送器,适于利用所述至少两个并发的线程,发送所述多个同步任务至从数据库, 以供所述从数据库根据所述多个同步任务实现与所述主数据库间的数据同步。
[0028] 可选地,所述同步数据的装置配置于所述主数据库与所述待同步的从数据库之 间。
[0029] 可选地,所述分配器还适于:根据所述多个同步任务中的对象标识分配所述多个 同步任务,将具备相同对象标识的同步任务分配至同一个线程中;或者根据所述多个同步 任务中的数据表标识分配所述多个同步任务,将具备相同数据表标识的同步任务分配至同 一个线程中。
[0030] 可选地,所述分配器还适于:将具备相同对象标识的同步任务按照时序或排序顺 序分配至同一个线程中。
[0031] 可选地,所述分配器还适于:将具备相同数据表标识的同步任务按照时序或排序 顺序分配至同一个线程中。
[0032] 可选地,所述分配器还适于:根据所述多个同步任务的数量,调用相应数量的并发 的线程;以及将所述多个同步任务一对一的分配至所述相应数量的并发的线程中。
[0033] 可选地,若所述发送器在利用所述至少两个并发的线程,发送所述多个同步任务 至所述从数据库的过程中,所述获取器从所述主数据库获取到新的待同步数据,则所述生 成器还适于:根据所述新的待同步数据生成新的多个同步任务。
[0034] 可选地,所述生成器根据所述新的待同步数据生成新的多个同步任务之后,所述 分配器还适于:根据所述预设规则分配所述新的多个同步任务至所述至少两个并发的线程 中;或者调用新的线程,并根据所述预设规则分配所述新的多个同步任务至所述新的线程 中,以利用所述新的线程发送所述新的多个同步任务至所述从数据库。
[0035] 可选地,在所述从数据库根据所述多个同步任务实现与所述主数据库间的数据同 步的过程中,所述从数据库记录自身同步的执行位置信息,以得到同步日志。
[0036] 可选地,所述装置还包括监控器以及执行器,其中在所述从数据库根据所述多个 同步任务实现与所述主数据库间的数据同步的过程中:
[0037] 所述监控器,适于监控所述从数据库的数据同步的状态;
[0038] 所述执行器,适于若所述监控器监控到所述从数据库的数据同步发生中断,则获 取所述从数据库的同步日志,并读取所述从数据库的同步日志中所述从数据库同步的执行 位置信息;以及根据所述从数据库同步的执行位置信息恢复数据同步。
[0039] 可选地,所述执行器还适于:从所述从数据库获取所述从数据库的同步日志。
[0040] 可选地,所述从数据库的同步日志被上传至云服务器,所述执行器还适于:从所述 云服务器获取所述从数据库的同步日志。
[0041] 可选地,所述获取器还适于:以指定的时间周期获取所述主数据库的日志文件; 以及解析所述主数据库的日志文件,得到所述待同步数据。
[0042] 可选地,所述获取器还适于:若初次解析所述主数据库的日志文件,则从所述主数 据库的日志文件的初始位置开始解析,得到所述待同步数据;若非初次解析所述主数据库 的日志文件,则获取上一次解析所述主数据库的日志文件的解析位置,并从所述解析位置 开始解析,得到所述待同步数据。
[0043] 依据本发明的又一个方面,提供了一种同步数据的数据传输组件,包括上述任一 项所述的同步数据的装置。
[0
当前第1页1 2 3 4 5 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1