[发明专利]一种数据库增量日志解析方法及系统在审
申请号: | 201410239631.9 | 申请日: | 2014-05-30 |
公开(公告)号: | CN105205053A | 公开(公告)日: | 2015-12-30 |
发明(设计)人: | 刘杰 | 申请(专利权)人: | 阿里巴巴集团控股有限公司 |
主分类号: | G06F17/30 | 分类号: | G06F17/30 |
代理公司: | 上海百一领御专利代理事务所(普通合伙) 31243 | 代理人: | 陈贞健 |
地址: | 英属开曼群岛大开*** | 国省代码: | 开曼群岛;KY |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 数据库 增量 日志 解析 方法 系统 | ||
技术领域
本发明涉及数据处理技术领域,尤其涉及一种数据库增量日志解析方法及系统。
背景技术
Binlog是数据库增量日志,数据库增量日志由各种数据库表操作事件组成,一个数据库增量日志的位点(例如mysql-bin.000002,15846289)对应一个数据库表操作事件。数据库表操作事件包括插入操作、更新操作和删除操作三种类型。通过数据库增量日志可以对数据库进行数据恢复以及数据复制。
在数据库表中,列是具有相同数据类型的数据的集合,数据库主要的增量数据存储在列事件类型中,这些数据需要通过表映射事件(例如Table_map_event)里的提供的信息:列类型、列长度等才能被正确的解析出来。但是列的名称、列是否为主键、列的字符集编码以及列是否为唯一索引等信息并不存储在数据库增量日志里。在发送给应用计算或者同步到其他数据库时,这些信息至关重要,是数据处理时必须具备的。
元数据(Metadata)是关于数据的数据,例如数据库名或表名,列的数据类型,或访问权限等等。在数据库中,元数据可以帮助数据库管理员和数据库的开发人员非常方便地找到他们所关心的数据。同时数据库有DDL(DataDefinitionLanguage,数据定义语言)操作,可以用来修改元数据,这些DDL操作会被记录到数据库增量日志里。对于解析数据库增量日志的程序而言,需要正确理解DDL操作对元数据的影响。
一般情况下,元数据可以从数据库里通过sql(StructuredQuevyLanguage,结构化查询语言)线程查询获得,比如MySQL(一种开放源码的小型关联式数据库管理系统)通过desc_table的语句,能够得到列的名称、列是否为主键以及列是否为唯一索引等信息。然而现有通过从数据库里查询元数据的方式存在一些缺陷,在DDL操作非常密集的情况下,由于回查(到源数据库执行sql线程来获得表的元数据)需要时间。在数据库增量日志里发现DDL操作和开始进行回查的期间,如果快速发生第二次DDL操作的情况下,将会出现以下问题:
一、受第二个DDL操作的影响,第一个DDL操作所对应的元数据出现错误。
二、当这两个DDL操作都修改了同一个表的元数据,那么第一个DDL操作产生的元数据在数据库上被覆盖,这个版本的元数据就被丢失了。更为极端的情况下,如果该元数据对应产生了DML((DataManipulationLanguage,数据操纵语言命令)操作,这该DML操作对应的数据在解析时会使用错误的元数据。由此扩展到密集发生多次DDL操作时,同样会出现上述问题。
综上可知,现有技术在实际使用上显然存在不便与缺陷,所以有必要加以改进。
发明内容
针对上述的缺陷,本发明的目的在于提供一种数据库增量日志解析方法及系统,其能够解决在执行密集DDL操作的情况下,反查mysqld(mysql在运行时的实例)时元数据丢失的问题,能够在数据库增量日志的解析过程中提供和数据库增量日志准确匹配的元数据。
为了实现上述目的,本发明提供一种数据库增量日志解析方法,所述方法包括如下步骤:
从源数据库中获取元数据以及数据库增量日志,并将所述元数据复制到数据库分析模块中;
查询该数据库增量日志中的DDL操作,并将DDL操作串行输入到所述数据库分析模块中执行,所述数据库分析模块根据从所述源数据库中获取的元数据以及执行所述DDL操作对元数据产生的修改生成新元数据;
每执行完一个DDL操作则从所述数据库分析模块中查询与该DDL操作对应的新元数据,根据所述新元数据解析所述数据库增量日志。
本发明相应提供一种数据库增量日志解析系统,所述系统包括:
数据获取模块,用于从源数据库中获取元数据以及数据库增量日志,并将所述元数据复制到数据库分析模块中;
数据库分析模块,用于查询该数据库增量日志中的DDL操作进行串行执行,并根据从所述源数据库中获取的元数据以及执行所述DDL操作对元数据产生的修改生成新元数据;
元数据查询模块,用于每执行完一个DDL操作时从所述数据库分析模块中查询与该DDL操作对应的新元数据;
增量日志解析模块,用于根据所述新元数据解析所述数据库增量日志。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于阿里巴巴集团控股有限公司,未经阿里巴巴集团控股有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201410239631.9/2.html,转载请声明来源钻瓜专利网。