数据同步的方法和系统技术方案

技术编号:16700727 阅读:51 留言:0更新日期:2017-12-02 13:04
本发明专利技术公开了一种数据同步方法和系统,其中,所述方法包括:根据同步任务的任务信息,Binlog模块从源数据库中获取Binlog信息,并写入缓存数据库;Config模块从缓存数据库中读取所述Binlog信息,解析为数据记录信息后,将数据写入目标数据库。所述系统包括:系统模块,用于存储同步任务、协调模块的工作;Binlog模块,用于根据同步任务的任务信息,从源数据库中读取Binlog信息;缓存数据库,用于暂存所述Binlog信息;和Config模块,用于从缓存数据库中读取所述Binlog信息,解析为数据记录信息后,将数据写入目标数据库。本发明专利技术可在线上随时做数据同步而不影响主库的生产环境,同步效率高、安全,中断后可以续接,并具有数据校验功能,在数据同步完成时可以校验核查,提供校验视图。

Methods and systems for data synchronization

The invention discloses a data synchronization method and system, wherein, the method comprises the following steps: according to the task information synchronization tasks, Binlog module Binlog to obtain information from the source database, and write cache database; Config module reads the Binlog information from the cache database, analysis for data record information, write data to the target database. The system includes a system module, for storing synchronization tasks and coordination module; Binlog module, according to the task information synchronization tasks, read the Binlog information from the source database; database cache, used for temporary storage of the Binlog information; and the Config module, used to read the Binlog information from the cache database, analysis for a data record information, write data to the target database. The invention can synchronize data online without affecting the production environment of the main library. The synchronization efficiency is high and safe. After interruption, it can continue to connect, and has data check function. When data synchronization is completed, it can verify verification and provide check views.

【技术实现步骤摘要】
数据同步的方法和系统
本专利技术涉及一种数据库处理
,具体地说,涉及一种数据库之间进行数据同步的方法和系统
技术介绍
根据业务的需要,大部分的公司的系统都需要进行数据的同步操作。因而,目前常用的技术是针对线上数据库,采用主从同步配置,通过对binlog(或binarylog,二进制日志)读写实现数据同步。具体地,线上MySQL数据库配置有主数据库和从数据库,主库写,从库读。在数据库操作中,普通查询以及大数据平台数据整合、分析会有大量的读操作。读操作虽然不会阻塞对同一表的读请求,但会阻塞对同一表的写请求,只有当读锁释放后,才会执行进程的写操作,这样使得从库数据的写入延迟,并且很容易使从库性能达到瓶颈,直接影响客户体验和生产。另外一种同步方法则是通过人工,由线上从库将数据导出,再导入到目标库中,具体包括:1)数据库直接导出,拷贝文件到新服务器,在新服务器上导入。2)数据文件和库表结构文件直接拷贝到新服务器,挂载到同样配置的MySQL服务下。3)还有使用“MySQLGUITools”中的MySQLMigrationTool做数据搬迁。以上方案都对线上正常生产影响较大、安全性低、不易操作并且耗费人力成本较高。具体分析如下:1)影响线上业务正常运行,使用的局限性大。有的可能需要在停止正常生产的情况下操作,这种要求对连续生产是致命的。2)时间占用长。由于效率低或为了不影响正常生产,只有到了夜间访问量小时才能操作,这样每天能操作的时间受到限制,可能连续好多天才能完成。3)人力成本高。数据操作需要DBA的授权和运维人员执行相关的配置,协调或配合过程中耗费大量的时间和人力。4)操作、配置繁琐,容易出现错误。5)不够安全、出现异常不容易被发现、中断后难以接续
技术实现思路
本专利技术要解决的技术问题在于,针对现有技术的不足,提供一种数据同步方法和系统,在线上通过快速配置数据同步任务,灵活、安全、高效地将数据同步到指定数据库中,不影响线上主库。为了解决上述的技术问题,本专利技术提供了一种数据同步的方法,其中,包括:通过用户客户端创建同步任务,并配置任务信息;根据同步任务的任务信息,从源数据库中获取Binlog信息,并写入缓存数据库;从缓存数据库中读取所述Binlog信息,将所述的Binlog信息解析为数据记录信息,并将所述数据写入目标数据库。优选地,从源数据库中读取Binlog信息具体包括:通过作为伪从库的Binlog模块向源数据库发送bump请求获取binlog信息。优选地,所述任务信息包括增量同步方式,全量同步方式或自定义同步方式;对应地,所述从源数据库中获取的Binlog信息分别对应当前时间之后的数据,当前时间之前历史数据和之后的数据,或自定义时间区间内的数据。优选地,从缓存数据库中读取所述Binlog信息时记录操作位点,当所述同步任务发生中断再启动时,从所述位点继续数据的同步。优选地,所述从所述位点继续数据的同步的步骤包括:读取所述位点信息,根据所述位点信息和任务信息,获取与所述位点信息对应的源数据库时间戳;从所述缓存数据库中实时读取时间戳之后的Binlog信息,将所述的Binlog信息解析为数据记录信息,并将所述数据写入目标数据库;以SQL读写方式将所述时间戳之前的数据同步到目标数据库。优选地,在同步任务的执行过程中,记录所述同步任务的执行状态,所述执行状态为运行、中断或完结,其中,当从源数据库中获取Binlog信息出现异常时,或从缓存数据库中读取所述Binlog信息,将所述的Binlog信息解析为数据记录信息,并将所述数据写入目标数据库出现异常时,将所述同步任务的执行状态变更为中断状态。优选地,定时获取所述同步任务的最新执行状态,当从缓存数据库中读取所述Binlog信息,将所述的Binlog信息解析为数据记录信息,并将所述数据写入目标数据库这一过程出现异常而使所述状态为中断时,中断从源数据库中获取Binlog信息;当从源数据库中获取Binlog信息出现异常而使所述状态为中断时,持续从缓存数据库中读取所述Binlog信息,将所述的Binlog信息解析为数据记录信息,并将所述数据写入目标数据库,直到处理完所有的Binlog信息,并记录当前位点。优选地,所述的任务信息包括任务的起止时间点,以所述同步任务的开始时间和结束时间作为一个时间区间,校验所述时间区间同步的数据。优选地,校验所述时间区间同步的数据具体包括:将所述时间区间划分为多个时间片断;分别获取对应时间片断的源数据库数据和对应的目标数据库数据,并进行对比;向用户返回数据对比结果。优选地,在所述对比结果中,如果目标数据库数据与对应的源数据库数据有差异,创建并执行相应的数据补录任务。根据本专利技术的另一个方面,本专利技术还提供了一种数据同步系统,包括:系统模块,用于存储通过用户客户端创建的同步任务,并协调模块间的工作;Binlog模块,用于根据同步任务的任务信息,从源数据库中读取Binlog信息;缓存数据库,用于暂存所述Binlog信息;Config模块,用于从缓存数据库中读取所述Binlog信息,将所述的Binlog信息解析为数据记录信息,并将所述数据写入目标数据库。优选地,所述缓存数据库为levelDB,包括写通道和读通道,所述levelDB通过写通道与所述Binlog模块相连接,通过所述写通道将所述Binlog信息写入所述levelDB;所述levelDB通过读通道与所述Config模块相连接,所述Config模块通过读通道从缓存数据库中读取所述Binlog信息。优选地,所述levelDB中设置有位点存储区,用于在所述Config模块通过读通道从缓存数据库中读取所述Binlog信息时记录读取的Binlog信息时的操作位置。优选地,还包括键值存储数据库,用于保存当前任务的执行状态。优选地,本专利技术所述系统还包括校验模块,其中,所述校验模块包括:库连接获取单元,用于从同步任务的任务信息中获取源数据库链接信息和目标库链接信息;数据获取单元,与所述库连接获取单元相连接,根据获得的源数据库链接信息和目标库链接信息,分别获得源数据库数据和对应的目标库数据;对比单元,与所述数据获取单元相连接,用于对比得到的源数据库数据和对应的目标库数据,得到对比结果。优选地,本专利技术所述的数据同步系统还包括Zookeeper,用于管理同步任务的执行。本专利技术通过对Binlog信息的解析从而获得相应的数据,这种方法使线上随时(7X24小时范围)做数据同步成为现实。并可以根据同步数据的情况,在线上灵活地创建同步任务,定制全量、增量同步和自定义等多种数据同步方式以满足不同类型数据的同步。由于BP以从库为源数据库,在进行数据同步时对线上生产环境的影响小到可以忽略不计。本专利技术在同步过程中出现异常,或中断后,可以续接;并通过提供数据校验功能,在数据同步完成后可以校验核查,提供了校验视图,发现有丢失数据可以一键补录。附图说明通过参照以下附图对本专利技术实施例的描述,本专利技术的上述以及其它目的、特征和优点将更为清楚,在附图中:图1为本专利技术数据同步系统的原理示意图;图2为本专利技术数据同步方法的流程图;图3为本专利技术所述同步系统中的状态存储原理示意图;图4为本专利技术数据同步系统与其他系统的连接示意图;图5为本专利技术数据同步系统中数本文档来自技高网
...
数据同步的方法和系统

【技术保护点】
一种数据同步的方法,其中,包括:通过用户客户端创建同步任务,并配置任务信息;根据同步任务的任务信息,从源数据库中获取Binlog信息,并写入缓存数据库;从缓存数据库中读取所述Binlog信息,将所述的Binlog信息解析为数据记录信息,并将所述数据写入目标数据库。

【技术特征摘要】
1.一种数据同步的方法,其中,包括:通过用户客户端创建同步任务,并配置任务信息;根据同步任务的任务信息,从源数据库中获取Binlog信息,并写入缓存数据库;从缓存数据库中读取所述Binlog信息,将所述的Binlog信息解析为数据记录信息,并将所述数据写入目标数据库。2.如权利要求1所述的数据同步的方法,其中,从源数据库中读取Binlog信息具体包括:通过作为伪从库的Binlog模块向源数据库发送bump请求获取binlog信息。3.如权利要求1所述的数据同步的方法,其中,所述任务信息包括增量同步方式,全量同步方式或自定义同步方式;对应地,所述从源数据库中获取的Binlog信息分别对应当前时间之后的数据,当前时间之前的历史数据和之后的数据,或自定义时间区间内的数据。4.如权利要求1所述的数据同步的方法,其中,从缓存数据库中读取所述Binlog信息时记录操作位点,当所述同步任务发生中断再启动时,从所述位点继续数据的同步。5.如权利要求4所述的数据同步的方法,其中,所述从所述位点继续数据的同步的步骤包括:读取所述位点信息,根据所述位点信息和任务信息,获取与所述位点信息对应的源数据库时间戳;从所述缓存数据库中实时读取时间戳之后的Binlog信息,将所述的Binlog信息解析为数据记录信息,并将所述数据写入目标数据库;以SQL读写方式将所述时间戳之前的数据同步到目标数据库。6.如权利要求1所述的数据同步的方法,其中,在同步任务的执行过程中,记录所述同步任务的执行状态,所述执行状态为运行、中断或完结,其中,当从源数据库中获取Binlog信息出现异常时,或从缓存数据库中读取所述Binlog信息,将所述的Binlog信息解析为数据记录信息,并将所述数据写入目标数据库出现异常时,将所述同步任务的执行状态变更为中断状态。7.如权利要求6所述的数据同步的方法,其中,定时获取所述同步任务的最新执行状态,当从缓存数据库中读取所述Binlog信息,将所述的Binlog信息解析为数据记录信息,并将所述数据写入目标数据库这一过程出现异常而使所述状态为中断时,中断从源数据库中获取Binlog信息;当从源数据库中获取Binlog信息出现异常而使所述状态为中断时,持续从缓存数据库中读取所述Binlog信息,将所述的Binlog信息解析为数据记录信息,并将所述数据写入目标数据库,直到处理完所有的Binlog...

【专利技术属性】
技术研发人员:周振华许文靖
申请(专利权)人:北京京东尚科信息技术有限公司北京京东世纪贸易有限公司
类型:发明
国别省市:北京,11

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

1