首页 / 专利库 / 软件 / 在线分析处理 / 利用MySQL Binlog进行不停机数据迁移方法

利用MySQL Binlog进行不停机数据迁移方法

阅读:122发布:2020-05-17

专利汇可以提供利用MySQL Binlog进行不停机数据迁移方法专利检索,专利查询,专利分析的服务。并且本 发明 公开了利用MySQL Binlog进行不停机数据迁移方法,包括以下步骤,在待迁移源 数据库 上配置DTS,DTS会将待迁移源数据库上所有的数据都迁移至中间数据库,在将待迁移源数据库上所有的数据进行迁移的过程中产生的增量数据也会通过DTS迁移至中间数据库里。本发明中,通过DTS提供增量数据迁移功能,会将不停机期间业务产生的数据源源不断的写入中间数据库,而中间数据库又将源源不断的产生Binlog并通过Canal和消息队列被我们自研的数据转换迁移程序所消费,最终存储落地到目标数据库中去,在整个过程中做到了不停机,即业务不暂停,保证了业务的实时可用性。,下面是利用MySQL Binlog进行不停机数据迁移方法专利的具体信息内容。

1.利用MySQL Binlog进行不停机数据迁移方法,其特征在于,包括以下步骤:
SSO1:在待迁移源数据库上配置DTS,DTS会将待迁移源数据库上所有的数据都迁移至中间数据库,在将待迁移源数据库上所有的数据进行迁移的过程中产生的增量数据也会通过DTS迁移至中间数据库里;
SSO2:部署Canal中间件来监听中间数据库产生的Binlog,并存放到MQ;
SSO3:部署自研的数据转换迁移程序,自研的数据转换迁移程序一方面将订阅消息队列里的Binlog,当消息队列中有Binlog时可以将它进行消费;另一方面,在消费Binlog的时候,对于Binlog进行解析,并按照业务需要,对于数据格式和维度进行一定的转换,形成最终需要的数据结构,并最后存储至目标数据库中。
2.根据权利要求1所述的利用MySQL Binlog进行不停机数据迁移方法,其特征在于,所述中间数据库在初始的时候并没有任何数据,随着DTS将数据源源不断的迁入中间数据库,中间数据库将这些数据写入对应的数据库表中,数据库对于数据写入将产生Binlog,Binlog是一个二进制格式的文件,用于记录用户对数据库更新的SQL语句信息,例如更改数据库表和更改内容的SQL语句都会记录到Binlog里,因此随着DTS将数据源源不断的迁入,也将伴随着源源不断产生Binlog。
3.根据权利要求1所述的利用MySQL Binlog进行不停机数据迁移方法,其特征在于,所述SSO3中数据迁移程序在消费Binlog的时候,只有最终将数据完整正确地写入目标数据库时,才会给消息队列回复Acknowledgement,这样保证了数据的强一致性。
4.根据权利要求1所述的利用MySQL Binlog进行不停机数据迁移方法,其特征在于,所述MySQL是一种广泛应用于各大互联网公司和产品中的一个关系型数据库管理系统
5.根据权利要求1所述的利用MySQL Binlog进行不停机数据迁移方法,其特征在于,所述Binlog是一个二进制格式的文件,用于记录用户对数据库更新的SQL语句信息,当有数据写入到数据库时,还会同时把更新的SQL语句写入到对应所述Binlog文件里。
6.根据权利要求1所述的利用MySQL Binlog进行不停机数据迁移方法,其特征在于,所述DTS是Data Transmission Service的简称,即数据传输服务,是一种支持关系型数据库、非关系型数据库、在线分析处理等多种数据源之间数据交互的数据服务,它提供了数据迁移、实时数据订阅及数据实时同步等多种数据传输能
7.根据权利要求1所述的利用MySQL Binlog进行不停机数据迁移方法,其特征在于,所述Canal是基于Java开发的一款开源项目,且Canal基于数据库增量日志解析,提供增量数据订阅和消费功能。
8.根据权利要求5所述的利用MySQL Binlog进行不停机数据迁移方法,其特征在于,所述SQL是一种结构化查询语言,且SQL是一种特殊目的的编程语言,还是一种数据库查询和程序设计语言,所述SQL用于存取数据以及查询、更新和管理关系数据库系统。
9.根据权利要求8所述的利用MySQL Binlog进行不停机数据迁移方法,其特征在于,还包括DML,所述DML为一种数据操纵语言,其中,DML是SQL语言的一种,DML负责对数据库对象运行数据访问工作的指令集,以INSERT、UPDATE、DELETE三种指令为核心,分别代表插入、更新与删除,是开发以数据为中心的应用程序必定会使用到的指令。
10.根据权利要求1所述的利用MySQL Binlog进行不停机数据迁移方法,其特征在于,所述MQ是消息队列服务,其中,消息队列是一种应用程序对应用程序的通信方法,应用程序通过写和检索出入列队的针对应用程序的数据来通信,而无需专用连接来链接它们。

说明书全文

利用MySQL Binlog进行不停机数据迁移方法

技术领域

[0001] 本发明涉及数据迁移技术领域,尤其涉及利用MySQL Binlog进行不停机数据迁移方法。

背景技术

[0002] 在业务发展的过程中,我们经常会需要对于现有业务进行规整,数据模型进行重构和修改,如果数据模型一旦发生变化,对应的数据库表结构也会发生变化,比如字段类型、数据维度等都会发生变化。这个时候就需要进行数据迁移。传统的数据迁移建立在停服的基础上,即应用停止对外服务,关闭读写流量。但是停服会降低应用的可用时间和可用性,对于一些关键应用来说是不被允许的。因此我们需要一种不停服就可以迁移的方式。

发明内容

[0003] 本发明的目的是为了解决现有技术中存在的缺点,而提出的利用MySQL Binlog进行不停机数据迁移方法。
[0004] 为了实现上述目的,本发明采用了如下技术方案:利用MySQL Binlog进行不停机数据迁移方法,包括以下步骤:
[0005] SSO1:在待迁移源数据库上配置DTS,DTS会将待迁移源数据库上所有的数据都迁移至中间数据库,在将待迁移源数据库上所有的数据进行迁移的过程中产生的增量数据也会通过DTS迁移至中间数据库里;
[0006] SSO2:部署Canal中间件来监听中间数据库产生的Binlog,并存放到MQ;
[0007] SSO3:部署自研的数据转换迁移程序,自研的数据转换迁移程序一方面将订阅消息队列里的Binlog,当消息队列中有Binlog时可以将它进行消费;另一方面,在消费Binlog的时候,对于Binlog进行解析,并按照业务需要,对于数据格式和维度进行一定的转换,形成最终需要的数据结构,并最后存储至目标数据库中。
[0008] 作为上述技术方案的进一步描述:
[0009] 所述中间数据库在初始的时候并没有任何数据,随着DTS将数据源源不断的迁入中间数据库,中间数据库将这些数据写入对应的数据库表中,数据库对于数据写入将产生Binlog,Binlog是一个二进制格式的文件,用于记录用户对数据库更新的SQL语句信息,例如更改数据库表和更改内容的SQL语句都会记录到Binlog里,因此随着DTS将数据源源不断的迁入,也将伴随着源源不断产生Binlog。
[0010] 作为上述技术方案的进一步描述:
[0011] 所述步骤3中数据迁移程序在消费Binlog的时候,只有最终将数据完整正确地写入目标数据库时,才会给消息队列回复Acknowledgement,这样保证了数据的强一致性。
[0012] 作为上述技术方案的进一步描述:
[0013] 所述MySQL是一种广泛应用于各大互联网公司和产品中的一个关系型数据库管理系统
[0014] 作为上述技术方案的进一步描述:
[0015] 所述Binlog是一个二进制格式的文件,用于记录用户对数据库更新的SQL语句信息,当有数据写入到数据库时,还会同时把更新的SQL语句写入到对应所述binlog文件里。
[0016] 作为上述技术方案的进一步描述:
[0017] 所述DTS是Data Transmission Service的简称,即数据传输服务,是一种支持关系型数据库、非关系型数据库、在线分析处理等多种数据源之间数据交互的数据服务,它提供了数据迁移、实时数据订阅及数据实时同步等多种数据传输能
[0018] 作为上述技术方案的进一步描述:
[0019] 所述Canal是基于Java开发的一款开源项目,且Canal基于数据库增量日志解析,提供增量数据订阅和消费功能。
[0020] 作为上述技术方案的进一步描述:
[0021] 所述SQL是一种结构化查询语言,且SQL是一种特殊目的的编程语言,还是一种数据库查询和程序设计语言,所述SQL用于存取数据以及查询、更新和管理关系数据库系统。
[0022] 作为上述技术方案的进一步描述:
[0023] 所述DML为一种数据操纵语言,其中,DML是SQL语言的一种,DML负责对数据库对象运行数据访问工作的指令集,以INSERT、UPDATE、DELETE三种指令为核心,分别代表插入、更新与删除,是开发以数据为中心的应用程序必定会使用到的指令。
[0024] 作为上述技术方案的进一步描述:
[0025] 所述MQ是消息队列服务,其中,消息队列是一种应用程序对应用程序的通信方法,应用程序通过写和检索出入列队的针对应用程序的数据来通信,而无需专用连接来链接它们。
[0026] 有益效果
[0027] 本发明提供了利用MySQL Binlog进行不停机数据迁移方法。具备以下有益效果:
[0028] (1):该利用MySQL Binlog进行不停机数据迁移方法通过DTS提供增量数据迁移功能,会将不停机期间业务产生的数据源源不断的写入中间数据库,而中间数据库又将源源不断的产生Binlog并通过Canal和消息队列被我们自研的数据转换迁移程序所消费,最终存储落地到目标数据库中去,在整个过程中做到了不停机,即业务不暂停,保证了业务的实时可用性。
[0029] (2):该利用MySQL Binlog进行不停机数据迁移方法不需要在发版当天来做数据迁移,可以选任意一天来做数据迁移,可以选择发版前就开始做数据迁移,因为中间库、目标库都不会影响业务的正常运行,一旦在中间库、目标库发现了异常情况,任何时候都可以回滚,甚至可以删除中间库和目标库进行重新迁移,完全不会影响业务正常运行,并且有极大的空间去完成数据验证对比,保证整个数据迁移结果的正确性。附图说明
[0030] 图1为本发明提出的利用MySQL Binlog进行不停机数据迁移方法的整体示意图;
[0031] 图2为本发明的流程示意图;
[0032] 图3为本发明的时序图。

具体实施方式

[0033] 下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。
[0034] 参照图1-3,利用MySQL Binlog进行不停机数据迁移方法,包括以下步骤:
[0035] SSO1:在待迁移源数据库上配置DTS,DTS会将待迁移源数据库上所有的数据都迁移至中间数据库,在将待迁移源数据库上所有的数据进行迁移的过程中产生的增量数据也会通过DTS迁移至中间数据库里;
[0036] SSO2:部署Canal中间件来监听中间数据库产生的Binlog,并存放到MQ;
[0037] SSO3:部署自研的数据转换迁移程序,自研的数据转换迁移程序一方面将订阅消息队列里的Binlog,当消息队列中有Binlog时可以将它进行消费;另一方面,在消费Binlog的时候,对于Binlog进行解析,并按照业务需要,对于数据格式和维度进行一定的转换,形成最终需要的数据结构,并最后存储至目标数据库中。
[0038] Canal通过模拟mysql slave的交互协议,伪装自己为mysql slave,向mysql master发送dump协议,mysql master收到dump请求,开始推送binlog给canal,在这里,中间数据库就是master,Canal伪装成slave接收来自master的Binlog,Canal收到Binlog后,将Binlog发送到消息队列中,如Rocket MQ中,之所以要将Binlog发送到消息队列中是为了通过消息队列进行异步解耦和转储,消费的快慢并不影响Canal程序的性能。
[0039] 中间数据库在初始的时候并没有任何数据,随着DTS将数据源源不断的迁入中间数据库,中间数据库将这些数据写入对应的数据库表中,数据库对于数据写入将产生Binlog,Binlog是一个二进制格式的文件,用于记录用户对数据库更新的SQL语句信息,例如更改数据库表和更改内容的SQL语句都会记录到Binlog里。因此随着DTS将数据源源不断的迁入,也将伴随着源源不断产生Binlog。
[0040] 步骤3中数据迁移程序在消费Binlog的时候,只有最终将数据完整正确地写入目标数据库时,才会给消息队列回复Acknowledgement,这样保证了数据的强一致性。
[0041] MySQL是一种广泛应用于各大互联网公司和产品中的一个关系型数据库管理系统,。
[0042] Binlog是一个二进制格式的文件,用于记录用户对数据库更新的SQL语句信息,当有数据写入到数据库时,还会同时把更新的SQL语句写入到对binlog文件里。
[0043] DTS是Data Transmission Service的简称,即数据传输服务,是一种支持关系型数据库、非关系型数据库、在线分析处理等多种数据源之间数据交互的数据服务,它提供了数据迁移、实时数据订阅及数据实时同步等多种数据传输能力。
[0044] Canal是基于Java开发的一款开源项目,且Canal基于数据库增量日志解析,提供增量数据订阅和消费功能。
[0045] SQL是一种结构化查询语言,且SQL是一种特殊目的的编程语言,还是一种数据库查询和程序设计语言,SQL用于存取数据以及查询、更新和管理关系数据库系统。
[0046] DML为一种数据操纵语言,其中,DML是SQL语言的一种,DML负责对数据库对象运行数据访问工作的指令集,以INSERT、UPDATE、DELETE三种指令为核心,分别代表插入、更新与删除,是开发以数据为中心的应用程序必定会使用到的指令。
[0047] MQ是消息队列服务,其中,消息队列是一种应用程序对应用程序的通信方法,应用程序通过写和检索出入列队的针对应用程序的数据来通信,而无需专用连接来链接它们。
[0048] 技术方案:整个数据迁移过程中,会涉及三个库,源库、中间库和目标库,源库,将要迁移的数据存放在待迁移源库里;中间库是待迁移源数据库的同步备份,目的是利用DTS的数据迁移能力将待迁移源数据库的数据同步至中间数据库,然后再在中间数据库上做个性化数据转换并存储到待迁移目标数据库;目标数据库即迁移完成后的数据存放在待迁移目标数据库。
[0049] 在整个数据迁移过程中,利用DTS将存量数据从源库全部迁移至中间库,在迁移至中间库的过程中,将产生这些数据的Binlog,即产生这些数据的Insert DML SQL;而这些DML SQL将会被Canal组件监听,并通过MQ方式进行传播;然后实现的数据迁移将会去消费这些DML SQL,并根据我们业务特点定制个性化的转换逻辑,实现字段类型和数据维度的各种变化,并最终存储到目标数据库中。
[0050] 与此同时,增量数据也会被DTS按照同样的方式进行迁移,并存储到中间库中,同样,也会消费这些增量数据的DML SQL,并经过转换后存储到目标库中。
[0051] 在本说明书的描述中,参考术语“一个实施例”、“示例”、“具体示例”等的描述意指结合该实施例或示例描述的具体特征、结构、材料或者特点包含于本发明的至少一个实施例或示例中。在本说明书中,对上述术语的示意性表述不一定指的是相同的实施例或示例。而且,描述的具体特征、结构、材料或者特点可以在任何的一个或多个实施例或示例中以合适的方式结合。
[0052] 以上所述,仅为本发明较佳的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,根据本发明的技术方案及其发明构思加以等同替换或改变,都应涵盖在本发明的保护范围之内。
高效检索全球专利

专利汇是专利免费检索,专利查询,专利分析-国家发明专利查询检索分析平台,是提供专利分析,专利查询,专利检索等数据服务功能的知识产权数据服务商。

我们的产品包含105个国家的1.26亿组数据,免费查、免费专利分析。

申请试用

分析报告

专利汇分析报告产品可以对行业情报数据进行梳理分析,涉及维度包括行业专利基本状况分析、地域分析、技术分析、发明人分析、申请人分析、专利权人分析、失效分析、核心专利分析、法律分析、研发重点分析、企业专利处境分析、技术处境分析、专利寿命分析、企业定位分析、引证分析等超过60个分析角度,系统通过AI智能系统对图表进行解读,只需1分钟,一键生成行业专利分析报告。

申请试用

QQ群二维码
意见反馈