CN114610688A - 日志聚合方法、装置、计算机设备和存储介质 - Google Patents
日志聚合方法、装置、计算机设备和存储介质 Download PDFInfo
- Publication number
- CN114610688A CN114610688A CN202210242675.1A CN202210242675A CN114610688A CN 114610688 A CN114610688 A CN 114610688A CN 202210242675 A CN202210242675 A CN 202210242675A CN 114610688 A CN114610688 A CN 114610688A
- Authority
- CN
- China
- Prior art keywords
- event
- log
- line format
- cache region
- preset
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/17—Details of further file system functions
- G06F16/172—Caching, prefetching or hoarding of files
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/11—File system administration, e.g. details of archiving or snapshots
- G06F16/116—Details of conversion of file system types or formats
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/13—File access structures, e.g. distributed indices
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/14—Details of searching files based on file metadata
- G06F16/148—File search processing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/18—File system types
- G06F16/1805—Append-only file systems, e.g. using logs or journals to store data
- G06F16/1815—Journaling file systems
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Library & Information Science (AREA)
- Debugging And Monitoring (AREA)
Abstract
本申请涉及一种日志聚合方法、装置、计算机设备、存储介质和计算机程序产品。本申请实施例可应用于地图领域。本申请实施例也可应用于云技术、人工智能、智慧交通、辅助驾驶等各种场景。所述方法通过先获取二进制日志;提取二进制日志中的行格式事件;将行格式事件与预设事件缓存区中的已存事件进行事件元信息对比;当对比结果为事件元信息一致时,将行格式事件置入预设事件缓存区,当对比结果为事件元信息不一致时,将预设事件缓存区内的已存事件进行聚合处理。本申请的方法在得到二进制日志之后,通过元信息对比将二进制日志元信息一致的行格式事件聚合,从而可以减少后续处理过程中的全表扫描次数,从而提升主从机之间的二进制日志通信效率。
Description
技术领域
本申请涉及计算机技术领域,特别是涉及一种日志聚合方法、装置、计算机设备和存储介质。
背景技术
随着计算机技术与数据库技术的发展,出现了云技术(Cloud technology),云技术是指在广域网或局域网内将硬件、软件、网络等系列资源统一起来,实现数据的计算、储存、处理和共享的一种托管技术。它是基于云计算商业模式应用的网络技术、信息技术、整合技术、管理平台技术、应用技术等的总称,可以组成资源池,按需所用,灵活便利。云计算技术将变成重要支撑。
目前,在云上环境中,主机的二进制日志Dump(转储)线程和从机的IO(Input/Output,输入输出)线程之间的二进制日志通信是非常快的,时延非常低。因此线上主-从延迟主要是由从机的SQL(Structured Query Language,结构化查询语言)线程应用二进制日志慢导致。而其中无主键表的update/delete是导致主-从延迟的主要原因。这主要是因为主机执行一条update/delete语句一般只用走一次全表扫描,但会产生多条基于行格式的日志。在从机,每应用一条行格式的日志,都会去走一遍全表扫描(table scan)。而当出现大事务,表的数据量非常多时,一次全表扫描的代价是非常大的。而如果有非常多的update或者delete日志时,就需要进行多次的全表扫描操作,从而影响主从机之间的二进制日志通信效率。
发明内容
基于此,有必要针对上述技术问题,提供一种能够用于提升主从机之间的二进制日志通信效率的日志聚合方法、装置、计算机设备、计算机可读存储介质和计算机程序产品。
第一方面,本申请提供了一种日志聚合方法。所述方法包括:
获取二进制日志;
提取所述二进制日志中的行格式事件;
将所述行格式事件与预设事件缓存区中的已存事件进行事件元信息对比;
当对比结果为事件元信息一致时,将所述行格式事件置入所述预设事件缓存区,当对比结果为事件元信息不一致时,将所述预设事件缓存区内的已存事件进行聚合处理。
在其中一个实施例中,所述提取所述二进制日志中的行格式事件包括:
以事件为单位对所述二进制日志进行事件读取;
确定被读取事件的事件类型;
当所述被读取事件的事件类型为行格式事件类型时,从所述二进制日志提取所述被读取事件,将所述被读取事件作为行格式事件。
在其中一个实施例中,所述获取二进制日志包括:
获取事务处理请求;
确定所述事务处理请求的事务类型;
当所述事务处理请求的事务类型为无主键表的事务时,获取所述事务处理请求对应的二进制日志。
在其中一个实施例中,所述当对比结果为事件元信息不一致时,将所述预设事件缓存区内的已存事件进行聚合处理包括:
当对比结果为事件元信息不一致时,获取预设事件缓存区内已存事件的行格式数据;
将所述已存事件的行格式数据拼接,得到拼接数据;
根据所述拼接数据获取聚合事件;
将所述聚合事件移出所述预设事件缓存区,并清空所述预设事件缓存区。
在其中一个实施例中,所述根据所述拼接数据获取聚合事件包括:
获取所述预设事件缓存区内的初始已存事件;
将所述初始已存事件的行格式数据替换为所述拼接数据,得到聚合事件。
在其中一个实施例中,所述将所述聚合事件移出所述预设事件缓存区,并清空所述预设事件缓存区之后,还包括:
执行所述聚合事件,并将所述行格式事件置入所述预设事件缓存区。
第二方面,本申请还提供了一种日志聚合装置。所述装置包括:
数据获取模块,用于获取二进制日志;
事件提取模块,用于提取所述二进制日志中的行格式事件;
事件对比模块,用于将所述行格式事件与预设事件缓存区中的已存事件进行事件元信息对比;
日志聚合模块,用于当对比结果为事件元信息一致时,将所述行格式事件置入所述预设事件缓存区,当对比结果为事件元信息不一致时,将所述预设事件缓存区内的已存事件进行聚合处理。
第三方面,本申请还提供了一种计算机设备。所述计算机设备包括存储器和处理器,所述存储器存储有计算机程序,所述处理器执行所述计算机程序时实现以下步骤:
获取二进制日志;
提取所述二进制日志中的行格式事件;
将所述行格式事件与预设事件缓存区中的已存事件进行事件元信息对比;
当对比结果为事件元信息一致时,将所述行格式事件置入所述预设事件缓存区,当对比结果为事件元信息不一致时,将所述预设事件缓存区内的已存事件进行聚合处理。
第四方面,本申请还提供了一种计算机可读存储介质。所述计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现以下步骤:
获取二进制日志;
提取所述二进制日志中的行格式事件;
将所述行格式事件与预设事件缓存区中的已存事件进行事件元信息对比;
当对比结果为事件元信息一致时,将所述行格式事件置入所述预设事件缓存区,当对比结果为事件元信息不一致时,将所述预设事件缓存区内的已存事件进行聚合处理。
第五方面,本申请还提供了一种计算机程序产品。所述计算机程序产品,包括计算机程序,该计算机程序被处理器执行时实现以下步骤:
获取二进制日志;
提取所述二进制日志中的行格式事件;
将所述行格式事件与预设事件缓存区中的已存事件进行事件元信息对比;
当对比结果为事件元信息一致时,将所述行格式事件置入所述预设事件缓存区,当对比结果为事件元信息不一致时,将所述预设事件缓存区内的已存事件进行聚合处理。
上述日志聚合方法、装置、计算机设备、存储介质和计算机程序产品,通过先获取二进制日志;提取二进制日志中的行格式事件;将行格式事件与预设事件缓存区中的已存事件进行事件元信息对比;当对比结果为事件元信息一致时,将行格式事件置入预设事件缓存区,当对比结果为事件元信息不一致时,将预设事件缓存区内的已存事件进行聚合处理。本申请的方法在得到二进制日志之后,通过元信息对比将二进制日志元信息一致的行格式事件聚合,从而可以减少后续处理过程中的全表扫描次数,从而提升主从机之间的二进制日志通信效率。
附图说明
图1为一个实施例中日志聚合方法的应用环境图;
图2为一个实施例中日志聚合方法的流程示意图;
图3为一个实施例中提取二进制日志中的行格式事件步骤的流程示意图;
图4为一个实施例中获取二进制日志步骤的流程示意图;
图5为一个实施例中行格式数据拼接来进行日志聚合步骤的流程示意图;
图6为一个实施例中获取聚合事件步骤的流程示意图;
图7为一个实施例中获取聚合事件步骤的数据结构示意图;
图8为另一个实施例中日志聚合方法的流程示意图;
图9为一个实施例中日志聚合装置的结构框图;
图10为一个实施例中计算机设备的内部结构图。
具体实施方式
为了使本申请的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本申请进行进一步详细说明。应当理解,此处描述的具体实施例仅仅用以解释本申请,并不用于限定本申请。
本申请主要涉及云技术中的数据库技术,数据库(Database),简而言之可视为电子化的文件柜——存储电子文件的处所,用户可以对文件中的数据进行新增、查询、更新、删除等操作。所谓“数据库”是以一定方式储存在一起、能与多个用户共享、具有尽可能小的冗余度、与应用程序彼此独立的数据集合。数据库管理系统(英语:Database ManagementSystem,简称DBMS)是为管理数据库而设计的电脑软件系统,一般具有存储、截取、安全保障、备份等基础功能。数据库管理系统可以依据它所支持的数据库模型来作分类,例如关系式、XML(Extensible Markup Language,即可扩展标记语言);或依据所支持的计算机类型来作分类,例如服务器群集、移动电话;或依据所用查询语言来作分类,例如SQL(结构化查询语言(Structured Query Language)、XQuery;或依据性能冲量重点来作分类,例如最大规模、最高运行速度;亦或其他的分类方式。不论使用哪种分类方式,一些DBMS能够跨类别,例如,同时支持多种查询语言。
在本文中,需要理解的是,所涉及的术语:
二进制日志(binlog):是MySQL(关系型数据库管理系统)中最重要的日志,它记录了所有的DDL(Data Definition Language,库数据模式定义语言)和DML(DataManipulation Language,数据操纵语言)语句(除了数据查询语句select、show等),以事件(event)为单位记录,还包含语句所执行的消耗的时间,MySQL的二进制日志是事务安全型的。
主机、从机:主机是产生二进制日志的节点,从机是消费二进制日志的节点。
二进制日志格式(binlog format):表示DML在语句在二进制日志中存储的格式,在MySQL中有三种日志格式基于行格式的日志(row-base log),基于语句的日志(statement-base log),以及混合行格式和语句格式的日志(mixed-base log)。
基于行格式的日志(row-base log):日志中会记录成每一行数据被修改的形式,然后在slave端再对相同的数据进行修改。在row模式下,二进制日志中可以不记录执行的SQL语句的上下文相关的信息,仅仅只需要记录那一条记录被修改了,修改成什么样了。所以row的日志内容会非常清楚的记录下每一行数据修改的细节,非常容易理解。而且不会出现某些特定情况下的存储过程或函数,以及触发器的调用和触发无法被正确复制的问题。
事件:是二进制日志中的存储单元,其中事件的大小的上限都是固定的。
行格式事件(row event):由DML操作产生基于行格式的日志的事件(event)类型。
行格式数据(row data):由DML操作产生基于行格式的日志数据,存储在Rowevent中。
全表扫描(table scan):在没有任何索引的情况下,MySQL使用全表扫描来查找一条特定的记录。
哈希扫描(hash scan):在无主键或者唯一索引的情况下,slave可以使用将要应用的记录进行哈希,然后进行全表扫描以此来快速的匹配要应用的日志,从而加快日志的应用。
本申请实施例提供的日志聚合方法,可以应用于如图1所示的应用环境中。其中,从机终端102通过网络与主机服务器104进行通信。数据存储系统可以存储服务器104需要处理的数据。数据存储系统可以集成在主机服务器104上,也可以放在云上或其他服务器上。当从机终端102通过网络与主机服务器104进行二进制日志的同步时,需要在从机终端102的SQL线程上应用二进制日志,而二进制日志的速度太慢导致会造成线上主从机之间的延迟,因此可以通过本申请的日志聚合方法来提高从机终端102的日志应用效率,从而降低主从机之间的延迟,提高通信效率,在进行日志通信时,从机终端102先从主机服务器104获取二进制日志;提取二进制日志中的行格式事件;将行格式事件与预设事件缓存区中的已存事件进行事件元信息对比;当对比结果为事件元信息一致时,将行格式事件置入预设事件缓存区,当对比结果为事件元信息不一致时,将预设事件缓存区内的已存事件进行聚合处理。而后根据聚合得到的二进制日志数据与主机服务器104进行通信。其中,主机服务器104可以是独立的物理服务器,也可以是多个物理服务器构成的服务器集群或者分布式系统,还可以是提供云服务、云数据库、云计算、云函数、云存储、网络服务、云通信、中间件服务、域名服务、安全服务、CDN、以及大数据和人工智能平台等基础云计算服务的云服务器。从机终端102包括但不限于手机、电脑、智能语音交互设备、智能家电、车载终端等。本发明实施例可应用于各种场景,包括但不限于云技术、人工智能、智慧交通、辅助驾驶等。从机终端102以及服务器104可以通过有线或无线通信方式进行直接或间接地连接,本申请在此不做限制。
在一个实施例中,如图2所示,提供了一种日志聚合方法,以该方法应用于图1中的从机终端102为例进行说明,包括以下步骤:
步骤201,获取二进制日志。
其中,二进制日志即binlog,它是MySQL最重要的日志,记录了所有的DDL和DML语句,其以事件为单位记录,还包含有语句所执行的消耗的时间。主机服务器104端产生二进制日志,而从机终端102则消费二进制日志。
具体地,本申请的日志聚合方法主要应用于从机终端102,由于主机的二进制日志Dump线程和从机的IO线程之间的二进制日志通信时延主要来自于从机终端102应用日志的速度太慢导致,因此可以通过本申请来对从机终端102所接收的日志进行聚合处理,加快从机终端102应用日志的速度,从而降低主从机之间的日志通信时延。首先,在进行日志聚合时,从机终端102可以通过网络获取主机服务器104发送的二进制日志,从而进行二进制日志的聚合。
步骤203,提取二进制日志中的行格式事件。
其中,事件是二进制日志中的存储单元,其中事件的大小的上限都是固定的。而行格式事件是事件的一种格式类型,DML语句在二进制日志中存储的格式有三种,分别是基于行格式的日志,基于语句的日志,以及混合行格式和语句格式的日志,其中基于行格式的日志中会记录成每一行数据被修改的形式,然后在slave端再对相同的数据进行修改。在row模式下,二进制日志中可以不记录执行的SQL语句的上下文相关的信息,仅仅只需要记录那一条记录被修改了,修改成什么样了。所以row的日志内容会非常清楚的记录下每一行数据修改的细节,非常容易理解。而且不会出现某些特定情况下的存储过程或函数,以及触发器的调用和触发无法被正确复制的问题。
具体地,本申请的日志聚合方法主要用于对二进制日志中的行格式事件,从而对二进制日志进行聚合,而二进制日志中包含有基于行格式的日志,基于语句的日志,以及混合行格式和语句格式的日志三种日志类型。因此,在得到二进制日志之后,需要从二进制日志中识别出哪些事件是基于行格式的日志的事件类型,从而对这些事件进行聚合处理。
步骤205,将行格式事件与预设事件缓存区中的已存事件进行事件元信息对比。
其中,预设事件缓存区是一个额外设置的存储区域,用于临时存放提取出来的事件。事件元信息是指用于描述事件属性的信息,事件元信息包括有事件的类型、事件所操作的表以及生成该事件所在服务器的ID等信息。
具体地,本申请日志聚合对象为日志中的行格式事件。在进行聚合时,首先要判断二个行格式事件是否能够聚合成一个事件,而判断的依据即为不同事件之间的事件元信息。因此,当提取出一个行格式事件后,可以将其与预设事件缓存区中的已存事件进行事件元信息的对比,来确定两者之间是否可以进行聚合。本申请的方案是严格的判断两个事件中所有的事件元信息之后,然后才做聚合的,但是实际上有些事件元信息对聚合并没有什么影响。因此,再具体的实施例中还可以对这一部分可以进一步优化:可以在对比的过程中忽略掉某些对数据一致性没有影响的标志,例如:有个关于语句结束的标志(STMT_END_F)如果在对比的过程忽略这个标志,那么就可以将主机上两个相似的语句所产生的日志进行聚合处理。
步骤207,当对比结果为事件元信息一致时,将行格式事件置入预设事件缓存区,当对比结果为事件元信息不一致时,将预设事件缓存区内的已存事件进行聚合处理。
具体地,事件元信息一致是指行格式事件与预设事件缓存区中的已存事件的事件元信息完全一致,此时,可以将两个不同的行格式事件聚合为一个事件。而当对比结果为事件元信息不一致时,那么则结束这次的数据对比,将预设事件缓存区中所有存储起来的N个事件聚合成一个事件,从而在后续过程中可以直接利用哈希扫描来执行聚合的事件,这样只需要一次全盘扫描就可以完成N个事件的执行,而在之前,这需要N次的全盘扫描。从而可以有效地提升主从机之间的二进制日志通信效率。
上述日志聚合方法,通过先获取二进制日志;提取二进制日志中的行格式事件;将行格式事件与预设事件缓存区中的已存事件进行事件元信息对比;当对比结果为事件元信息一致时,将行格式事件置入预设事件缓存区,当对比结果为事件元信息不一致时,将预设事件缓存区内的已存事件进行聚合处理。本申请的方法在得到二进制日志之后,通过事件元信息对比将二进制日志元信息一致的行格式事件聚合,从而可以减少后续处理过程中的全表扫描次数,从而提升主从机之间的二进制日志通信效率。
在一个实施例中,如图3所示,步骤203包括:
步骤302,以事件为单位对二进制日志进行事件读取。
步骤304,确定被读取事件的事件类型。
步骤306,当被读取事件的事件类型为行格式事件类型时,从二进制日志提取被读取事件,将被读取事件作为行格式事件。
其中,事件为单位对二进制日志进行事件读取是指,依次读取二进制日志中的事件,每次都取一个事件来进行处理比较。事件的事件类型包含有行格式事件类型、语句格式事件类型以及混合行格式和语句格式的事件类型,分别与三种二进制日志格式对应。在从二进制日志中读取出一个事件后,即可确定被读取出的这个事件所对应的事件类型,从而判断是否可以对其进行聚合处理。
具体的,本申请的方案在进行日志聚合处理时,首先需要从二进制日志中一个个地读取事件,以事件为单位来进行聚合,且只有为行格式事件类型的事件才可以进行聚合。因此,在读取出一个事件后,可以先确定被读取事件的事件类型;只有当确定被读取事件的事件类型为行格式事件类型时,再从二进制日志提取被读取事件,将被读取事件作为行格式事件,否则继续读取下一个事件。直到读取到行格式事件类型的事件为止,而后将读取的事件从二进制日志提取,从而得到行格式事件,并进行后续的日志聚合。本实施例中,通过事件类型的判断,可以有效地从二进制日志中提取出行格式事件,保证日志聚合处理过程的顺利进行。
在一个实施例中,如图4所示,步骤201包括:
步骤401,获取事务处理请求。
步骤403,确定事务处理请求的事务类型。
步骤405,当事务处理请求的事务类型为无主键表的事务时,获取事务处理请求对应的二进制日志。
其中,在数据库中,可以将一条SQL语句称为一次基本的操作。而将若干条SQL语句“打包”在一起,共同执行一个完整的任务,这就是事务(Transaction)。事务由一次或者多次基本操作构成,或者说,事务由一条或者多条SQL语句构成。事务有一个最显著的特征,就是它包含的所有SQL语句作为一个整体向数据库提交,只有所有的SQL语句都执行完成,整个事务才算成功,一旦某个SQL语句执行失败,整个事务就失败了。事务失败后需要回滚所有的SQL语句。事务中的所有SQL语句是一个整体,共同进退,不可分割,要么全部执行成功,要么全部执行失败。主键即主关键字(primary key),它是表中的一个或多个字段,它的值用于唯一的标识表中的某一条记录。在两个表的关系中,主关键字用来在一个表中引用来自于另一个表中的特定记录。主关键字是一种唯一关键字,表定义的一部分。一个表的主键可以由多个关键字共同组成,并且主关键字的列不能包含空值。主关键字是可选的,并且可在CREATE TABLE或ALTER TABLE语句中定义。因此当从机终端102以及主机服务器104出现事务时,可以先判断事务为无主键表的事务还是有主键表的事务,只有在出现无主键表的事务时,才需要进行日志聚合的处理,从而快速应用日志。
具体地,本申请的日志聚合方法主要用于对无主键表的事务进行处理,在通过本申请的日志聚合方法来进行日志处理时,可以先判断下事务的事务类型,只有当事务处理请求的事务类型为无主键表的事务时,才会获取事务处理请求对应的二进制日志,从而进行后续的日志聚合处理,对于有主键表的事务,其应用过程则无需进行日志聚合的处理。本申请的方法可以在主从机进行二进制日志通信时保持开启状态,当有无主键表的大事务(运行时间比较长,长时间未提交的事务)时,可以快速的聚合该事务的日志,达到快速应用之目的。本实施例中,通过识别事务处理请求的事务类型来进行二进制日志的聚合处理,可以保证日志聚合处理过程的有效性,从而保证主从机之间二进制日志通信的快速进行。
在其中一个实施例中,如图5所示,步骤207包括:
步骤502,当对比结果为事件元信息不一致时,获取预设事件缓存区内已存事件的行格式数据。
步骤504,将已存事件的行格式数据拼接,得到拼接数据。
步骤506,根据拼接数据获取聚合事件。
步骤508,将聚合事件移出预设事件缓存区,并清空预设事件缓存区。
其中,行格式数据是指由DML操作产生基于行格式的日志数据,存储在行格式事件中。聚合事件是指有预设事件缓存区多个已存事件聚合得到的一个事件,该事件与预设事件缓存区内已存事件的事件元信息相同,且包含所有已存事件的行格式数据。
具体地,当对比结果为事件元信息不一致时,即可将预设事件缓存区内所有的已存事件进行聚合处理。而在对预设事件缓存区内的已存事件进行聚合处理时,具体可以通过将所有已存事件的行格式数据拼接,从而将多个行格式事件拼接为一个行格式事件,并保证日志数据不会丢失。而在得到聚合事件后,就可以将聚合事件移出预设事件缓存区,从而清空预设事件缓存区。并在这之后,利用哈希扫描来执行该聚合事件。从而完成行格式事件聚合处理的完整流程。本实施例中,通过行格式数据的拼接来得到聚合事件,可以有效保证日志聚合处理过程中日志数据的完备性,防止日志数据丢失。
在其中一个实施例中,如图6所示,步骤506具体包括:
步骤601,获取预设事件缓存区内的初始已存事件。
步骤603,将初始已存事件的行格式数据替换为拼接数据,得到聚合事件。
其中,初始已存事件是指最初进入到预设事件缓存区内的事件。
具体地,在基于拼接数据来得到聚合事件时,可以先从预设事件缓存区内的多个事件中,识别出最初进入到预设事件缓存区内事件,而后将初始已存事件的行格式数据替换为拼接数据,从而将初始已存事件内的行格式数据全部替换为预设事件缓存区所有事件的行格式数据。如此一来,初始已存事件这一个事件就已经包含有预设事件缓存区内所有已存事件的行格式数据,因此可以用其替换预设事件缓存区内所有事件,减少事件执行过程中的事件数量,从而提高主从机之间的二进制日志通信效率。如图7所示,预设事件缓存区内包含有事件1、事件2…事件N总共N个已存的行格式事件,首先,需要合并预设事件缓存区中所有行格式事件的行格式数据,然后将合并后的行格式数据替换掉初始已存事件,即事件1的行格式数据,这样就完成了整个聚合的动作。在后续的事件执行过程中,可以利用哈希扫描来执行聚合得到的事件,这样只需要一次全盘扫描就可以完成N个事件的执行,而在之前,这需要N次全盘扫描。通过本申请的日志聚合方法来聚合行格式日志,可以有效加快从机端的日志执行效率,从而可以提高主从机进行二进制日志通信的通信效率,降低通信时延。
在其中一个实施例中,步骤508之后,还包括:执行聚合事件,并将行格式事件置入预设事件缓存区。
具体地,在得到聚合事件后,可以利用哈希扫描来执行聚合得到的事件。在执行聚合事件时,还可以将新提取出的行格式事件,完整地导入到已经清空内容的预设事件缓存区内,并将其作为新的初始已存事件来继续进行后续过程的日志聚合处理。当得到新的行格式事件后,则需要将得到的行格式事件与该新的初始已存事件对比来进行日志聚合的处理。本实施例中,通过执行聚合事件,来保证二进制日志通信过程的顺利进行,同时通过将行格式事件置入预设事件缓存区,来保证后续过程中,二进制日志的聚合过程可以持续进行,保证主从机二进制日志通信的效率。
本申请还提供一种应用场景,该应用场景应用上述的日志聚合方法。具体地,该日志聚合方法在该应用场景的应用如下:
数据库系统包括有主从机,主机是产生二进制日志的节点,从机是消费二进制日志的节点。在当主机和从机出现无主键表的大事务,需要进行二进制日志的通信时。为了保证从机端应用二进制日志的效率,可以通过本申请的日志聚合方法来在从机端对主机发送的二进制日志进行聚合,从而保证日志的应用效率。首先,主机和从机会获取事务处理请求;确定事务处理请求的事务类型;只有当事务处理请求的事务类型为无主键表的事务时,才会使用本申请的方法,此时需要获取事务处理请求对应的二进制日志。而后的日志聚合处理过程可以参照图8所示,首先,需要以事件为单位对二进制日志进行事件读取;并确定被读取事件的事件类型;当被读取事件的事件类型为行格式事件类型时,从二进制日志提取被读取事件,将被读取事件作为行格式事件,若不是行格式事件则直接执行。而后判断预设事件缓存区是否为空,为空时(即方案初始阶段),则直接将行格式事件置入预设事件缓存区,不为空则需要将行格式事件与预设事件缓存区中的已存事件进行事件元信息对比,当对比结果为事件元信息一致时,直接将行格式事件置入预设事件缓存区。而当对比结果为事件元信息不一致时,将预设事件缓存区内的已存事件进行聚合处理,此时需要获取预设事件缓存区内已存事件的行格式数据;将已存事件的行格式数据拼接,得到拼接数据;获取预设事件缓存区内的初始已存事件;将初始已存事件的行格式数据替换为拼接数据,得到聚合事件;将聚合事件移出预设事件缓存区,并清空预设事件缓存区。执行聚合事件,并将行格式事件置入预设事件缓存区。
应该理解的是,虽然如上的各实施例所涉及的流程图中的各个步骤按照箭头的指示依次显示,但是这些步骤并不是必然按照箭头指示的顺序依次执行。除非本文中有明确的说明,这些步骤的执行并没有严格的顺序限制,这些步骤可以以其它的顺序执行。而且,如上的各实施例所涉及的流程图中的至少一部分步骤可以包括多个步骤或者多个阶段,这些步骤或者阶段并不必然是在同一时刻执行完成,而是可以在不同的时刻执行,这些步骤或者阶段的执行顺序也不必然是依次进行,而是可以与其它步骤或者其它步骤中的步骤或者阶段的至少一部分轮流或者交替地执行。
基于同样的发明构思,本申请实施例还提供了一种用于实现上述所涉及的日志聚合方法的日志聚合装置。该装置所提供的解决问题的实现方案与上述方法中所记载的实现方案相似,故下面所提供的一个或多个日志聚合装置实施例中的具体限定可以参见上文中对于日志聚合方法的限定,在此不再赘述。
在一个实施例中,如图9所示,提供了一种日志聚合装置,包括:数据获取模块902、事件提取模块904、事件对比模块906和日志聚合模块908,其中:
数据获取模块902,用于获取二进制日志。
事件提取模块904,用于提取二进制日志中的行格式事件。
事件对比模块906,用于将行格式事件与预设事件缓存区中的已存事件进行事件元信息对比。
日志聚合模块908,用于当对比结果为事件元信息一致时,将行格式事件置入预设事件缓存区,当对比结果为事件元信息不一致时,将预设事件缓存区内的已存事件进行聚合处理。
在一个实施例中,事件提取模块904具体用于:以事件为单位对二进制日志进行事件读取;确定被读取事件的事件类型;当被读取事件的事件类型为行格式事件类型时,从二进制日志提取被读取事件,将被读取事件作为行格式事件。
在一个实施例中,数据获取模块902具体用于:获取事务处理请求;确定事务处理请求的事务类型;当事务处理请求的事务类型为无主键表的事务时,获取事务处理请求对应的二进制日志。
在一个实施例中,日志聚合模块908具体用于:当对比结果为事件元信息不一致时,获取预设事件缓存区内已存事件的行格式数据;将已存事件的行格式数据拼接,得到拼接数据;根据拼接数据获取聚合事件;将聚合事件移出预设事件缓存区,并清空预设事件缓存区。
在一个实施例中,日志聚合模块908具体用于:获取预设事件缓存区内的初始已存事件;将初始已存事件的行格式数据替换为拼接数据,得到聚合事件。
在一个实施例中,日志聚合模块908还用于:执行聚合事件,并将行格式事件置入预设事件缓存区
上述日志聚合装置中的各个模块可全部或部分通过软件、硬件及其组合来实现。上述各模块可以硬件形式内嵌于或独立于计算机设备中的处理器中,也可以以软件形式存储于计算机设备中的存储器中,以便于处理器调用执行以上各个模块对应的操作。
在一个实施例中,提供了一种计算机设备,该计算机设备可以是终端,其内部结构图可以如图10所示。该计算机设备包括处理器、存储器、输入/输出接口、通信接口、显示单元和输入装置。其中,处理器、存储器和输入/输出接口通过系统总线连接,通信接口、显示单元和输入装置通过输入/输出接口连接到系统总线。其中,该计算机设备的处理器用于提供计算和控制能力。该计算机设备的存储器包括非易失性存储介质、内存储器。该非易失性存储介质存储有操作系统和计算机程序。该内存储器为非易失性存储介质中的操作系统和计算机程序的运行提供环境。该计算机设备的输入/输出接口用于处理器与外部设备之间交换信息。该计算机设备的通信接口用于与外部的终端进行有线或无线方式的通信,无线方式可通过WIFI、移动蜂窝网络、NFC(近场通信)或其他技术实现。该计算机程序被处理器执行时以实现一种日志聚合方法。该计算机设备的显示单元用于形成视觉可见的画面,可以是显示屏、投影装置或虚拟现实成像装置,显示屏可以是液晶显示屏或电子墨水显示屏,该计算机设备的输入装置可以是显示屏上覆盖的触摸层,也可以是计算机设备外壳上设置的按键、轨迹球或触控板,还可以是外接的键盘、触控板或鼠标等。
本领域技术人员可以理解,图10中示出的结构,仅仅是与本申请方案相关的部分结构的框图,并不构成对本申请方案所应用于其上的计算机设备的限定,具体的计算机设备可以包括比图中所示更多或更少的部件,或者组合某些部件,或者具有不同的部件布置。
在一个实施例中,提供了一种计算机设备,包括存储器和处理器,存储器中存储有计算机程序,该处理器执行计算机程序时实现以下步骤:
获取二进制日志。
提取二进制日志中的行格式事件。
将行格式事件与预设事件缓存区中的已存事件进行事件元信息对比。
当对比结果为事件元信息一致时,将行格式事件置入预设事件缓存区,当对比结果为事件元信息不一致时,将预设事件缓存区内的已存事件进行聚合处理。
在一个实施例中,处理器执行计算机程序时还实现以下步骤:以事件为单位对二进制日志进行事件读取;确定被读取事件的事件类型;当被读取事件的事件类型为行格式事件类型时,从二进制日志提取被读取事件,将被读取事件作为行格式事件。
在一个实施例中,处理器执行计算机程序时还实现以下步骤:获取事务处理请求;确定事务处理请求的事务类型;当事务处理请求的事务类型为无主键表的事务时,获取事务处理请求对应的二进制日志。
在一个实施例中,处理器执行计算机程序时还实现以下步骤:当对比结果为事件元信息不一致时,获取预设事件缓存区内已存事件的行格式数据;将已存事件的行格式数据拼接,得到拼接数据;根据拼接数据获取聚合事件;将聚合事件移出预设事件缓存区,并清空预设事件缓存区。
在一个实施例中,处理器执行计算机程序时还实现以下步骤:获取预设事件缓存区内的初始已存事件;将初始已存事件的行格式数据替换为拼接数据,得到聚合事件。
在一个实施例中,处理器执行计算机程序时还实现以下步骤:执行聚合事件,并将行格式事件置入预设事件缓存区。
在一个实施例中,提供了一种计算机可读存储介质,其上存储有计算机程序,计算机程序被处理器执行时实现以下步骤:
获取二进制日志。提取二进制日志中的行格式事件。
将行格式事件与预设事件缓存区中的已存事件进行事件元信息对比。
当对比结果为事件元信息一致时,将行格式事件置入预设事件缓存区,当对比结果为事件元信息不一致时,将预设事件缓存区内的已存事件进行聚合处理。
在一个实施例中,计算机程序被处理器执行时还实现以下步骤:以事件为单位对二进制日志进行事件读取;确定被读取事件的事件类型;当被读取事件的事件类型为行格式事件类型时,从二进制日志提取被读取事件,将被读取事件作为行格式事件。
在一个实施例中,计算机程序被处理器执行时还实现以下步骤:获取事务处理请求;确定事务处理请求的事务类型;当事务处理请求的事务类型为无主键表的事务时,获取事务处理请求对应的二进制日志。
在一个实施例中,计算机程序被处理器执行时还实现以下步骤:当对比结果为事件元信息不一致时,获取预设事件缓存区内已存事件的行格式数据;将已存事件的行格式数据拼接,得到拼接数据;根据拼接数据获取聚合事件;将聚合事件移出预设事件缓存区,并清空预设事件缓存区。
在一个实施例中,计算机程序被处理器执行时还实现以下步骤:获取预设事件缓存区内的初始已存事件;将初始已存事件的行格式数据替换为拼接数据,得到聚合事件。
在一个实施例中,计算机程序被处理器执行时还实现以下步骤:执行聚合事件,并将行格式事件置入预设事件缓存区。
在一个实施例中,提供了一种计算机程序产品,包括计算机程序,该计算机程序被处理器执行时实现以下步骤:
获取二进制日志。
提取二进制日志中的行格式事件。
将行格式事件与预设事件缓存区中的已存事件进行事件元信息对比。
当对比结果为事件元信息一致时,将行格式事件置入预设事件缓存区,当对比结果为事件元信息不一致时,将预设事件缓存区内的已存事件进行聚合处理。
在一个实施例中,计算机程序被处理器执行时还实现以下步骤:以事件为单位对二进制日志进行事件读取;确定被读取事件的事件类型;当被读取事件的事件类型为行格式事件类型时,从二进制日志提取被读取事件,将被读取事件作为行格式事件。
在一个实施例中,计算机程序被处理器执行时还实现以下步骤:获取事务处理请求;确定事务处理请求的事务类型;当事务处理请求的事务类型为无主键表的事务时,获取事务处理请求对应的二进制日志。
在一个实施例中,计算机程序被处理器执行时还实现以下步骤:当对比结果为事件元信息不一致时,获取预设事件缓存区内已存事件的行格式数据;将已存事件的行格式数据拼接,得到拼接数据;根据拼接数据获取聚合事件;将聚合事件移出预设事件缓存区,并清空预设事件缓存区。
在一个实施例中,计算机程序被处理器执行时还实现以下步骤:获取预设事件缓存区内的初始已存事件;将初始已存事件的行格式数据替换为拼接数据,得到聚合事件。
在一个实施例中,计算机程序被处理器执行时还实现以下步骤:执行聚合事件,并将行格式事件置入预设事件缓存区。
需要说明的是,本申请所涉及的用户信息(包括但不限于用户设备信息、用户个人信息等)和数据(包括但不限于用于分析的数据、存储的数据、展示的数据等),均为经用户授权或者经过各方充分授权的信息和数据,且相关数据的收集、使用和处理需要遵守相关国家和地区的相关法律法规和标准。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,的计算机程序可存储于一非易失性计算机可读取存储介质中,该计算机程序在执行时,可包括如上述各方法的实施例的流程。其中,本申请所提供的各实施例中所使用的对存储器、数据库或其它介质的任何引用,均可包括非易失性和易失性存储器中的至少一种。非易失性存储器可包括只读存储器(Read-OnlyMemory,ROM)、磁带、软盘、闪存、光存储器、高密度嵌入式非易失性存储器、阻变存储器(ReRAM)、磁变存储器(Magnetoresistive Random Access Memory,MRAM)、铁电存储器(Ferroelectric Random Access Memory,FRAM)、相变存储器(Phase Change Memory,PCM)、石墨烯存储器等。易失性存储器可包括随机存取存储器(Random Access Memory,RAM)或外部高速缓冲存储器等。作为说明而非局限,RAM可以是多种形式,比如静态随机存取存储器(Static Random Access Memory,SRAM)或动态随机存取存储器(Dynamic RandomAccess Memory,DRAM)等。本申请所提供的各实施例中所涉及的数据库可包括关系型数据库和非关系型数据库中至少一种。非关系型数据库可包括基于区块链的分布式数据库等,不限于此。本申请所提供的各实施例中所涉及的处理器可为通用处理器、中央处理器、图形处理器、数字信号处理器、可编程逻辑器、基于量子计算的数据处理逻辑器等,不限于此。
以上实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。
以上实施例仅表达了本申请的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对本申请专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本申请构思的前提下,还可以做出若干变形和改进,这些都属于本申请的保护范围。因此,本申请的保护范围应以所附权利要求为准。
Claims (10)
1.一种日志聚合方法,其特征在于,所述方法包括:
获取二进制日志;
提取所述二进制日志中的行格式事件;
将所述行格式事件与预设事件缓存区中的已存事件进行事件元信息对比;
当对比结果为事件元信息一致时,将所述行格式事件置入所述预设事件缓存区,当对比结果为事件元信息不一致时,将所述预设事件缓存区内的已存事件进行聚合处理。
2.根据权利要求1所述的方法,其特征在于,所述提取所述日志中的行格式事件包括:
以事件为单位对所述二进制日志进行事件读取;
确定被读取事件的事件类型;
当所述被读取事件的事件类型为行格式事件类型时,从所述二进制日志提取所述被读取事件,将所述被读取事件作为行格式事件。
3.根据权利要求1所述的方法,其特征在于,所述获取二进制日志包括:
获取事务处理请求;
确定所述事务处理请求的事务类型;
当所述事务处理请求的事务类型为无主键表的事务时,获取所述事务处理请求对应的二进制日志。
4.根据权利要求1所述的方法,其特征在于,所述当对比结果为事件元信息不一致时,将所述预设事件缓存区内的已存事件进行聚合处理包括:
当对比结果为事件元信息不一致时,获取预设事件缓存区内已存事件的行格式数据;
将所述已存事件的行格式数据拼接,得到拼接数据;
根据所述拼接数据获取聚合事件;
将所述聚合事件移出所述预设事件缓存区,并清空所述预设事件缓存区。
5.根据权利要求4所述的方法,其特征在于,所述根据所述拼接数据获取聚合事件包括:
获取所述预设事件缓存区内的初始已存事件;
将所述初始已存事件的行格式数据替换为所述拼接数据,得到聚合事件。
6.根据权利要求4所述的方法,其特征在于,所述将所述聚合事件移出所述预设事件缓存区,并清空所述预设事件缓存区之后,还包括:
执行所述聚合事件,并将所述行格式事件置入所述预设事件缓存区。
7.一种日志聚合装置,其特征在于,所述装置包括:
数据获取模块,用于获取二进制日志;
事件提取模块,用于提取所述二进制日志中的行格式事件;
事件对比模块,用于将所述行格式事件与预设事件缓存区中的已存事件进行事件元信息对比;
日志聚合模块,用于当对比结果为事件元信息一致时,将所述行格式事件置入所述预设事件缓存区,当对比结果为事件元信息不一致时,将所述预设事件缓存区内的已存事件进行聚合处理。
8.一种计算机设备,包括存储器和处理器,所述存储器存储有计算机程序,其特征在于,所述处理器执行所述计算机程序时实现权利要求1至6中任一项所述的方法的步骤。
9.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现权利要求1至6中任一项所述的方法的步骤。
10.一种计算机程序产品,包括计算机程序,其特征在于,该计算机程序被处理器执行时实现权利要求1至6中任一项所述的方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210242675.1A CN114610688A (zh) | 2022-03-11 | 2022-03-11 | 日志聚合方法、装置、计算机设备和存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210242675.1A CN114610688A (zh) | 2022-03-11 | 2022-03-11 | 日志聚合方法、装置、计算机设备和存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN114610688A true CN114610688A (zh) | 2022-06-10 |
Family
ID=81863273
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210242675.1A Pending CN114610688A (zh) | 2022-03-11 | 2022-03-11 | 日志聚合方法、装置、计算机设备和存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114610688A (zh) |
-
2022
- 2022-03-11 CN CN202210242675.1A patent/CN114610688A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US20170255708A1 (en) | Index structures for graph databases | |
US11526465B2 (en) | Generating hash trees for database schemas | |
CN112434015B (zh) | 数据存储的方法、装置、电子设备及介质 | |
US11663288B2 (en) | Just-in-time front end template generation using logical document object models | |
CN114115844A (zh) | 页面生成方法、装置、计算机设备和存储介质 | |
CN114528127A (zh) | 数据处理方法、装置、存储介质及电子设备 | |
CN114756627B (zh) | 基于联盟链的数字资产处理方法、系统和存储介质 | |
Zhai et al. | Hadoop perfect file: A fast and memory-efficient metadata access archive file to face small files problem in hdfs | |
CN115544183A (zh) | 数据可视化方法、装置、计算机设备和存储介质 | |
WO2020192663A1 (zh) | 一种数据管理方法及相关设备 | |
Haelen et al. | Delta Lake: Up and Running | |
WO2023065868A1 (zh) | 事务执行方法、装置、计算设备及存储介质 | |
CN114610688A (zh) | 日志聚合方法、装置、计算机设备和存储介质 | |
CN111221817B (zh) | 业务信息数据存储方法、装置、计算机设备及存储介质 | |
CN114356945A (zh) | 数据处理方法、装置、计算机设备和存储介质 | |
CN116628042A (zh) | 数据处理方法、装置、设备及介质 | |
CN112052234A (zh) | 业务数据的处理方法和装置、存储介质、电子装置 | |
CN108614838B (zh) | 一种用户群索引处理方法、装置及系统 | |
CN117290302B (zh) | 目录分离方法、装置、计算机设备和存储介质 | |
CN114647630A (zh) | 文件同步、信息生成方法、装置、计算机设备和存储介质 | |
CN112084161B (zh) | 基于数据库的数据处理方法、装置以及可读存储介质 | |
US20240078221A1 (en) | Systems and methods of modeling and querying dynamic temporal graph on massive parallel graph processing and storage engine | |
WO2023279752A1 (zh) | 数据库模型的版本管理方法、装置及相关设备 | |
US10521314B2 (en) | Cross-referenced irregular field storage in databases | |
CN117435589A (zh) | 数据转存方法、装置、计算机设备、存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |