一种面向分库分表中间件的全局数据日志生成方法及系统技术方案

技术编号:37546137 阅读:6 留言:0更新日期:2023-05-12 16:19
本发明专利技术公开了一种面向分库分表中间件的全局数据日志生成方法及系统,涉及数据库领域,包括监听模块实时监听分库分表中间件中所有DB存储节点的数据日志文件并实时解析成Event;过滤模块对Event根据类型进行过滤;事务合并模块识别出哪些Event、构建事务;整理模块将属于同一个逻辑表的多个DDL事务进行归一成一个事务;排序模块按照事务开始时间先后顺序进行排序;数据日志生成模块将这些事务转化为具体的DB Event并写入为全局数据日志文件。本发明专利技术解决了传统分库分表中间件无法做到全局一致物理备份的重大缺陷问题。局一致物理备份的重大缺陷问题。局一致物理备份的重大缺陷问题。

【技术实现步骤摘要】
一种面向分库分表中间件的全局数据日志生成方法及系统


[0001]本专利技术涉及数据库领域,更具体地说,涉及一种面向分库分表中间件的全局数据日志生成方法及系统。

技术介绍

[0002]随着云计算大数据的时代的到来,各行业应用对数据存储的要求越来越高,数据量暴涨,单表记录数暴增,在这种背景下,传统的单体数据库难于应对这种表记录数大但要求查询时间短的需求,分库分表数据库中间件应运而生。
[0003]通过分库分表中间件,数据水平拆分,将大表拆分成多个小表,存储到不同的数据节点,应用在使用数据库时无需关心数据所在的数据节点及分表信息,就像使用单体数据库一样使用分库分表数据库中间件。
[0004]但是分库分表中间件有一个缺陷,自身并不记录库表数据,即没有一个全局数据。这样有几个弊端,第一是无法获取全局一致性位点,第二是无法实现全局一致的物理备份。而数据库物理备份是实际生产应用中必备的功能之一,会严重影响数据的可靠性及可用性。

技术实现思路

[0005]本专利技术要解决的技术问题是提供一种面向分库分表中间件的全局数据日志生成方法及系统,其中日志记录了全局一致数据,通过该日志可以获取全局一致性位点,可以实现全局一致性的物理备份。通过本专利技术,解决了传统分库分表中间件无法做到全局一致物理备份的重大缺陷。
[0006]为了达到上述目的,本专利技术采取以下技术方案:
[0007]一种面向分库分表中间件的全局数据日志生成方法,包括如下步骤:
[0008]S1:实时监听分库分表中间件中所有DB存储节点的数据日志文件,实时解析成对应库表数据变化的Event;
[0009]S2:根据Event类型进行过滤;
[0010]S3:识别出哪些Event属于同一个事务,构建事务,并将这些属于相同事务的Event归入对应的事务;
[0011]S4:针对DDL类型中修改表结构的事务,首先获取所有分库分表中间件中所有的表,如果该事务中涉及的表属于中间件中的逻辑表对应的某个物理子表,则将属于同一个逻辑表的多个DDL事务进行归一成一个事务;
[0012]S5:获取事务列表,按照事务开始时间先后顺序进行排序;
[0013]S6:按照DB的数据日志格式规范,将这些事务转化为具体的DB Event并写入为全局数据日志文件。
[0014]进一步的,S2中,过滤的规则为:过滤掉非下述类型的所有Event:格式描述、更新行、删除行、写入行、DDL、BEGIN、COMMIT、ROLLBACK。
[0015]进一步的,S2中,针对更新行、删除行、写入行这几个类型的Event,获取所有分库分表中间件中所有的表,如果Event实际操作的表不属于中间件的表,则过滤该Event。
[0016]进一步的,S3中,若遇到BEGIN类型Event,则新建一个事务并从Event中解析出事务ID,将后续event中携带同一个事务ID的Event加入到同一个事务。
[0017]进一步的,S3中,若遇到COMMIT类型的Event,通过事务ID标识该事务提交结束。
[0018]进一步的,S3中,若遇到ROLLBACK类型的Event,通过事务ID表示该事务回滚,需要去掉该事务。
[0019]一种面向分库分表中间件的全局数据日志生成系统,包括:
[0020]监听模块:用于实时监听分库分表中间件中所有DB存储节点的数据日志文件,实时解析成对应库表数据变化的Event;
[0021]过滤模块:用于对Event根据类型进行过滤;
[0022]事务合并模块:用于识别出哪些Event属于同一个事务、用于构建事务,以及用于并将这些属于相同事务的Event归入对应的事务;
[0023]整理模块,用于:针对DDL类型中修改表结构的事务,首先获取所有分库分表中间件中所有的表,如果该事务中涉及的表属于中间件中的逻辑表对应的某个物理子表,则将属于同一个逻辑表的多个DDL事务进行归一成一个事务;
[0024]排序模块:用于获取到事务列表,并按照事务开始时间先后顺序进行排序;
[0025]数据日志生成模块:用于按照DB的数据日志格式规范,将这些事务转化为具体的DB Event并写入为全局数据日志文件。
[0026]进一步的,过滤模块过滤的规则为,过滤掉类型非下述类型的所有Event:格式描述、更新行、删除行、写入行、DDL、BEGIN、COMMIT、ROLLBACK。
[0027]进一步的,过滤过程中,针对更新行、删除行、写入行这几个类型的Event,获取所有分库分表中间件中所有的表,如果Event实际操作的表不属于中间件的表,则过滤该Event。
[0028]进一步的,事务合并模块按下述方式工作:若遇到BEGIN类型Event,则新建一个事务并从Event中解析出事务ID,将后续event中携带同一个事务ID的Event加入到同一个事务;若遇到COMMIT类型的Event,通过事务ID标识该事务提交结束;若遇到ROLLBACK类型的Event,通过事务ID表示该事务回滚,需要去掉该事务。
[0029]本专利技术相对于现有技术的优点在于,本专利技术提供了面向分库分表中间件的全局数据日志生成方法及对应实现的系统,包括监听、过滤、事务合并、事务整理、事务排序、数据日志生成的完整流程方法和对应模块,解决了传统分库分表中间件无法做到全局一致物理备份的重大缺陷;本专利技术方法和系统还可以应用于多种不同的数据库引擎的分库分表中间件中。
附图说明
[0030]图1是本专利技术系统示意图。
[0031]图2是本专利技术方法示意图。
具体实施方式
[0032]下面结合附图对本专利技术的具体实施方式作描述。
[0033]如图1和图2所示,本专利技术包括:
[0034]1、监听模块:
[0035]监听模块按照DB的具体通信协议,模拟成一个辅助节点的形式,实时监听分库分表中间件中所有DB存储节点的数据日志文件,实时解析成对应库表数据变化的Event。解析后的Event传递给过滤模块。
[0036]2、过滤模块:
[0037]过滤模块根据Event类型进行过滤,过滤的规则是:首先过滤掉类型不是格式描述、更新行、删除行、写入行、DDL、BEGIN、COMMIT、ROLLBACK这几种类型的所有Event;其次针对更新行、删除行、写入行这几个类型的Event,获取所有分库分表中间件中所有的表,如果Event实际操作的表不属于中间件的表,则过滤该Event。过滤后的Event传递给事务合并模块。
[0038]3、事务合并模块:
[0039]事务合并模块识别出哪些Event属于同一个事务,并构建事务。遇到BEGIN类型Event则新建一个事务并从Event中解析出事务ID,将后续event中携带同一个事务ID的Event加入到同一个事务。遇到COMMIT类型的Event,通过事务ID标识该事务提交结束。遇到ROLLBAC本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种面向分库分表中间件的全局数据日志生成方法,其特征在于,包括如下步骤:S1:实时监听分库分表中间件中所有DB存储节点的数据日志文件,实时解析成对应库表数据变化的Event;S2:根据Event类型进行过滤;S3:识别出哪些Event属于同一个事务,构建事务,并将这些属于相同事务的Event归入对应的事务;S4:针对DDL类型中修改表结构的事务,首先获取所有分库分表中间件中所有的表,如果该事务中涉及的表属于中间件中的逻辑表对应的某个物理子表,则将属于同一个逻辑表的多个DDL事务进行归一成一个事务;S5:获取事务列表,按照事务开始时间先后顺序进行排序;S6:按照DB的数据日志格式规范,将这些事务转化为具体的DB Event并写入为全局数据日志文件。2.根据权利要求1所述方法,其特征在于,S2中,过滤的规则为:过滤掉非下述类型的所有Event:格式描述、更新行、删除行、写入行、DDL、BEGIN、COMMIT、ROLLBACK。3.根据权利要求2所述方法,其特征在于,S2中,针对更新行、删除行、写入行这几个类型的Event,获取所有分库分表中间件中所有的表,如果Event实际操作的表不属于中间件的表,则过滤该Event。4.根据权利要求1所述方法,其特征在于,S3中,若遇到BEGIN类型Event,则新建一个事务并从Event中解析出事务ID,将后续event中携带同一个事务ID的Event加入到同一个事务。5.根据权利要求4所述方法,其特征在于,S3中,若遇到COMMIT类型的Event,通过事务ID标识该事务提交结束。6.根据权利要求4所述方法,其特征在于,S3中,若遇到ROLLBACK类型的Event,通过事务ID表示该事务回滚,需要去掉该事务。7.一种面向分库...

【专利技术属性】
技术研发人员:袁艺文魏兴国苏飞
申请(专利权)人:天翼云科技有限公司
类型:发明
国别省市:

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

1