一种数据库异常处理方法和终端与流程

文档序号:13770750阅读:248来源:国知局

本发明涉及计算机技术,尤指一种数据库异常处理方法和终端。



背景技术:

数据库(database)是按照数据结构来组织、存储和管理数据的仓库,目前有很多数据库产品,如redis、memcached和oracle等。数据库存储着用户的重要信息,其重要性不言而喻,然而,业务数据量日益增长导致的数据库瘫痪;或者非法用户访问数据库等这些情况都会使得数据库处于异常状态,因此,需要对数据库进行定时监控。

目前,当监控到数据库存在异常状态时,主要通过技术人员确定数据库的异常原因。然而,技术人员确定数据库的异常原因时,需要逐一查找数据库异常位置以及确定异常处理方案,耗费时间长。



技术实现要素:

为了解决上述技术问题,本发明提供了一种数据库异常处理方法和终端,避免了人为查找数据库异常原因耗费时间长的问题,保证了数据库服务的可靠运行。

为了达到本发明目的,一方面,本发明提供了一种数据库异常处理方法,包括:

监控所述数据库的运行状态;

在所述数据库运行异常时,抓取所述数据库的日志,根据所述日志中记录的信息对所述数据库的异常进行处理。

另一方面,本发明提供了一种终端,包括:

监控模块,用于监控所述数据库的运行状态;

处理模块,用于在所述数据库运行异常时,抓取所述数据库的日志,根据所述日志中纪录的信息对所述数据库的异常进行处理。

再一方面,本发明提供了一种终端,包括:处理器和存储器,存储器用于存储执行指令;处理器调用所述执行指令,用于执行如上述实施例所述的数据库异常处理方法。

本发明提供的数据库异常处理方法和终端,通过监控数据库的运行状态,在数据库运行异常时,抓取数据库的日志,根据日志中记录的信息对数据库的异常进行处理,通过分析异常数据库的日志,智能选择处理方案,完成数据库异常处理,自动解决数据库异常问题,避免了人为查找数据库异常原因耗费时间长的问题,保证了数据库服务的可靠运行。同时,通过创建一个redis守护进程,通过守护进程监控并保证redis服务稳定运行,并提供异常故障处理机制,保障了redis服务的健壮稳定运行。

本发明的其它特征和优点将在随后的说明书中阐述,并且,部分地从说明书中变得显而易见,或者通过实施本发明而了解。本发明的目的和其他优点可通过在说明书、权利要求书以及附图中所特别指出的结构来实现和获得。

附图说明

附图用来提供对本发明技术方案的进一步理解,并且构成说明书的一部分,与本申请的实施例一起用于解释本发明的技术方案,并不构成对本发明技术方案的限制。

图1为本发明实施例提供的数据库异常处理方法的流程图;

图2为本发明实施例一提供的终端的结构示意图;

图3为本发明实施例二提供的终端的结构示意图。

具体实施方式

为使本发明的目的、技术方案和优点更加清楚明白,下文中将结合附图对本发明的实施例进行详细说明。需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互任意组合。

在附图的流程图示出的步骤可以在诸如一组计算机可执行指令的计算机系统中执行。并且,虽然在流程图中示出了逻辑顺序,但是在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤。

图1为本发明实施例提供的数据库异常处理方法的流程图,如图1所示,本发明实施例提供的数据库异常处理方法,包括:

s101:监控数据库的运行状态。

具体的,本发明实施例的执行主体是终端,终端定时监控redis、memcached和oracle等数据库的运行状态。

可选的,数据库异常处理方法由数据库守护进程执行。

具体的,可以通过创建守护进程来监控redis、memcached或oracle等数据库的运行状态。比如,对redis数据库可以通过创建redis守护进程,使用redis进程命令判断redis数据库的正常运行;对oracle数据库可以通过创建oracle守护进程,使用oracle进程命令判断oracle的正常运行。本发明实施例主要以redis数据库的异常处理为例进行阐述,memcached和oracle等数据库的异常处理与redis数据库的异常处理的实现原理和实现效果类似,本发明实施例在此不进行一一赘述。

其中,守护进程(daemon)是一种运行在后台的一种特殊的进程,它独立于控制终端并且周期性的执行某种任务或等待处理某些发生的事件。由于在linux中,每个系统与用户进行交流的界面成为终端,每一个从此终端开始运行的进程都会依附于这个终端,这个终端被称为这些进程的控制终端,当控制终端被关闭的时候,相应的进程都会自动关闭。但是守护进程却能突破这种限制,它脱离于终端并且在后台运行,并且它脱离终端的目的是为了避免进程在运行的过程中的信息在任何终端中显示并且进程也不会被任何终端所产生的终端信息所打断。它从被执行的时候开始运转,直到整个系统关闭才退出(可以认为杀死相应的守护进程)。

s102:在数据库运行异常时,抓取数据库的日志,根据日志中记录的信息对数据库的异常进行处理。

具体的,redis数据库可以提供服务状态查看,redis守护进程定时监控redis数据库的服务状态,在redis数据库的服务状态异常时,redis守护进程抓取redis数据库的日志,对日志进行分析,根据日志中记录的信息对数据库的异常进行处理。

redis守护进程对日志进行,分析根据日志中记录的信息对数据库的异常进行处理可以通过以下方法:通过建立故障知识库,根据日志中记录的信息查找故障知识库对数据库的异常进行处理。具体的,故障知识库中可以存储故障对应的故障类型和故障位置,redis守护进程根据日志中记录的信息查找故障知识库确定故障类型和故障位置,根据故障类型和故障位置确定数据库异常的处理方案,执行该处理方案以对数据库的异常进行处理;故障知识库中也可以直接存储着故障对应的故障处理方案,redis守护进程直接根据日志中记录的信息查找故障知识库确定故障处理方案,执行该处理方案以对数据库的异常进行处理。

本发明实施例提供的数据库异常处理方法,通过监控数据库的运行状态,在数据库运行异常时,抓取数据库的日志,根据日志中记录的信息对数据库的异常进行处理,通过分析异常数据库的日志,智能选择处理方案,完成数据库异常处理,自动解决数据库异常问题,避免了人为查找数据库异常原因耗费时间长的问题,保证了数据库服务的可靠运行。同时,通过创建一个redis守护进程,通过守护进程监控并保证redis服务稳定运行,并提供异常故障处理机制,保障了redis服务的健壮稳定运行。

需要说明的是,本发明实施例提供的数据库异常处理方法并不仅限于对数据库的异常进行处理,对于其他的以redis、、memcached或oracle等数据库作为内存数据库及缓存数据处理的系统中也可以使用本发明实施例提供的数据库异常处理方法。

进一步地,在图1所示实施例中,抓取数据库的日志,根据日志中记录的信息对数据库进行处理,包括:

抓取日志中的关键词;根据关键词查找故障知识库,获取与所述关键词匹配的故障处理方案;采用所述故障处理方案对所述数据库的异常进行处理。

具体的,在数据库异常时,redis守护进程对日志进行分析,一是关键词抓取,根据日志中记录的信息抓取日志中的关键词,比如“error”“errorlog”“configerror”“logfile”“oomcommandnotallowedwhenusedmemory”等关键词语的后续日志。二是匹配故障知识库,根据关键词查找故障知识库,将关键词与故障知识库匹配,对处理方案进行分析,选择合适的处理方法对数据库的异常进行处理,比如强制停止redis快照导致,redis运行用户没有权限写rdb文件或者磁盘空间满了,redis守护进程可以使用执行“configsetstop-writes-on-bgsave-errorno”命令进行解决。“(error)oomcommandnotallowedwhenusedmemory”是指设置了maxmemory的选项,redis内存使用达到上限,redis守护进程可以通过设置lru算法来删除部分key,释放空间。

本发明实施例提供的数据库异常处理方法,在上述实施例的基础上,通过redis守护进程在redis服务出现异常时,分析log日志,抓取关键信息并匹配故障知识库,智能选择处理方法,完成故障异常处理,保障了redis服务的健壮稳定运行。

进一步地,在图1所示实施例中,监控数据库的运行状态,包括:

定时获取数据库的进程号;若获取到进程号,则确定数据库运行正常;否则,确定数据库运行异常。

具体的,本发明实施例通过创建redis守护进程,使用redis进程命令查看redis进程是否存在来判断redis的正常运行。命令如下:/etc/init.d/redis-serverstatus。当redis进程号能获取到说明redis运行正常,停止本次监控,如果获取不到,说明redis服务异常。

本发明实施例提供的数据库异常处理方法,在上述实施例的基础上,通过定时获取数据库的进程号,以实现监控数据库的运行状态,从而保障数据库服务的健壮稳定运行。

进一步地,在图1所示实施例中,对数据库的异常进行处理之后,数据库异常处理方法还包括:重启数据库,并继续监控数据库的运行状态。

具体的,对数据库的异常处理完成后再次重启redis,如果redis正常,停止。如果redis异常,继续返回图1中的s101,重复该过程,直至redis运行正常。

本发明实施例提供的数据库异常处理方法,在上述实施例的基础上,对数据库的异常处理完成后再次重启redis,以确保对数据库的异常进行有效处理,避免重启后数据库异常依然存在,从而保障数据库服务的健壮稳定运行。

进一步地,在图1所示实施例中,抓取数据库的日志之前,数据库异常处理方法还包括:重启数据库;在数据库重启失败时,再抓取数据库的日志。

具体的,当redis服务异常时,比如redis服务异常停止,首先执行redis重启命令:/etc/init.d/redis-serverrestart。查看重启结果,如果重启成功,停止。如果重启失败,抓取redis的log日志,进行log日志的分析。

本发明实施例提供的数据库异常处理方法,在上述实施例的基础上,在数据库异常时先重启,以避免数据库异常是系统对数据库服务的误判断,从而保障数据库服务的健壮稳定运行。

图2为本发明实施例一提供的终端的结构示意图,如图2所示,本发明实施例提供的终端,包括:监控模块21和处理模块22。

监控模块21,用于监控所述数据库的运行状态;

处理模块22,用于在所述数据库运行异常时,抓取所述数据库的日志,根据所述日志中纪录的信息对所述数据库的异常进行处理。

本发明实施例提供的终端用于执行图1所示方法实施例的技术方案,其实现原理和实现效果类似,此处不再赘述。

进一步地,所述处理模块22抓取所述数据库的日志,根据所述日志中记录的信息对所述数据库的异常进行处理,包括:

抓取所述日志中的关键词;

根据所述关键词查找故障知识库,获取与所述关键词匹配的故障处理方案;

采用所述故障处理方案对所述数据库的异常进行处理。

进一步地,所述监控模块21监控所述数据库的运行状态,包括:

定时获取所述数据库的进程号;

若获取到所述进程号,则确定所述数据库运行正常;

否则,确定所述数据库运行异常。

进一步地,所述终端还包括:重启模块;

所述重启模块,用于所述处理模块22对所述数据库的异常进行处理之后,重启所述数据库。

所述监控模块21,还用于在所述重启模块重启后,继续监控所述数据库的运行状态。

进一步地,所述重启模块,还用于所述处理模块22抓取所述数据库的日志之前,重启所述数据库。

所述处理模块22,还用于在所述重启模块重启所述数据库失败时,抓取所述数据库的日志。

图3为本发明实施例二提供的终端的结构示意图,如图3所示,本发明实施例提供的终端包括:存储器31和处理器32。

存储器31用于存储执行指令,处理器32可以是一个中央处理器(centralprocessingunit,cpu),或者是特定集成电路(applicationspecificintegratedcircuit,asic),或者完成实施本发明实施例的一个或多个集成电路。当基站运行时,处理器32与存储器31之间通信,处理器32调用执行指令,用于执行以下操作:

监控所述数据库的运行状态;

在所述数据库运行异常时,抓取所述数据库的日志,根据所述日志中记录的信息对所述数据库的异常进行处理。

进一步地,处理器32抓取所述数据库的日志,根据所述日志中记录的信息对所述数据库进行处理,包括:

抓取所述日志中的关键词;

根据所述关键词查找故障知识库,获取与所述关键词匹配的故障处理方案;

采用所述故障处理方案对所述数据库的异常进行处理。

进一步地,处理器32监控所述数据库的运行状态,包括:

定时获取所述数据库的进程号;

若获取到所述进程号,则确定所述数据库运行正常;

否则,确定所述数据库运行异常。

进一步地,处理器32还用于:

对所述数据库的异常进行处理之后,重启所述数据库,并继续监控所述数据库的运行状态。

进一步地,处理器32还用于:

抓取所述数据库的日志之前,重启所述数据库;在所述数据库重启失败时,再抓取所述数据库的日志。

虽然本发明所揭露的实施方式如上,但所述的内容仅为便于理解本发明而采用的实施方式,并非用以限定本发明。任何本发明所属领域内的技术人员,在不脱离本发明所揭露的精神和范围的前提下,可以在实施的形式及细节上进行任何的修改与变化,但本发明的专利保护范围,仍须以所附的权利要求书所界定的范围为准。

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