数据库日志处理方法以及装置
技术领域
本公开涉及计算机领域,特别涉及一种数据库日志处理方法以及装置。
背景技术
数据库日志可以记录所有对数据库数据进行了更新的操作。例如,MySQL数据库的二进制日志可以记录对数据库数据进行增加、删除、修改等操作。
二进制日志对于机器来说,理解起来非常便利,但是对于人来说,理解起来比较困难。然而,在实际中,经常需要人通过数据库日志了解数据库动态,进行例如数据同步、数据恢复等操作。对于非专业人员来说,通过二进制日志了解数据库几乎是难以做到的事情。对于专业人员来说,也需要通过命令行界面输入多条专门的数据库操作命令,经过下载、解析等复杂的操作,才能获得人容易理解的相关日志数据。
发明内容
本公开根据用户通过图形用户界面输入的数据库日志处理信息,自动地进行数据库日志的格式转换和处理等操作,非常便利地获得人容易理解的相关日志数据,对于非专业人员和专业人员均适用。
本公开的一些实施例提出一种数据库日志处理方法,包括:
获取用户通过图形用户界面输入的数据库日志处理信息,所述数据库日志处理信息包括日志范围约束信息和日志处理方式信息;
将符合所述日志范围约束信息的第一格式日志转换为第二格式日志;以及
根据所述日志处理方式信息对目标日志进行处理,所述目标日志为所述第二格式日志的全部或子集。
在一些实施例中,所述日志范围约束信息包括第一日志范围约束信息和第二日志范围约束信息;所述将符合所述日志范围约束信息的第一格式日志转换为第二格式日志包括:将符合所述第一日志范围约束信息的第一格式日志转换为第二格式日志;并且,所述目标日志为所述第二格式日志的子集,所述第二格式日志的子集根据所述第二日志范围约束信息获取。
在一些实施例中,将第一格式日志转换为第二格式日志包括:调用日志格式转换命令将二进制格式日志转换为文本格式日志。
在一些实施例中,所述根据所述日志处理方式信息对目标日志进行处理包括:当所述日志处理方式信息为日志正向解析方式时,显示所述目标日志。
在一些实施例中,所述根据所述日志处理方式信息对目标日志进行处理包括:当所述日志处理方式信息为日志反向解析方式时,将所述目标日志中增删语句的语句类型替换为相反含义的命令类型,和/或,将所述目标日志中修改语句的语句内容替换为修改前的数据,得到目标日志的反向内容。
在一些实施例中,还包括:利用目标日志的反向内容对数据库数据进行恢复。
在一些实施例中,还包括:统计并显示所述目标日志中的热点表和单位时间内的事务处理量中的至少一项。
在一些实施例中,所述第一日志范围约束信息包括时间段信息和数据库信息中的至少一项;所述第二日志范围约束信息包括:表信息、操作类型信息、位置点信息、事务信息中的至少一项。
本公开的一些实施例提出一种数据库日志处理装置,包括:
存储器;以及
耦接至所述存储器的处理器,所述处理器被配置为基于存储在所述存储器中的指令,执行任意一个实施例的数据库日志处理方法。
本公开的一些实施例提出一种非瞬时性计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现任意一个实施例的数据库日志处理方法。
附图说明
下面将对实施例或相关技术描述中所需要使用的附图作简单地介绍。根据下面参照附图的详细描述,可以更加清楚地理解本公开,
显而易见地,下面描述中的附图仅仅是本公开的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1为本公开数据库日志处理方法一些实施例的流程图。
图2为本公开供用户输入数据库日志处理信息的图形用户界面的一个示例的示意图。
图3为本公开数据库日志处理装置的一些实施例的结构示意图。
具体实施方式
下面将结合本公开实施例中的附图,对本公开实施例中的技术方案进行清楚、完整地描述。
图1为本公开数据库日志处理方法一些实施例的流程图。该方法例如可以由数据库日志处理装置执行。
如图1所示,该实施例的方法包括:步骤11-13,可选的,还可以步骤14。
在步骤11,获取用户通过图形用户界面(Graphical User Interface,简称GUI)输入的数据库日志处理信息,数据库日志处理信息包括日志范围约束信息和日志处理方式信息。
其中,日志范围约束信息用来指定需要处理的日志范围。日志范围约束信息例如可以包括第一日志范围约束信息和第二日志范围约束信息。第一日志范围约束信息是指不需要对日志进行解析就能够确定日志范围的约束信息,例如包括时间段信息和数据库信息(如数据库名称)等。第二日志范围约束信息是指需要对日志进行解析才能够确定日志范围的约束信息,例如包括:表信息(如表名)、操作类型信息、事务信息、位置点信息(如mysql数据库的Position)等。
其中,操作类型信息例如包括CREATE(创建)、ALTER(改变)、DROP(放弃)等数据定义语言,主要用在定义或改变表(TABLE)的结构、数据类型、表之间的链接和约束等初始化工作,大多在建立表时使用。操作类型信息例如还包括UPDATE(修改)、INSERT(增加)、DELETE(删除)等数据操纵语言,用来对数据库里的数据进行操作。
其中,事务信息例如为事务标识,如全局事务ID(Global Transaction ID)。事务是数据库管理系统执行过程中的一个逻辑单位,由一个有限的数据库操作序列构成,通常包含了一个序列的对数据库的读或写操作。例如,某人要在商店使用电子货币购买100元的东西,其中至少包括两个操作:该人账户减少100元;商店账户增加100元。这两个操作构成一个“事务”。一个“事务”中的这两个操作需要同时完成,或同时取消,否则,就会出现该人账户减少100元但商店账户未收到100元,或者,商店账户退款100元,但该人账户未收到100元等异常情况。
通常情况下,可以设置第一日志范围约束信息,以便减小需要处理的日志量,使得用户容易定位日志中的目标信息;根据业务需要,可以选择性地设置第二日志范围约束信息,不仅可以进一步减小需要处理的日志量,而且使得用户更容易定位日志中的目标信息。
其中,日志处理方式信息包括日志正向解析方式、日志反向解析方式等。日志正向解析方式用来解析并获得人容易理解的目标日志的内容。日志反向解析方式用来对目标日志的内容进行反向处理,获得人容易理解的目标日志的反向内容,可以在数据库数据出错等异常情况下用来对数据库数据进行恢复。
此外,还可以检测用户设置的日志处理方式信息是否合适,如果不合适,提示用户修改日志处理方式信息,如果合适,再执行后续的步骤12。例如,检测设置的时间段是否小于预设值,如果否,说明设置的信息不合适,提示用户修改时间段,使其小于预设值。又例如,检测输入的位置点或事务ID等是否存在,如果不存在,说明设置的信息不合适,提示用户修改。
图2为本公开供用户输入数据库日志处理信息的图形用户界面的一个示例的示意图。如图2所示,图形用户界面中包括:数据库名称、时段段(开始时间、结束时间)、日志处理方式(日志正向解析方式、日志反向解析方式)、查询方式(表名、关键字(如位置点))以及操作类型等。在图2中,日志处理方式及其以上的部分通常情况下可设置为必填项,日志处理方式以下的部分可设置为选填项。
在步骤12,自动地调用日志格式转换命令,将符合日志范围约束信息的第一格式日志转换为第二格式日志。
以mysql数据库为例,自动地调用mysql日志格式转换命令“mysqlbinlog”,将人不容易理解的二进制格式日志转换为人容易理解的文本格式日志。
如果日志范围约束信息仅包括第一日志范围约束信息,则将符合第一日志范围约束信息的第一格式日志转换为第二格式日志。
如果日志范围约束信息包括第一日志范围约束信息和第二日志范围约束信息,则先将符合第一日志范围约束信息的第一格式日志转换为第二格式日志,然后根据第二日志范围约束信息获取第二格式日志的子集。
在步骤13,根据日志处理方式信息对目标日志进行处理,目标日志为第二格式日志的全部或子集。
当日志处理方式信息为日志正向解析方式时,显示目标日志,还可以选择性地将目标日志另存为一个新文件。
例如,用户选择日志正向解析方式,并设置在数据库“base64”中查找开始时间为"2018-08-01 09:00:51"结束时间为"2018-08-01 11:25:01"的日志,数据库日志处理装置查找到二进制格式日志“mysql-bin.002313”,可以将其转换为文本格式日志,并显示;如果用户在此基础上又设置了操作类型为“INSERT(增加)”,则数据库日志处理装置将二进制格式日志“mysql-bin.002313”转换为文本格式日志,并且仅显示涉及“INSERT”(即在表中增加数据记录)的文本格式目标日志。
当日志处理方式信息为日志反向解析方式时,将目标日志中增删语句(即增加数据的语句和删除数据的语句)的语句类型替换为相反含义的命令类型,和/或,将目标日志中修改语句(即修改数据的语句)的语句内容替换为修改前的数据,得到目标日志的反向内容。可以向用户显示目标日志的反向内容,以便在数据库数据出错等异常情况下,用户利用目标日志的反向内容对数据库数据进行恢复。
例如,用户选择日志反向解析方式,并设置在数据库“base64”中查找开始时间为"2018-08-01 09:00:51"结束时间为"2018-08-01 11:25:01"的日志,在此基础上又设置了操作类型为“INSERT(增加)”,数据库日志处理装置先在“base64”中查找到在"2018-08-0109:00:51"与"2018-08-01 11:25:01"之间的二进制格式日志“mysql-bin.002313”,将二进制格式日志“mysql-bin.002313”转换为文本格式日志,从文本格式日志中查找涉及“INSERT”(即在表中增加数据记录)的目标日志,将目标日志中的“INSERT”替换为“DELETE(删除)”,得到目标日志的反向内容。如果用户确定“INSERT”是错误操作,则可以通过目标日志的反向内容将错误插入表中的数据从该表中删除,使得数据库恢复出错前的状态。
可理解地,如果上述示例中用户设置的操作类型为“UPDATE(修改)”,例如用户通过UPDATE语句将表x中的用户收入字段的值由“10000”修改为“20000”,则数据库日志处理装置将目标日志中的UPDATE语句的修改内容替换为“10000”,得到目标日志的反向内容,通过目标日志的反向内容,将表x中的用户收入字段的值恢复到出错前的状态。
在步骤14,统计并显示目标日志中的热点表和单位时间内的事务处理量中的至少一项。
其中,热点表例如可以是访问次数或访问频率超过预设值的表。对于热点表可以进行一些优化处理,减小访问瓶颈的影响。优化处理可以包括:优化与热点表相关的结构化查询语言(Structured Query Language,简称SQL),例如,对于建立分区的表,在SQL查询时尽量用到分区条件。优化处理还可以包括:为热点表建立缓存,业务层尽量通过缓存读取表数据,同时根据一定逻辑更新缓存。但不限于所列举的优化处理示例。
其中,单位时间内的事务处理量,可以表示系统处理能力,例如可以是每秒事务处理量(Transaction Per Second,简称TPS)。如果统计的TPS远小于系统正常处理能力,说明系统可能出现异常,需要及时排查原因,并处理,保障业务顺利进行。
上述实施例,根据用户通过图形用户界面输入的数据库日志处理信息,自动地进行数据库日志的格式转换和处理等操作,非常便利地获得人容易理解的相关日志数据,对于非专业人员和专业人员均适用。
图3为本公开数据库日志处理装置的一些实施例的结构示意图。
如图3所示,该实施例的数据库日志处理装置30包括:存储器31以及耦接至该存储器31的处理器32,处理器32被配置为基于存储在存储器31中的指令,执行前述任意一些实施例中的数据库日志处理方法。
其中,存储器31例如可以包括系统存储器、固定非易失性存储介质等。系统存储器例如存储有操作系统、应用程序、引导装载程序(Boot Loader)以及其他程序等。
本公开还提出一种非瞬时性计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现前述任意一些实施例中的数据库日志处理方法。
本领域内的技术人员应当明白,本公开的实施例可提供为方法、系统、或计算机程序产品。因此,本公开可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本公开可采用在一个或多个其中包含有计算机可用程序代码的计算机可用非瞬时性存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本公开是参照根据本公开实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解为可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
以上所述仅为本公开的较佳实施例,并不用以限制本公开,凡在本公开的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本公开的保护范围之内。