数据库过载保护处理方法和装置、存储介质与流程

文档序号:25543554发布日期:2021-06-18 20:40
数据库过载保护处理方法和装置、存储介质与流程

本公开涉及通信领域,特别涉及一种数据库过载保护处理方法和装置、存储介质。



背景技术:

数据库是利用一定数据结构来组织、存储和管理数据的系统,它在信息系统中发挥十分重要的作用。在系统运维中,数据库的故障经常会引起信息系统全局性故障。如何确保数据库稳定高效运行,是每个dba(databaseadministrator,数据库管理员)面临的首要问题。

在数据库故障中,有很大部分原因是数据库过载导致的,数据库过载是指数据库资源消耗超过一定限度,从而导致数据库可用性降低。数据库过载的主要表现有客户端连接不上数据库、数据库响应慢等,引起数据库过载的因素主要有服务器cpu(centralprocessingunit,中央处理器)负载高、数据库i/o(input/output,输入输出接口)压力大、数据库服务器内存不足、数据库连接数超过限制、网络带宽不足、应用程序bug(漏洞)、应用sql(structuredquerylanguage,结构化查询语言)效率低等。如果不及时监测到数据库过载情况,并采取有效控制措施,会引起数据库资源进一步不足,甚至出现数据库宕机。



技术实现要素:

鉴于以上技术问题中的至少一项,本公开提供了一种数据库过载保护处理方法和装置、存储介质,可以提高数据库过载监控的及时性。

根据本公开的一个方面,提供一种数据库过载保护处理方法,包括:

根据配置文件中的过载监控指标,实时采集目标数据库信息;

根据目标数据库信息,判断目标数据库信息是否触发过载门限;

在目标数据库信息触发过载门限的情况下,根据配置文件中的过载控制规则对目标数据库进行过载控制。

在本公开的一些实施例中,所述数据库过载保护处理方法还包括:

预先设置配置文件,其中,所述配置文件包括不同数据库类型的过载监控指标和过载控制规则。

在本公开的一些实施例中,所述在目标数据库信息触发过载门限的情况下,根据配置文件中的过载控制规则对目标数据库进行过载控制包括:

采集目标数据库中消耗资源量大于预定阈值的慢结构化查询语言信息,根据慢结构化查询语言信息确定过载进程号;

对所述过载进程号的过载进程,执行清理动作。

在本公开的一些实施例中,所述在目标数据库信息触发过载门限的情况下,根据配置文件中的过载控制规则对目标数据库进行过载控制还包括:

记录过载清理日志,并将过载清理日志通知给相关维护人员。

在本公开的一些实施例中,对于mysql数据库而言,所述采集目标数据库中消耗资源量大于预定阈值的慢结构化查询语言信息包括:

采用mysql异常连接日志,来定位慢结构化查询语言信息。

在本公开的一些实施例中,对于mysql数据库而言,所述过载控制规则包括:

在mysql异常连接日志出现第一数量的连接过多错误或者第二数量的连接不上错误的情况下,定位慢结构化查询语言信息,进而确定过载进程号,进行过载清理。

在本公开的一些实施例中,所述对所述过载进程号的过载进程,执行清理动作包括:

过滤查询语句,过滤特定异常事件对应的进程,第一步小规模清理局部进程;

如果数据库过载情况未有改善,采取进一步措施,扩大进程清理范围。

在本公开的一些实施例中,对于oracle数据库而言,所述采集目标数据库中消耗资源量大于预定阈值的慢结构化查询语言信息,根据慢结构化查询语言信息确定过载进程号包括:

对oracle数据库引起过载的异常事件进行分类;

判断资源使用率是否达到指定门限,所述资源使用率包括cpu、内存、交换区资源使用率;

在资源使用率达到指定门限的情况下,确定过载进程号。

根据本公开的另一方面,提供一种数据库过载保护处理装置,包括:

过载监控模块,用于根据配置文件中的过载监控指标,实时采集目标数据库信息;根据目标数据库信息,判断目标数据库信息是否触发过载门限;

过载控制与保护模块,用于在目标数据库信息触发过载门限的情况下,根据配置文件中的过载控制规则对目标数据库进行过载控制。

在本公开的一些实施例中,所述数据库过载保护处理用于执行实现如上述任一实施例所述的数据库过载保护处理方法的操作。

根据本公开的另一方面,提供一种数据库过载保护处理装置,包括:

存储器,用于存储指令;

处理器,用于执行所述指令,使得所述装置执行实现如上述任一实施例所述的数据库过载保护处理方法的操作。

根据本公开的另一方面,提供一种计算机可读存储介质,其中,所述计算机可读存储介质存储有计算机指令,所述指令被处理器执行时实现如上述任一实施例所述的数据库过载保护处理方法。

本公开可以提高数据库过载监控的及时性,提高数据库过载控制的有效性。

附图说明

为了更清楚地说明本公开实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本公开的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1为本公开数据库过载保护处理方法一些实施例的示意图。

图2为本公开数据库过载保护处理方法另一些实施例的示意图。

图3为本公开数据库过载保护处理方法又一些实施例的示意图。

图4为本公开数据库过载保护处理方法又一些实施例的示意图。

图5为本公开数据库过载保护处理装置一些实施例的示意图。

图6为本公开数据库过载保护处理装置另一些实施例的示意图。

具体实施方式

下面将结合本公开实施例中的附图,对本公开实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本公开一部分实施例,而不是全部的实施例。以下对至少一个示例性实施例的描述实际上仅仅是说明性的,决不作为对本公开及其应用或使用的任何限制。基于本公开中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本公开保护的范围。

除非另外具体说明,否则在这些实施例中阐述的部件和步骤的相对布置、数字表达式和数值不限制本公开的范围。

同时,应当明白,为了便于描述,附图中所示出的各个部分的尺寸并不是按照实际的比例关系绘制的。

对于相关领域普通技术人员已知的技术、方法和设备可能不作详细讨论,但在适当情况下,所述技术、方法和设备应当被视为授权说明书的一部分。

在这里示出和讨论的所有示例中,任何具体值应被解释为仅仅是示例性的,而不是作为限制。因此,示例性实施例的其它示例可以具有不同的值。

应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步讨论。

发明人通过研究发现:针对数据库过载问题,相关技术采取以下三种处理方式:

第一、服务降级:在高峰期,通过业务控制或者人为管理介入,限制只有部分重点业务可用,其他边缘非重点业务暂停或者错峰处理,控制数据库负载,不出现过载情况。

第二、业务限流:在信息系统中间件层设置一种资源高水位限制,比如在中间件服务器上设置请求数的高水位限制,某一时间段内的请求数超过设定的某个阈值,即拦截该请求,输出系统繁忙页面,保证前端异常压力不传递到数据库,控制数据库负载。

第三、数据库监控并人工处理:在数据库端引入监控系统,周期性对数据库进行采样监控,评估数据库综合性能指标,建立监控告警机制,数据库管理员收到告警后,人工介入进行判断和处理。

以上第一种技术采用服务降级的方式,首先需要区分业务高峰和低谷,区分重点业务和非重点业务,才能做到过载保护。但是如果重点业务在业务高峰期就会引起数据库过载,就不能采用该方法达到数据库过载保护效果。

以上第二种技术采用中间件限流方式,一般通过设置中间件请求数量,限制中间件负载流量,但是对于数据库之间互联访问或者数据本身存储过程等程序是不经过中间件的,这部分负载导致的过载不能通过这种限流方式得到保护。

以上第三种技术是采用数据库监控系统,监控和告警准确性依赖于指标合理性及采集数据的及时性,dba收到告警后还需要一定响应时间,登录系统查看各种信息后,进行分析判断,做出应急处理。但是,当出现数据库触发过载报警时,负载上升与资源紧张两种因素往往相互作用,短时间内加剧数据库过载的状况,留给dba人工介入处理的时间非常短,难以有效应对数据库过载的情况。

总之,以上三种技术通过各种不同方式,在解决数据库过载保护的问题上有一定效果,但是都存在不同程度的缺陷和不足,过载监控覆盖不全面,缺乏有效的过载保护控制,不能及时过载保护,比如,如果应用sql语句效率低,出现大量慢sql,同时并发sql不断涌入,如果不及时采取过载保护,在短时间内数据库的连接数达到最大值或者数据库的i/o资源、cpu资源消耗光,最终导致整个数据库挂死或者宕机,局部错误经过业务高峰压力快速放大,迅速把影响扩大为全局数据库系统的问题。由于分布式数据库单节点处理能力较弱,所以以上现象在分布式数据库中尤为明显。

发明人通过研究发现:相关技术对于信息系统过载控制主要在中间件层采用限流或者服务降级的方式实现,在数据库端的过载异常主要以监控为主,在数据库端过载控制存在不及时的不足。

针对相关技术主流的数据库监控系统在数据库过载保护上存在的各种不足,本公开上述实施例提出一种数据库过载保护处理方法与装置,下面通过具体实施例对本公开进行说明。

图1为本公开数据库过载保护处理方法一些实施例的示意图。优选的,本实施例可由本公开数据库过载保护处理装置执行。该方法包括以下步骤:

步骤11,根据配置文件中的过载监控指标,实时采集目标数据库信息。

步骤12,根据目标数据库信息,判断目标数据库信息是否触发过载门限。

步骤13,在目标数据库信息触发过载门限的情况下,根据配置文件中的过载控制规则对目标数据库进行过载控制。

在本公开的一些实施例中,所述根据配置文件中的过载控制规则对目标数据库进行过载控制的步骤可以包括:过载控制规则是按照过载干预可能导致信息系统的影响程度确定过载保护干预步骤的优先级,影响程度小的先做,如果没有效果,逐步实施程度较大的步骤。

基于本公开上述实施例提供的数据库过载保护处理方法,采用数据库端的过载波保护方案,对应用程序透明、无侵入。提出一种数据库过载的监控方法和一种数据库过载保护的控制方法,可提高数据库过载监控的及时性,提高数据库过载控制的有效性。

图2为本公开数据库过载保护处理方法另一些实施例的示意图。优选的,本实施例可由本公开数据库过载保护处理装置执行。该方法包括以下步骤:

步骤21,预先设置配置文件,其中,所述配置文件可以包括不同数据库类型的过载监控指标和过载控制规则。

在本公开的一些实施例中,步骤21可以包括:配置文件保存数据和主机采集指标,这些指标可根据系统管理员经验或新版本新特性增补指标值。配置文件包括了采集监控规则和过载控制规则两部分,采集监控规则部分中通过可设置该指标是否需要进行信息采集和后续的过载控制。过载控制规则部分对每个指标分别设置不同阀值,当采集数据达到预定阀值时启动过载保护流程。

在本公开的一些实施例中,步骤21可以包括:设置配置文件,配置数据过载监控的各类对象及相关指标,通过设置监控指标的值来确定是否采集该指标信息,是否进行该指标对应的过载控制动作。

步骤22,采集主机信息,其中,所述主机信息包括主机的数据库类型、cpu使用率、内存使用率和交换区使用率,用于后续步骤与其他指标进行综合评估。

步骤23,慢sql采集分析。

在本公开的一些实施例中,步骤23可以包括:采集目标数据库中消耗资源量大于预定阈值的慢结构化查询语言信息。

在本公开的一些实施例中,步骤23可以包括:采用mysql异常连接日志,来定位慢结构化查询语言信息。

在本公开的一些实施例中,步骤23可以包括:采集数据库中消耗资源最多的慢sql,慢sql的门限值在配置文件中设置。

在本公开的一些实施例中,不同数据库对慢sql的分析方法不同。

在本公开的一些实施例中,对于mysql(一种关系型数据库管理系统)而言,步骤23可以包括:采用慢日志来定位慢sql。

在本公开的另一些实施例中,对于oracle(另一种关系型数据库管理系统)而言,步骤23可以包括:用活跃会话历史v$active_session_history与v$sql进行关联,过滤会话类型为前台(session_type='foreground')的连接,取最近两分钟会话session集合,把会话类型为在cpu上的session_state='oncpu'的会话数(session数)进行累加,得到数据库请求时间总和db_time_total,数据库请求时间总和db_time_total排序后取出前50条会话(top50条session),由数据库请求时间总和db_time_total除以不同会话数量得到单条sql的执行时间single_sql_times,根据single_sql_times确定慢sql。

步骤24,根据慢结构化查询语言信息确定过载进程号。

在本公开的一些实施例中,步骤24可以包括:为了不影响数据安全和事务的有效性,上一步提取的慢sql中,取出查询语句select类型sql,关联v$process(oracle数据库而言)或者进程列表processlist(mysql数据库而言),确定过载进程号。

步骤25,对所述过载进程号的过载进程,执行清理动作。

在本公开的一些实施例中,步骤25可以包括:把过载进程号传递给主机的kill命令,执行清理动作。

在本公开的一些实施例中,步骤25可以包括:过滤查询语句,过滤特定异常事件对应的进程,第一步小规模清理局部进程;如果数据库过载情况未有改善,采取进一步措施,扩大进程清理范围。

步骤26,记录过载清理日志,并将过载清理日志通过短信或者邮件通知给相关维护人员。

在本公开的一些实施例中,对oracle和mysql异常连接和异常事件进行过载监控分析和过载清理方法不一样。

下面通过具体实施例对oracle和mysql异常连接和异常事件进行过载监控分析和过载清理方法进行具体说明。

图3为本公开数据库过载保护处理方法又一些实施例的示意图。优选的,本实施例可由本公开数据库过载保护处理装置执行。对于mysql数据库而言,本公开过载监控分析和过载清理方法(例如图2实施例的步骤22-步骤25的数据库过载保护处理方法)可以包括以下步骤:

步骤31,在mysql异常连接日志出现第一数量的连接过多错误或者第二数量的连接不上错误的情况下,定位慢结构化查询语言信息,进而确定过载进程号。

在本公开的一些实施例中,步骤31可以包括:对于mysql的异常连接,导致连接反馈的是2013错误(连接不上)或者1040错误(连接过多)的原因不同。采用的过载控制规则是出现一次1040错误或者10次2013错误时就调用过载清理脚本执行清理工作。

步骤32,过滤查询语句,过滤特定异常事件对应的进程,第一步小规模清理局部进程。

在本公开的一些实施例中,步骤32可以包括:先通过processlist取出infolike'select%'、command!='sleep'并且time>=30秒的进程,调用清理脚本进行过载进程的清理。

步骤33,如果数据库过载情况未有改善,采取进一步措施,扩大进程清理范围。

在本公开的一些实施例中,步骤33可以包括:如果仍然过载,则采取进一步过载清理措施,把processlist中符合time>=30秒andcommand='sleep'的前300条进程取出后,调用清理脚本,执行过载进程清理。

图4为本公开数据库过载保护处理方法又一些实施例的示意图。优选的,本实施例可由本公开数据库过载保护处理装置执行。对于oracle数据库而言,本公开过载监控分析和过载清理方法(例如图2实施例的步骤22-步骤25的数据库过载保护处理方法)可以包括以下步骤:

步骤41,对oracle数据库引起过载的异常事件进行分类。

在本公开的一些实施例中,步骤41可以包括:对于oracle的异常事件,主要包括latch类、enq锁、内存锁、rac热块等相关异常事件,通过关联v$session与v$sqlarea,取出符合配置文件中的oracle异常等待事件,每个等待事件有对应的异常数量门限,再取出查询语句select类型sql,关联v$process获得进程号。

步骤42,判断资源使用率是否达到指定门限,所述资源使用率包括cpu、内存、交换区资源使用率。

步骤43,在资源使用率达到指定门限的情况下,确定过载进程号。

在本公开的一些实施例中,步骤43可以包括:关联图2实施例中共步骤22采集的主机cpu、内存、交换区资源使用情况,如果这些资源使用率达到配置文件指定的门限,则调用清理脚本,执行过载进程的清理。步骤43清理的是特定异常事件对应的特定进程。

基于本公开上述实施例提供的数据库过载保护处理方法,提供了一种数据库过载的监控方法。

本公开上述实施例的数据库过载监控方法,设置配置文件,配置数据过载监控的各类对象及相关指标,通过设置监控指标的值来确定是否采集该指标信息,是否进行该指标对应的过载控制动作。

本公开上述实施例的数据库过载监控方法,对于oracle数据库,通过关联v$active_session_history与v$sql,实时计算慢sql,定位消耗资源的进程。

本公开上述实施例的数据库过载监控方法,对不同数据库采用不同过载异常连接和异常事件的监控方式,mysql数据库通过分析连接异常产生机理,监测日志2013错误号和1040错误号,检测到连接异常的情况。对oracle数据库引起过载的异常事件进行分类,分为latch类、enq锁、内存锁、rac热块等,并综合cpu、内存、交换区资源使用率情况,综合分析后,得出过载进程。

基于本公开上述实施例提供的数据库过载保护处理方法,提供了一种数据库过载保护控制方法。

本公开上述实施例的数据库过载保护控制方法,通过配置文件,灵活配置过载保护的控制规则,不同控制事件对应不同触发门限,并且可以通过配置文件屏蔽某个事件的过载保护干预。

本公开上述实施例的数据库过载保护控制方法,采用影响程度递进的方式分阶段实施,尽量减少过载控制清理带来的影响,mysql异常连接采用的过载控制规则是出现一次1040错误或者10次2013错误时就调用过载清理脚本执行清理工作。先清理select并且慢sql对应的进程,如果无效果,则采取进一步过载清理措施,清理执行时间超过30秒的前300条语句对应进程。

本公开上述实施例采用数据库端的过载保护方案,对应用程序透明、无侵入。本公开上述实施例提出一种数据库过载的监控方法和一种数据库过载保护的控制方法和装置,可提高数据库过载监控的及时性,提高数据库过载控制的有效性。

本公开上述实施例数据库过载监控的资源指标、监控对象通过配置文件方式实现可配置,并且兼容目前主流的不同数据库类型。

本公开上述实施例在配置文件中可灵活配置数据库过载控制规则,每个监控指标配置不同的控制规则,过载保护控制规则充分考虑到数据安全性,尽量降低过载清理对数据库可用性的影响程度,在定位过载进程时,首先过滤查询语句,过滤特定异常事件对应的进程,第一步小规模清理局部进程,如果数据库过载情况未有改善,采取进一步措施,扩大清理范围。

本公开上述实施例在it系统的数据库运维、it系统数据库高可用性设计等方面可有广泛应用。

图5为本公开数据库过载保护处理装置一些实施例的示意图。本公开数据库过载保护处理装置可以包括过载监控模块51和过载控制与保护模块52,其中:

过载监控模块51,用于根据配置文件中的过载监控指标,实时采集目标数据库信息;根据目标数据库信息,判断目标数据库信息是否触发过载门限。

过载控制与保护模块52,用于在目标数据库信息触发过载门限的情况下,根据配置文件中的过载控制规则对目标数据库进行过载控制。

在本公开的一些实施例中,本公开数据库过载保护处理装置还可以用于预先设置配置文件,其中,所述配置文件包括不同数据库类型的过载监控指标和过载控制规则。

在本公开的一些实施例中,过载监控模块51可以用于采集目标数据库中消耗资源量大于预定阈值的慢结构化查询语言信息,根据慢结构化查询语言信息确定过载进程号;之后,过载控制与保护模块52可以用于对所述过载进程号的过载进程,执行清理动作。

在本公开的一些实施例中,在本公开的一些实施例中,本公开数据库过载保护处理装置还可以用于记录过载清理日志,并将过载清理日志通知给相关维护人员。

在本公开的一些实施例中,对于mysql数据库而言,过载监控模块51可以用于采用mysql异常连接日志,来定位慢结构化查询语言信息。

在本公开的一些实施例中,对于mysql数据库而言,所述过载控制规则可以包括:在mysql异常连接日志出现第一数量的连接过多错误或者第二数量的连接不上错误的情况下,定位慢结构化查询语言信息,进而确定过载进程号,进行过载清理。

在本公开的一些实施例中,过载控制与保护模块52可以用于过滤查询语句,过滤特定异常事件对应的进程,第一步小规模清理局部进程;如果数据库过载情况未有改善,采取进一步措施,扩大进程清理范围。

在本公开的一些实施例中,数据库过载保护处理装置可以用于对于oracle数据库而言,对oracle数据库引起过载的异常事件进行分类;判断资源使用率是否达到指定门限,所述资源使用率包括cpu、内存、交换区资源使用率;在资源使用率达到指定门限的情况下,确定过载进程号。

在本公开的一些实施例中,所述数据库过载保护处理用于执行实现如上述任一实施例(例如图1-图4任一实施例)所述的数据库过载保护处理方法的操作。

基于本公开上述实施例提供的数据库过载保护处理装置,在数据库端增加过载保护代理程序,代理程序包括两个部分,一个是过载监控模块,另一个是过载控制与保护模块。本公开上述实施例为了兼容不同类型数据库,设置一个配置文件,配置文件包括不同主流数据库类型的过载监控指标及过载控制策略。过载监控模块根据配置文件中的监控指标,实时采集目标数据库的信息,运用过载模型分析是否过载,如果触发过载门限,调度程序根据配置文件中的过载控制规则进行过载控制,过载控制规则是按照过载干预可能导致信息系统的影响程度确定过载保护干预步骤的优先级,影响程度小的先做,如果没有效果,逐步实施程度较大的步骤,目的是尽量减少过载保护干预对数据库的影响面,提升系统的整体可用性。

图6为本公开数据库过载保护处理装置另一些实施例的示意图。本公开数据库过载保护处理装置可以包括存储器61和处理器62,其中:

存储器61,用于存储指令。

处理器62,用于执行所述指令,使得所述装置执行实现如上述任一实施例(例如图1-图4任一实施例)所述的数据库过载保护处理方法的操作。

本公开上述实施例可以把数据库端局部资源过载有效监控并及时控制,不至于扩展到全局数据库系统,从而避免了整体数据库发生过载情况,保障了数据库系统的整体可用性。主要包括以下两点:

本公开上述实施例提出一种数据库过载的监控装置,可以提高数据库过载感知监控的及时性和有效性。

本公开上述实施例提出一种数据库过载保护的控制装置,可以提高数据库过载保护控制的及时性。

根据本公开的另一方面,提供一种计算机可读存储介质,其中,所述计算机可读存储介质存储有计算机指令,所述指令被处理器执行时实现如上述任一实施例(例如图1-图4任一实施例)所述的数据库过载保护处理方法。

基于本公开上述实施例提供的计算机可读存储介质,采用数据库端的过载波保护方案,对应用程序透明、无侵入,可以提高数据库过载监控的及时性,可以提高数据库过载控制的有效性。

在上面所描述的数据库过载保护处理装置可以实现为用于执行本申请所描述功能的通用处理器、可编程逻辑控制器(plc)、数字信号处理器(dsp)、专用集成电路(asic)、现场可编程门阵列(fpga)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件或者其任意适当组合。

至此,已经详细描述了本公开。为了避免遮蔽本公开的构思,没有描述本领域所公知的一些细节。本领域技术人员根据上面的描述,完全可以明白如何实施这里公开的技术方案。

本领域普通技术人员可以理解实现上述实施例的全部或部分步骤可以通过硬件来完成,也可以通过程序来指示相关的硬件完成,所述的程序可以存储于一种计算机可读存储介质中,上述提到的存储介质可以是只读存储器,磁盘或光盘等。

本公开的描述是为了示例和描述起见而给出的,而并不是无遗漏的或者将本公开限于所公开的形式。很多修改和变化对于本领域的普通技术人员而言是显然的。选择和描述实施例是为了更好说明本公开的原理和实际应用,并且使本领域的普通技术人员能够理解本公开从而设计适于特定用途的带有各种修改的各种实施例。

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