基于监听MySQL数据库binlog变化实现数据同步的方法和系统技术方案

技术编号:22218879 阅读:90 留言:0更新日期:2019-09-30 01:14
本发明专利技术公开了一种基于监听MySQL数据库binlog变化实现数据同步的方法和系统。方法流程包括:将MySQL的binlog传输到公共存储介质;监听binlog发生变化时,发现文件变化事件;根据文件变化事件,从MySQL中获取对应的数据变化内容,解析该数据变化内容为目标数据结构;将解析后的数据加载到目标存储介质中以完成数据同步。系统包括:公共存储介质、监听模块、数据获取模块和数据加载模块;公共存储介质存储MySQL的binlog;监听模块在binlog发生变化时,发布文件变化事件;数据获取模块从MySQL中获取对应的数据变化内容,将其解析为目标数据结构后;通过数据加载模块加载到目标存储介质中存储。本发明专利技术无需开发MySQL交互协议,通过简单方法即可实现数据的同步,实现成本低。

Method and System of Data Synchronization Based on Monitoring Bilog Change of MySQL Database

【技术实现步骤摘要】
基于监听MySQL数据库binlog变化实现数据同步的方法和系统
本专利技术涉及跨数据库的数据同步领域,尤其是一种基于监听MySQL数据库binlog变化实现数据同步的方法和系统。
技术介绍
MySQL是互联网行业最流行的关系型数据库,互联网IT公司绝大部分业务数据都存储在MySQL之中。出于数据备份、建设搜索引擎提升搜索效率、建设数据中台形成企业数据资产等需要,衍生出了要将MySQL中业务数据同步到备份库、搜索引擎、数据中台等需求。而业内将MySQL数据源中的数据同步到目标数据存储介质的方法都是围绕着MySQL的binlog日志机制来完成。在实际生产中根据同步场景主要有以下两种情形:1、MySQL与MySQL之间数据同步,这种同步场景下,同步方法比较简单:MySQL自带主从复制机制,一个MySQL实例作为master节点,多个MySQL实例作为master节点的slave节点。master节点会开启一个binlogdump线程负责生产binlog日志,slave节点向master发送拉取binlog日志的请求,获取到binlog日志后在本库执行完成数据同步。2、MySQL与其他数据存储介质同步,在这种同步场景下实现方式比较复杂:一般是企业开发一个应用实现MySQL主从节点间的交互协议,将企业自己开发的应用伪装成MySQL的slave节点获取binlog日志,而后解析成自定义的数据结构,再针对获取到的数据完成目标介质的load逻辑,从而完成数据同步。例如CN108769172A(公开日:2018.11.06)公开了一种数据同步方法,其包以下步骤:利用公用组件(阿里开源框架canal)监听数据库的操作日志;对监听到的操作日志增加包含时间信息和序列信息的版本号,以生成数据变更消息,生成的数据变更消息的格式包括:更改类型、记录更新版本号、更改之前的数据以及更改之后的数据等;将生成的所述数据变更消息投递到消息队列中,进行存储。其可以实现数据的及时同步,并通过版本号确保数据同步的有序性。上述第一种方式由于在同质数据库中完成同步,同步方法较为简单,但是,其具有很强的局限性,它要求数据源和目标介质都是MySQL,无法适应目前采用的异质数据同步需求。第二种方式是MySQL与异介质之间数据同步的方法,目前采用的方式需要建立MySQL的交互协议,技术门槛很高,通过交互协议完成数据同步的方法实现太复杂。虽然目前已经有许多开源框架帮忙实现MySQL的交互协议,能够完成MySQL和异介质之间的同步工作,但是依然存在很高的学习成本以及工具是否完美契合企业需求等问题,企业仍需要专业学习并对工具进行深度优化后,才能使用该工具。
技术实现思路
本专利技术的专利技术目的在于:针对上述存在的问题,提供一种基于监听MySQL数据库binlog变化实现数据同步的方法。旨在解决MySQL与异介质之间数据同步场景下的问题。以较低的代价、简易的方法开发出适合企业自身的MySQL与异介质之间的数据同步应用。本专利技术采用的技术方案如下:一种基于监听MySQL数据库binlog变化实现数据同步的方法,其包括以下步骤:将MySQL的binlog传输到公共存储介质;监听所述公共存储介质上的binlog,在binlog发生变化时,发现文件变化事件;根据文件变化事件,从MySQL中获取对应的数据变化内容,解析该数据变化内容为目标数据结构;将解析后的数据加载到目标存储介质中以完成数据同步。上述专利技术的方案主要针对MySQL与异介质间数据的同步问题,采用该方法无需开发与MySQL之间的交互协议,仅借助SQL语句和数据解析即可完成对MySQL和异介质间的数据同步问题。无需企业花费昂贵的学习成本去学习开源框架和单独的协议定制,数据同步过程简单、有序,同步过程不会出现无法预期的问题。再有,本专利技术方法无需对从MySQL上抓取到的数据进行额外的标记等处理,避免了数据异常的风险。进一步的,上述将解析后的数据加载到目标存储介质中以完成数据同步包括:配置数据加载的传输方式;通过所配置的传输方式,将解析后的数据传输到目标存储介质中。本方法提供给了用户自主选择相应传输协议的可选择性,基于配置的传输方式,可在数据的保真性、传输延时、数据包格式等方面实现定制,以提高对企业需求的匹配程度。进一步的,上述所配置的传输方式包括:基于tcp或http协议的同步传输方式,或者基于消息的异步传输方式。上述方案可在传输及时性和传输性能等方面得到针对性地配置。进一步的,上述根据文件变化事件,从MySQL中获取对应的数据变化内容的过程为:监听是否生成了文件变化事件,在获取到文件变化事件后,向MySQL发起获取数据变化内容的请求,并接收MySQL反馈的数据变化内容。采用触发机制可以使得流程长期处于低功耗状态,同时也提高响应的及时性。进一步的,上述向MySQL发起获取数据变化内容的请求为:在MySQL中执行SQL语句:SHOWBINLOGEVENTS。通过上述方案即可简单、快速地完成对MySQL中数据变化内容的有序提取。一方面,响应及时,为高效率地数据同步工作提供了支撑,另一方面,也确保了数据的有序性,确保了同步数据的一致性。本专利技术公开了一种基于监听MySQL数据库binlog变化的数据数据同步系统,其包括公共存储介质、监听模块、数据获取模块和数据加载模块,其中:公共存储介质用于存储MySQL的binlog;监听模块用于监听所述公共存储介质上的binlog,在binlog发生变化时,发布文件变化事件;数据获取模块用于基于所述文件变化事件,从MySQL中获取对应的数据变化内容,并将所获取的数据变化内容解析为目标数据结构;所述数据加载模块用于将解析的数据加载到目标存储介质中存储。进一步的,上述数据加载模块包括协议配置单元和数据传输单元,其中:协议配置单元用于配置数据传输单元的传输协议;数据传输单元用于根据所述协议配置单元所配置的传输协议,将解析后的数据传输到目标存储介质中。进一步的,上述协议配置单元所配置的传输协议包括:基于tcp或http协议的同步传输协议,或者基于消息的异步传输协议。进一步的,上述数据获取模块基于所述文件变化事件,从MySQL中获取对应的数据变化内容的过程为:数据获取模块监听监听模块是否发布了文件变化事件,若是,则向MySQL发起获取数据变化内容的请求,并接收MySQL反馈的数据变化内容。进一步的,上述数据获取模块向MySQL发起的获取数据变化内容的请求具体为:在MySQL中执行SQL语句:SHOWBINLOGEVENTS。综上所述,由于采用了上述技术方案,本专利技术的有益效果是:1、本专利技术方案主要致力于解决MySQL与异介质间数据同步的问题,其无需开发MySQL交互协议,即可实现MySQL与异介质间的数据同步。同步方法简单、系统复杂度低。对于企业而言,无需耗费昂贵的成本去学习开源框架,通过简单的工具即可解决同步机制与企业自身需求匹配的问题。2、本专利技术方案数据同步机制可进行传输定制,以针对不同的同步需求(低延时或高性能),配置灵活,通用性强。3、本专利技术方案通过简单语句即实现对MySQL数据的提取,效率高、有序性强、系统复杂度低。附图说明本专利技术将通过例子并参照附图的方式说明,其中:图1是基于监听MySQL数本文档来自技高网
...

【技术保护点】
1.一种基于监听MySQL数据库binlog变化实现数据同步的方法,其特征在于,包括以下步骤:将MySQL的binlog传输到公共存储介质;监听所述公共存储介质上的binlog,在binlog发生变化时,发现文件变化事件;根据文件变化事件,从MySQL中获取对应的数据变化内容,解析该数据变化内容为目标数据结构;将解析后的数据加载到目标存储介质中以完成数据同步。

【技术特征摘要】
1.一种基于监听MySQL数据库binlog变化实现数据同步的方法,其特征在于,包括以下步骤:将MySQL的binlog传输到公共存储介质;监听所述公共存储介质上的binlog,在binlog发生变化时,发现文件变化事件;根据文件变化事件,从MySQL中获取对应的数据变化内容,解析该数据变化内容为目标数据结构;将解析后的数据加载到目标存储介质中以完成数据同步。2.如权利要求1所述的基于监听MySQL数据库binlog变化实现数据同步的方法,其特征在于,所述将解析后的数据加载到目标存储介质中以完成数据同步包括:配置数据加载的传输方式;通过所配置的传输方式,将解析后的数据传输到目标存储介质中。3.如权利要求2所述的基于监听MySQL数据库binlog变化实现数据同步的方法,其特征在于,所配置的传输方式包括:基于tcp或http协议的同步传输方式,或者基于消息的异步传输方式。4.如权利要求2或3所述的基于监听MySQL数据库binlog变化实现数据同步的方法,其特征在于,所述根据文件变化事件,从MySQL中获取对应的数据变化内容的过程为:监听是否生成了文件变化事件,在获取到文件变化事件后,向MySQL发起获取数据变化内容的请求,并接收MySQL反馈的数据变化内容。5.如权利要求4所述的基于监听MySQL数据库binlog变化实现数据同步的方法,其特征在于,所述向MySQL发起获取数据变化内容的请求为:在MySQL中执行SQL语句:SHOWBINLOGEVENTS。6.一种基于监听MySQL数据库binlog变化的数据同步系统,其特征在于,包括公共存储介...

【专利技术属性】
技术研发人员:唐正攀陈家川
申请(专利权)人:成都路行通信息技术有限公司
类型:发明
国别省市:四川,51

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

1