数据库日志的处理方法、装置以及电子设备、存储介质与流程

文档序号:24640296发布日期:2021-04-09 20:52阅读:58来源:国知局
数据库日志的处理方法、装置以及电子设备、存储介质与流程

本发明涉及计算机网络技术领域,尤其涉及一种数据库日志的处理方法、装置以及电子设备、存储介质。



背景技术:

相关技术中,不同业务数据可能存储于不同类型的数据库,比如mysql、tidb、polardb、mongodb等,而对于数据变化的监听,则提供了针对不同数据库的binlog解析工具,能解决单类型数据库的日志监听。例如,mysql数据库的数据监听的方法如图1所示,具体为:主节点将日志改变记录到二进制日志中;从节点通过i/o线程读取主节点的二进制日志事件并将其写入到它的中继日志;从节点通过sql线程读取中继日志中的事件,将改变在它自己的数据中重现。然而,由于一种数据库的监听工具只能监听与其对应的数据库,当多种数据库同时存在时,无法通过一个工具实现统一监听。



技术实现要素:

本发明旨在至少在一定程度上解决相关技术中的技术问题之一。为此,本发明的第一个目的在于提出一种数据库日志的处理方法,该处理方法可以实现将不同的数据库中的日志事件同步到统一消息队列,从而实现当多种数据库同时存在时对其进行统一的监听。

本发明的第二个目的在于提出一种数据库日志的处理装置。

本发明的第三个目的在于提出一种电子设备。

本发明的第四个目的在于提出一种非暂态计算机可读存储介质。

为达到上述目的,本发明第一方面实施例提出了一种数据库日志的处理方法,所述方法包括以下步骤:获取各数据库中每个数据库的binlog日志;根据预设的转换协议对每个所述binlog日志中的日志事件进行序列化转换,得到对应于每个所述binlog日志的目标格式数据;将每个所述binlog日志的目标格式数据写入预设的数据模型,以便通过所述数据模型实现对各数据库的统一监听。

本发明实施例的数据库日志的处理方法,通过获取各数据库中每个数据库的binlog日志,进而根据预设的转换协议对每个binlog日志中的日志事件进行序列化转换,得到对应于每个binlog日志的目标格式数据,从而将每个binlog日志的目标格式数据写入预设的数据模型,以便通过数据模型实现对各数据库的统一监听。由此,可以实现将不同的数据库中的日志事件同步到统一消息队列,从而实现当多种数据库同时存在时对其进行统一的监听。

另外,本发明上述的数据库日志的处理方法还可以具有如下附加的技术特征:

根据本发明的一个实施例,所述数据库日志的处理方法还包括:同步各数据库中每个数据库的binlog日志。

根据本发明的一个实施例,所述数据库日志的处理方法还包括:根据protobuf格式转换协议、thrift格式转换协议或kyro格式转换协议中的至少一种,将每个所述binlog日志中的日志事件进行序列化转换。

根据本发明的一个实施例,所述数据模型包括多个数据对象,其中,将每个所述binlog日志的目标格式数据写入预设的数据模型,包括:获取每个所述binlog日志的目标格式数据与所述数据模型的各数据对象之间的对应关系;根据所述对应关系,将每个所述binlog日志的目标格式数据写入所述数据模型中对应的数据对象。

根据本发明的一个实施例,所述数据库日志的处理方法还包括:所述数据模型为根据各数据库的概念抽象得到,所述概念至少包括事务处理、新增、删除、修改和查询操作。

根据本发明的一个实施例,所述数据库日志的处理方法还包括:将所述数据模型分发给业务处理方。

根据本发明的一个实施例,所述数据库日志的处理方法还包括:将每个所述binlog日志的目标格式数据写入消息队列。

根据本发明的一个实施例,所述将每个所述binlog日志的目标格式数据写入预设的数据模型包括:从所述消息队列中异步获取每个所述binlog日志的目标格式数据对应的消息;将从所述消息队列中获取的消息写入所述数据模型。

为达到上述目的,本发明第二方面实施例提出了一种数据库日志的处理装置,所述数据库日志的处理装置包括:获取模块,用于获取各数据库中每个数据库的binlog日志;序列化转换模块,用于根据预设的转换协议对每个所述binlog日志中的日志事件进行序列化转换,得到对应于每个所述binlog日志的目标格式数据;对象生成模块,用于将每个所述binlog日志的目标格式数据写入预设的数据模型,以便通过所述数据模型实现对各数据库的统一监听。

本发明实施例的数据库日志的处理装置,通过获取模块获取各数据库中每个数据库的binlog日志,inert通过序列化转换模块根据预设的转换协议对每个binlog日志中的日志事件进行序列化转换,得到对应于每个binlog日志的目标格式数据,从而通过对象生成模块将每个binlog日志的目标格式数据写入预设的数据模型,以便通过数据模型实现对各数据库的统一监听。由此,可以实现将不同的数据库中的日志事件同步到统一消息队列,从而实现当多种数据库同时存在时对其进行统一的监听。

为达到上述目的,本发明第三方面实施例提出了一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现上述的数据库日志的处理方法。

本发明实施例的电子设备,通过实现上述的数据库日志的处理方法,可以实现将不同的数据库中的日志事件同步到统一消息队列,从而实现当多种数据库同时存在时对其进行统一的监听。

为达到上述目的,本发明第四方面实施例提出了一种非暂态计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现上述的数据库日志的处理方法。

本发明实施例的非暂态计算机可读存储介质,在其上存储的计算机程序被处理器执行时,可以实现将不同的数据库中的日志事件同步到统一消息队列,从而实现当多种数据库同时存在时对其进行统一的监听。

本发明附加的方面和优点将在下面的描述中部分给出,部分将从下面的描述中变得明显,或通过本发明的实践了解到。

附图说明

图1是相关技术中对数据库进行监听的流程的示意图;

图2是本发明一个实施例的数据库日志的处理方法的流程图;

图3是本发明一个实施例的对数据库进行监听的流程的示意图;

图4是本发明实施例的数据库日志的处理装置的结构框图。

具体实施方式

下面详细描述本发明的实施例,所述实施例的示例在附图中示出,其中自始至终相同或类似的标号表示相同或类似的元件或具有相同或类似功能的元件。下面通过参考附图描述的实施例是示例性的,旨在用于解释本发明,而不能理解为对本发明的限制。

由于不同企业或企业内部不同信息化部门数据库的binlog协议一般不同,各种解析工具也没有统一数据规范,而且对分库分表、流量分发也没有统一的配置规则,另外对消息队列消费端的异常场景没有很好的消费封装、异常处理、堆积监控、告警,这都导致接入和维护的成本偏高。为此,发明人经过研究,提出了一种数据库日志的处理方法、装置以及电子设备、存储介质。

下面参考附图描述本发明实施例的数据库日志的处理方法、装置以及电子设备、存储介质。

图2是本发明一个实施例的数据库日志的处理方法的流程图。

如图2所示,数据库日志的处理方法包括以下步骤:

s21,获取各数据库中每个数据库的binlog日志。

具体地,可以设置一个binlog同步层,通过该同步层同步各数据库中每个数据库的binlog日志。其中,该binlog日志可以用于在数据库进行数据更新时,记录数据更新的具体内容并将其以“事件”的形式保存,上述数据更新的具体内容可以包括数据库更新的数据或已经潜在更新的数据(例如,没有匹配任何行的一个delete)。

作为一个示例,如图3所示,假设有两个binlog协议不相同的数据库,例如mysql和tidb,以及与这两个数据库对应的binlog日志:mysqlbinlog、tidbbinlog。如若数据库mysql更新了数据或已经潜在更新了数据,则binlog同步层通过mysqlbinlog对其进行记录;如若数据库tidb更新了数据或已经潜在更新了数据,则binlog同步层通过tidbbinlog对其进行记录;如若数据库mysql与tidb均更新了数据或已经潜在更新了数据,则binlog同步层通过mysqlbinlog与tidbbinlog进行记录。

需要说明的是,虽然对于不同的数据库,与其对应的binlog日志的日志事件的数据格式不相同;但却存在相似的概念,如事务、增删改查等。因此,理论上对于不同数据格式的日志事件,可以抽象出一套通用的数据模型。因此,只需将不同数据格式的日志事件转换为可以套用该数据模型的格式,即可使不同数据库中的日志事件同步到统一消息队列,从而使不同数据格式的日志事件可以通过一套分区分发规则被分发给业务处理方。具体可如下所示。

s22,根据预设的转换协议对每个binlog日志中的日志事件进行序列化转换,得到对应于每个binlog日志的目标格式数据。

具体地,读取binlog日志的日志事件,并对其进行序列化转换,得到对应于每个binlog日志的目标格式数据,进而通过统一的分区分发规则进行分发。即,将与不同的数据库对应的格式不同的binlog日志中的日志事件经过统一的数据格式转换为相同的数据格式,从而可以将不同数据格式的日志事件同步到统一消息队列,实现通过一个统一的分区分发规则对格式不同的日志事件的分发。其中,上述binlog日志的目标格式数据即为该binlog日志的日志事件经过上述统一的数据格式转换后所得到的数据。而且通过设置多分区进行分区分发,提升了消息队列的整体吞吐量。

其中,可以根据protobuf格式转换协议、thrift格式转换协议或kyro格式转换协议中的至少一种,将每个binlog日志中的日志事件进行序列化转换。上述分区分发规则主要用于实现:支持topic增加自定义前缀、支持分库分表、支持分片字段设置。该分区分发规则中的配置方法可如下表1所示:

表1

作为一个示例,如图3所示,可以通过binlogdump将binlog同步层同步得到的日志事件进行转存,并缓存到ringbuffer(环形缓冲区),进而protobuf数据转换模块可以从ringbuffer获取缓存的日志事件并将日志事件进行序列化转换,从而数据分片处理模块可以将经过序列化转换处理的日志事件进行数据分片处理,即通过分片分发将日志事件存储到消息队列(如ksfka、rocketmq、activemq等)中。

具体地,可以根据表2所示的tidb和mysql的binlog文件的对应关系将tidb日志事件与mysql日志事件转换为一致的protobuf数据格式,进而将被转换为一致的protobuf数据格式的日志事件存储到消息队列中。

表2

需要说明的是,表2中的基准binlog对象结构即为mysql的binlog对象结构。

其中,上述protobuf数据格式可以如下所示:

需要说明的是,在通过binlogdump将binlog同步层同步得到的日志事件进行转存的同时,还可记录与binlog日志对应的binlogfile和offset。

s23,将每个binlog日志的目标格式数据写入预设的数据模型,以便通过数据模型实现对各数据库的统一监听。

具体地,在将每个binlog日志的目标格式数据写入消息队列之后,从消息队列中异步获取每个binlog日志的目标格式数据对应的消息;将从消息队列中获取的消息写入数据模型,从而实现将每个binlog日志的目标格式数据写入预设的数据模型。该数据模型可以如下所示:

其中,上述将每个binlog日志的目标格式数据写入预设的数据模型,包括:获取每个binlog日志的目标格式数据与数据模型的各数据对象之间的对应关系;根据对应关系,将每个binlog日志的目标格式数据写入数据模型中对应的数据对象。该数据模型为上述根据各数据库的概念抽象得到,即,该概念至少包括事务处理、新增、删除、修改和查询操作。

进一步地,在将每个binlog日志的目标格式数据写入预设的数据模型得到目标数据之后,将业务处理方所需要的目标数据发送给业务处理方。

作为一个示例,如图3所示,databusclient(一种基于java开发的kafka消费包)获取到protobuf数据格式的日志事件并将其写入预设的数据模型从而得到目标数据,进而将目标数据发送给业务处理方。若发送成功,则结束处理;若发送失败,则重复步骤s23。

综上,本发明实施例的数据库日志的处理方法,可以实现将不同的数据库中的日志事件同步到统一消息队列,从而实现当多种数据库同时存在时对其进行统一的监听。

图4是本发明实施例的数据库日志的处理装置的结构框图。

如图4所示,该数据库日志的处理装置100包括获取模块101、序列转换模块102、对象生成模块103。

具体地,获取模块101,用于获取各数据库中每个数据库的binlog日志;序列化转换模块102,用于根据预设的转换协议对每个binlog日志中的日志事件进行序列化转换,得到对应于每个binlog日志的目标格式数据;对象生成模块103,用于将每个binlog日志的目标格式数据写入预设的数据模型,以便通过数据模型实现对各数据库的统一监听。

该数据库日志的处理装置,可以实现将不同的数据库中的日志事件同步到统一消息队列,从而实现当多种数据库同时存在时对其进行统一的监听。

在本发明一个实施例中,获取模块101具体用于:同步各数据库中每个数据库的binlog日志。

在本发明一个实施例中,序列转换模块102还可用于:根据protobuf格式转换协议、thrift格式转换协议或kyro格式转换协议中的至少一种,将每个binlog日志中的日志事件进行序列化转换。

在本发明一个实施例中,对象生成模块103具体用于:获取每个binlog日志的目标格式数据与数据模型的各数据对象之间的对应关系;根据对应关系,将每个binlog日志的目标格式数据写入数据模型中对应的数据对象。

其中,上述数据模型为根据各数据库的概念抽象得到,上述概念至少包括事务处理、新增、删除、修改和查询操作。

在本发明一个实施例中,对象生成模块103还可用于:将数据模型分发给业务处理方。

在本发明一个实施例中,序列转换模块102还可用于:将每个binlog日志的目标格式数据写入消息队列。

在本发明一个实施例中,对象生成模块103还可用于:从消息队列中异步获取每个binlog日志的目标格式数据对应的消息;将从消息队列中获取的消息写入数据模型。

需要说明的是,本发明实施例的数据库日志的处理装置的其他具体实施方式,可以参见上述实施例的数据库日志的处理方法。

进一步地,本发明提出一种电子设备。

在本发明实施例中,电子设备包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,上述处理器执行计算机程序时实现上述的数据库日志的处理方法。

本发明实施例的电子设备,通过实现上述的数据库日志的处理方法,可以实现将不同的数据库中的日志事件同步到统一消息队列,从而实现当多种数据库同时存在时对其进行统一的监听。

进一步地,本发明提出一种非暂态计算机可读存储介质。

在本发明实施例中,非暂态计算机可读存储介质上存储有计算机程序,该计算机程序被处理器执行时实现上述的数据库日志的处理方法。

本发明实施例的非暂态计算机可读存储介质,在其上存储的计算机程序被处理器执行时,可以实现将不同的数据库中的日志事件同步到统一消息队列,从而实现当多种数据库同时存在时对其进行统一的监听。

需要说明的是,在流程图中表示或在此以其他方式描述的逻辑和/或步骤,例如,可以被认为是用于实现逻辑功能的可执行指令的定序列表,可以具体实现在任何计算机可读介质中,以供指令执行系统、装置或设备(如基于计算机的系统、包括处理器的系统或其他可以从指令执行系统、装置或设备取指令并执行指令的系统)使用,或结合这些指令执行系统、装置或设备而使用。就本说明书而言,"计算机可读介质"可以是任何可以包含、存储、通信、传播或传输程序以供指令执行系统、装置或设备或结合这些指令执行系统、装置或设备而使用的装置。计算机可读介质的更具体的示例(非穷尽性列表)包括以下:具有一个或多个布线的电连接部(电子装置),便携式计算机盘盒(磁装置),随机存取存储器(ram),只读存储器(rom),可擦除可编辑只读存储器(eprom或闪速存储器),光纤装置,以及便携式光盘只读存储器(cdrom)。另外,计算机可读介质甚至可以是可在其上打印所述程序的纸或其他合适的介质,因为可以例如通过对纸或其他介质进行光学扫描,接着进行编辑、解译或必要时以其他合适方式进行处理来以电子方式获得所述程序,然后将其存储在计算机存储器中。

应当理解,本发明的各部分可以用硬件、软件、固件或它们的组合来实现。在上述实施方式中,多个步骤或方法可以用存储在存储器中且由合适的指令执行系统执行的软件或固件来实现。例如,如果用硬件来实现,和在另一实施方式中一样,可用本领域公知的下列技术中的任一项或他们的组合来实现:具有用于对数据信号实现逻辑功能的逻辑门电路的离散逻辑电路,具有合适的组合逻辑门电路的专用集成电路,可编程门阵列(pga),现场可编程门阵列(fpga)等。

在本说明书的描述中,参考术语“一个实施例”、“一些实施例”、“示例”、“具体示例”、或“一些示例”等的描述意指结合该实施例或示例描述的具体特征、结构、材料或者特点包含于本发明的至少一个实施例或示例中。在本说明书中,对上述术语的示意性表述不一定指的是相同的实施例或示例。而且,描述的具体特征、结构、材料或者特点可以在任何的一个或多个实施例或示例中以合适的方式结合。

在本发明的描述中,需要理解的是,术语“中心”、“纵向”、“横向”、“长度”、“宽度”、“厚度”、“上”、“下”、“前”、“后”、“左”、“右”、“竖直”、“水平”、“顶”、“底”“内”、“外”、“顺时针”、“逆时针”、“轴向”、“径向”、“周向”等指示的方位或位置关系为基于附图所示的方位或位置关系,仅是为了便于描述本发明和简化描述,而不是指示或暗示所指的装置或元件必须具有特定的方位、以特定的方位构造和操作,因此不能理解为对本发明的限制。

此外,术语“第一”、“第二”仅用于描述目的,而不能理解为指示或暗示相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”的特征可以明示或者隐含地包括至少一个该特征。在本发明的描述中,“多个”的含义是至少两个,例如两个,三个等,除非另有明确具体的限定。

在本发明中,除非另有明确的规定和限定,术语“安装”、“相连”、“连接”、“固定”等术语应做广义理解,例如,可以是固定连接,也可以是可拆卸连接,或成一体;可以是机械连接,也可以是电连接;可以是直接相连,也可以通过中间媒介间接相连,可以是两个元件内部的连通或两个元件的相互作用关系,除非另有明确的限定。对于本领域的普通技术人员而言,可以根据具体情况理解上述术语在本发明中的具体含义。

在本发明中,除非另有明确的规定和限定,第一特征在第二特征“上”或“下”可以是第一和第二特征直接接触,或第一和第二特征通过中间媒介间接接触。而且,第一特征在第二特征“之上”、“上方”和“上面”可是第一特征在第二特征正上方或斜上方,或仅仅表示第一特征水平高度高于第二特征。第一特征在第二特征“之下”、“下方”和“下面”可以是第一特征在第二特征正下方或斜下方,或仅仅表示第一特征水平高度小于第二特征。

尽管上面已经示出和描述了本发明的实施例,可以理解的是,上述实施例是示例性的,不能理解为对本发明的限制,本领域的普通技术人员在本发明的范围内可以对上述实施例进行变化、修改、替换和变型。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1