一种故障处理的方法及装置制造方法
【专利摘要】本发明实施例提供一种故障处理的方法及装置,该方法包括:获取状态检测参数,所述状态检测参数包括待处理事件的个数或数据库实例状态;当所述状态检测参数包括待处理事件的个数,且根据所述待处理事件的个数检测出数据库当前状态为性能故障状态时,切换用户模式并重新启动数据库;当所述状态检测参数包括数据库实例状态,且根据所述数据库实例状态检测出所述数据库当前状态为宕机故障状态时,重新启动所述数据库。本发明实施例能够实现自动检测故障并从故障状态中恢复,提高数据库的处理效率和可用性。
【专利说明】一种故障处理的方法及装置
【技术领域】
[0001]本发明涉及数据处理【技术领域】,具体涉及一种故障处理的方法及装置。
【背景技术】
[0002]Informix数据库是一个在线联机交易处理系统的专业的关系型数据产品,因其具有简单、高效和易扩展等特性,被广泛应用于开放平台交易系统。但是一旦其发生故障就会严重影响数据库的运行速度,甚至会出现实例宕机的情况,并且自身无法预测故障及恢复,需要人工操作去查找故障原因并恢复,这样就浪费了大量的时间,降低了数据库的可用性。
【发明内容】
[0003]本发明实施例提供一种故障处理的方法及装置,能够自动检测故障并恢复,提高数据库的处理效率和可用性。
[0004]本发明实施例第一方面提供一种故障处理的方法,包括:
[0005]获取状态检测参数,所述状态检测参数包括待处理事件的个数或数据库实例状态;
[0006]当所述状态检测参数包括待处理事件的个数,且根据所述待处理事件的个数检测出数据库当前状态为性能故障状态时,切换用户模式并重新启动数据库;
[0007]当所述状态检测参数包括数据库实例状态,且根据所述数据库实例状态检测出所述数据库当前状态为宕机故障状态时,重新启动所述数据库。
[0008]本发明实施例第二方面提供一种故障处理的装置,包括:
[0009]获取单元,用于获取状态检测参数,所述状态检测参数包括待处理事件的个数或数据库实例状态;
[0010]第一重启单元,用于当所述状态检测参数包括待处理事件的个数,且根据所述待处理事件的个数检测出数据库当前状态为性能故障状态时,切换用户模式并重新启动数据库;
[0011]第二重启单元,用于当所述状态检测参数包括数据库实例状态,且根据所述数据库实例状态检测出所述数据库当前状态为宕机故障状态时,重新启动所述数据库。
[0012]本发明实施例通过获取状态检测参数,根据所述状态检测参数确定数据库当前状态的故障类型并根据故障类型重新启动数据库,恢复数据库的正常运行,实现了自动检测故障并从故障状态中恢复,提高了数据库的处理效率和可用性。
【专利附图】
【附图说明】
[0013]为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
[0014]图1为本发明实施例提供的一种故障处理的方法的流程示意图;
[0015]图2为本发明实施例提供的另一种故障处理的方法的流程示意图;
[0016]图3为本发明实施例提供的另一种故障处理的方法的流程示意图;
[0017]图4为本发明实施例提供的另一种故障处理的方法的流程示意图;
[0018]图5为本发明实施例提供的一种故障处理的装置的结构示意图;
[0019]图6为本发明实施例提供的另一种故障处理的装置的结构示意图;
[0020]图7为本发明实施例提供的另一种故障处理的装置的结构示意图;
[0021]图8为本发明实施例提供的另一种故障处理的装置的结构示意图。
【具体实施方式】
[0022]下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
[0023]本发明实施例中的故障处理的方法和装置是针对Informix数据库设计的,实施例中所提到的数据库即为Informix数据库。本发明实施例中的管理端可以为管理Informix数据库的管理操作员,也可以为管理Informix数据库的终端。
[0024]下面将结合附图1-附图4,对本发明实施例提供的故障处理的方法进行详细介绍。
[0025]请参见图1,为本发明实施例提供的一种故障处理的方法的流程示意图;该方法可包括以下步骤SlOl-步骤S103。
[0026]SlOl,获取状态检测参数,所述状态检测参数包括待处理事件的个数或数据库实例状态。
[0027]具体地,获取正在运行的数据库的状态检测参数,所述状态检测参数包括待处理事件的个数或数据库实例状态。其中,所述待处理事件的个数为所述正在运行的数据库中等待处理的事件的个数,在Informix数据库中为ready队列的长度,若所述待处理事件的个数异常,将会导致数据库运行速度缓慢、性能降低。所述数据库实例状态为所述数据库中正在运行的实例状态,当所述数据库实例状态处于online状态时表明所述数据库实例状态为正常运行状态,当所述数据库实例状态未处于online状态时表明所述数据库实例状态为异常运行状态,若所述数据库实例状态处于异常状态将引起数据库宕机。现有技术中的数据库只是一味地执行命令,无法检测状态以致数据库出现故障时便停止运行,通过获取所述状态检测参数可以检测到所述数据库是否发生故障,还可以根据所述状态检测参数判断故障的类型。
[0028]S102,当所述状态检测参数包括待处理事件的个数,且根据所述待处理事件的个数检测出数据库当前状态为性能故障状态时,切换用户模式并重新启动数据库。
[0029]具体地,根据所述状态参数来判断所述数据库的故障类型,当所述状态检测参数包括待处理事件的个数时,表明所述待处理事件的个数异常,可能会导致所述数据库出现性能故障状态。为了进一步地确认所述数据库当前状态为性能故障状态,需要根据所述待处理事件的个数检测数据库当前状态。若检测出所述数据库当前状态为性能故障状态,则通过切换用户模式并重新启动所述数据库以使所述数据库从故障状态中恢复。
[0030]S103,当所述状态检测参数包括数据库实例状态,且根据所述数据库实例状态检测出所述数据库当前状态为宕机故障状态时,重新启动所述数据库。
[0031]具体地,根据所述状态参数来判断所述数据库的故障类型,当所述状态检测参数包括数据库实例状态时,表明所述数据库实例状态处于异常状态,并非online状态,可能会导致所述数据库出现宕机故障状态。为了进一步地确认所述数据库当前状态为宕机故障状态,需要根据所述数据库实例状态检测数据库当前状态。若检测出所述数据库当前状态为宕机故障状态,则重新启动所述数据库以使所述数据库从故障状态中恢复。
[0032]当所述状态检测参数同时包括所述待处理事件的个数和所述数据库实例状态时,可以同时执行步骤S102和步骤S103,实现对两种故障状态的处理。
[0033]本发明实施例通过获取状态检测参数,根据所述状态检测参数确定数据库当前状态的故障类型并根据故障类型重新启动数据库,恢复数据库的正常运行,实现了自动检测故障并从故障状态中恢复,提高了数据库的处理效率和可用性。
[0034]请参见图2,为本发明实施例提供的另一种故障处理的方法的流程示意图;该方法可包括以下步骤S201-步骤S204。
[0035]S201,当获取到的状态检测参数包括待处理事件的个数时,获取至少一个探测结果,并判断所述至少一个探测结果是否均为性能故障结果
[0036]具体地,当获取到的状态检测参数包括待处理事件的个数时,表明所述待处理事件的个数异常,可能会导致所述数据库出现性能故障状态。通过获取至少一个探测结果来判断所述数据库当前状态是否为性能故障状态。所述至少一个探测结果一般为两个探测结果,用于判断得到的性能故障状态更加准确。所述两个探测结果的探测间隔时间是一个固定值,为所述数据库休眠的时间,每隔一个探测间隔时间,数据库就会获取到一个探测结果。判断所述至少一个探测结果是否均为性能故障结果来确定所述数据库当前状态。
[0037]其中,所述性能故障结果包括所述待处理事件的个数高于预设的个数阈值的结果,所述预设的个数阈值为所述数据库正常运行时所承受的待处理事件的个数的最大值,即ready队列长度的最大值。若探测到所述待处理事件的个数低于或等于预设的个数阈值,则表明探测结果为正常结果。
[0038]S202,当所述至少一个探测结果均为所述性能故障结果时,确定所述数据库当前状态为性能故障状态。
[0039]具体地,当所述至少一个探测结果均为所述性能故障结果时,即获取到的两个连续的探测结果均为所述性能故障结果,可以确定所述数据库当前状态为性能故障状态。若第一探测结果为性能故障结果,经过探测间隔时间后获取的第二探测结果为正常结果,则所述数据库当前状态为正常结果状态;若第一探测结果为正常状态结果,经过探测间隔时间后获取的第二探测结果为性能故障状态结果,则无法判断所述数据库当前状态,需再次获取第三探测结果来判断所述数据库当前状态。只有当所述至少一个探测结果均为所述性能故障结果时,才能确定所述数据库当前状态为性能故障状态。若无法判断所述数据库当前状态或所述数据库当前状态为正常状态,则执行步骤S101,获取状态检测参数,检测所述数据库是否处于故障状态。
[0040]S203,根据所述性能故障状态,向管理端发送告警信息。
[0041]由步骤S202判断得出所述数据库当前状态为性能故障状态,将所述性能故障状态的信息记录于所述数据库的告警文件中并向管理端发送告警信息。所述告警信息用于通知所述管理端所述数据库处于所述性能故障状态并将自动恢复。
[0042]S204,根据所述性能故障状态切换用户模式为单用户模式,并重新启动数据库。
[0043]其中,所述用户模式包括单用户模式和多用户模式,当所述数据库的待处理事件的个数低于或等于所述预设的个数阈值时,所述数据库采用多用户模式处理待处理事件,一旦所述数据库当前状态为性能故障状态时,采用多用户模式处理将严重影响所述数据库的运行速度并降低所述数据库的性能。因此,将用户模式切换为单用户模式,依次处理待处理事件直到所述待处理事件的个数低于或等于所述预设的个数阈值并重新启动所述数据库以使所述数据库从故障状态中恢复。
[0044]为了保证重新启动后的数据库处于正常运行状态,需检测所述数据库的运行状态,若检测到所述数据库的运行状态处于正常状态则表明所述数据库已从故障状态中恢复。
[0045]本发明实施例通过当获取到的状态检测参数包括待处理事件的个数时,判断获取至少一个探测结果是否均为性能故障结果,实现了对性能故障状态的处理,完成了性能故障状态的检测、告警以及自动恢复,提高了数据库的性能,增强了数据库的主动性。
[0046]请参见图3,为本发明实施例提供的另一种故障处理的方法的流程示意图;该方法可包括以下步骤S301-步骤S307。
[0047]S301,当获取到的状态检测参数包括数据库实例状态时,获取至少一个探测结果,并判断所述至少一个探测结果是否均为宕机故障结果。
[0048]具体地,当获取到的状态检测参数包括数据库实例状态时,表明所述数据库实例状态处于异常状态,并非online状态,可能会导致所述数据库出现宕机故障状态。通过获取至少一个探测结果来判断所述数据库当前状态是否为宕机故障状态。所述至少一个探测结果一般为两个探测结果,用于判断得到的宕机故障状态更加准确。所述两个探测结果的探测间隔时间是一个固定值,为所述数据库休眠的时间,每隔一个探测间隔时间,数据库就会获取到一个探测结果。判断所述至少一个探测结果是否均为宕机故障结果来确定所述数据库当前状态。
[0049]其中,所述宕机故障结果包括所述数据库实例状态为异常工作状态的结果,这是所述数据库实例状态未处于online状态。
[0050]S302,当所述至少一个探测结果均为所述宕机故障结果时,确定所述数据库当前状态为宕机故障状态。
[0051]具体地,当所述至少一个探测结果均为所述宕机故障结果时,即获取到的两个连续的探测结果均为所述宕机故障结果,可以确定所述数据库当前状态为宕机故障状态。若第一探测结果为宕机故障结果,经过探测间隔时间后获取的第二探测结果为正常结果,则所述数据库当前状态为正常结果状态;若第一探测结果为正常状态结果,经过探测间隔时间后获取的第二探测结果为宕机故障状态结果,则无法判断所述数据库当前状态,需再次获取第三探测结果来判断所述数据库当前状态。只有当所述至少一个探测结果均为所述宕机故障结果时,才能确定所述数据库当前状态为宕机故障状态。若无法判断所述数据库当前状态或所述数据库当前状态为正常状态,则执行步骤S101,获取状态检测参数,检测所述数据库是否处于故障状态。
[0052]S303,检测数据库实例的进程是否存在。
[0053]步骤S302能够确定所述数据库当前状态为所述宕机故障状态,但是并不清楚是所述数据库中的具体哪个实例发生了宕机,因此需要检测数据库实例进程以及宕机故障状态来查找宕机实例。首先,检测数据库实例的进程是否存在,若存在则表明所述数据库实例未发生宕机,则执行步骤S101,获取状态检测参数,检测所述数据库是否处于故障状态。
[0054]S304,当检测到所述数据库实例的进程不存在时,检测所述宕机故障状态是否包括目标关键字。
[0055]当检测到所述数据库实例的进程不存在时,表明所述数据库实例可能发生了宕机,需要通过检测所述宕机故障状态是否包括目标关键字来进一步确认。其中,所述目标关键字包括所述数据库实例的名称、shared memory not initialized。
[0056]S305,当检测到所述宕机故障状态不包括目标关键字时,确定所述数据库实例为宕机实例。
[0057]S306,根据所述宕机故障状态,向管理端发送告警信息。
[0058]由步骤S302判断得出所述数据库当前状态为宕机故障状态且查找到宕机实例,将所述宕机故障状态的信息以及所述宕机实例记录于所述数据库的告警文件中并向管理端发送告警信息。所述告警信息用于通知所述管理端所述数据库处于所述宕机故障状态并将自动恢复。
[0059]S307,根据所述宕机故障状态重新启动所述数据库。
[0060]根据所述宕机故障状态重新启动所述数据库以使所述数据库从故障状态中恢复。
[0061]同样,为了保证重新启动后的数据库处于正常运行状态,需检测所述数据库的运行状态,若检测到所述数据库的运行状态处于正常状态则表明所述数据库已从故障状态中恢复。
[0062]本发明实施例通过当获取到的状态检测参数包括数据库实例状态时,判断获取至少一个探测结果是否均为宕机故障结果以及查找宕机实例,实现了对宕机故障状态的处理,完成了宕机故障状态的检测、告警以及自动恢复,脱离了人工操作,缩短了恢复时间,提高了数据库的运行效率。
[0063]请参见图4,为本发明实施例提供的另一种故障处理的方法的流程示意图;该方法可包括以下步骤S401-步骤S402。
[0064]S401,当所述状态检测参数包括数据库实例状态时,检测数据库地址和所述数据库的端口网络状态是否正常。
[0065]具体地,当所述状态检测参数包括数据库实例状态时,表明所述数据库实例状态处于异常状态,并非online状态,可能会导致所述数据库出现宕机故障状态。宕机故障状态除了所述数据库实例异常外,还包括客观原因,如数据库地址和所述数据库的端口网络状态异常,因此需要数据库地址和所述数据库的端口网络状态是否正常。
[0066]S402,当检测到所述数据库的地址和所述数据库的端口网络状态均异常时,重新启动所述数据库。
[0067]当检测到所述数据库的地址和所述数据库的端口网络状态均异常时,表明所述数据库当前状态为宕机故障状态,需要通过重新启动所述数据库以使所述数据库从故障状态中恢复。
[0068]同样,为了保证重新启动后的数据库处于正常运行状态,需检测所述数据库的运行状态,若检测到所述数据库的运行状态处于正常状态则表明所述数据库已从故障状态中恢复。
[0069]本发明实施例通过检测数据库地址和所述数据库的端口网络状态是否正常来判断所述数据库当前状态是否为宕机故障状态,完成了宕机故障状态的检测以及自动恢复,脱离了人工操作,缩短了恢复时间,提高了数据库的运行效率。
[0070]图3和图4所示的实施例均为对所述数据库当前状态为宕机故障状态的处理,两者可以同时进行,也可以单独进行,互不影响,具体情况根据数据库的故障原因而定。
[0071]下面将结合附图5-附图8,对本发明实施例提供的一种故障处理的装置进行详细介绍。需要说明的是,附图5-附图8所述的故障处理的装置可应用于执行上述附图1-附图4所示的方法。
[0072]请参见图5,为本发明实施例提供的一种故障处理的装置的结构示意图;该装置可包括:获取单元101、第一重启单元102和第二重启单元103。
[0073]获取单元101,用于获取状态检测参数,所述状态检测参数包括待处理事件的个数或数据库实例状态。
[0074]具体地,获取正在运行的数据库的状态检测参数,所述状态检测参数包括待处理事件的个数或数据库实例状态。其中,所述待处理事件的个数为所述正在运行的数据库中等待处理的事件的个数,在Informix数据库中为ready队列的长度,若所述待处理事件的个数异常,将会导致数据库运行速度缓慢、性能降低。所述数据库实例状态为所述数据库中正在运行的实例状态,当所述数据库实例状态处于online状态时表明所述数据库实例状态为正常运行状态,当所述数据库实例状态未处于online状态时表明所述数据库实例状态为异常运行状态,若所述数据库实例状态处于异常状态将引起数据库宕机。现有技术中的数据库只是一味地执行命令,无法检测状态以致数据库出现故障时便停止运行,通过获取所述状态检测参数可以检测到所述数据库是否发生故障,还可以根据所述状态检测参数判断故障的类型。
[0075]第一重启单元102,用于当所述状态检测参数包括待处理事件的个数,且根据所述待处理事件的个数检测出数据库当前状态为性能故障状态时,切换用户模式并重新启动数据库。
[0076]具体地,根据所述状态参数来判断所述数据库的故障类型,当所述状态检测参数包括待处理事件的个数时,表明所述待处理事件的个数异常,可能会导致所述数据库出现性能故障状态。为了进一步地确认所述数据库当前状态为性能故障状态,需要根据所述待处理事件的个数检测数据库当前状态。若检测出所述数据库当前状态为性能故障状态,则通过切换用户模式并重新启动所述数据库以使所述数据库从故障状态中恢复。
[0077]第二重启单元103,用于当所述状态检测参数包括数据库实例状态,且根据所述数据库实例状态检测出所述数据库当前状态为宕机故障状态时,重新启动所述数据库。
[0078]具体地,根据所述状态参数来判断所述数据库的故障类型,当所述状态检测参数包括数据库实例状态时,表明所述数据库实例状态处于异常状态,并非online状态,可能会导致所述数据库出现宕机故障状态。为了进一步地确认所述数据库当前状态为宕机故障状态,需要根据所述数据库实例状态检测数据库当前状态。若检测出所述数据库当前状态为宕机故障状态,则重新启动所述数据库以使所述数据库从故障状态中恢复。
[0079]当所述状态检测参数同时包括所述待处理事件的个数和所述数据库实例状态时,可以同时调用第一重启单元102和第二重启单元103,实现对两种故障状态的处理。
[0080]本发明实施例通过获取状态检测参数,根据所述状态检测参数确定数据库当前状态的故障类型并根据故障类型重新启动数据库,恢复数据库的正常运行,实现了自动检测故障并从故障状态中恢复,提高了数据库的处理效率和可用性。
[0081]请参见图6,本发明实施例提供的一种故障处理的装置的结构示意图;该装置可包括:获取单元101、第一结果获取单元201、第一确定单元202和第一重启单元102,其中,所述第一重启单元包括:第一发送单元203和第一数据库重启单元204。
[0082]获取单元101,为图5所示的获取单元101,在此不再赘述。
[0083]第一结果获取单元201,用于当所述获取模块获取到的状态检测参数包括待处理事件的个数时,获取至少一个探测结果,并判断所述至少一个探测结果是否均为性能故障结果。
[0084]具体地,当获取到的状态检测参数包括待处理事件的个数时,表明所述待处理事件的个数异常,可能会导致所述数据库出现性能故障状态。通过获取至少一个探测结果来判断所述数据库当前状态是否为性能故障状态。所述至少一个探测结果一般为两个探测结果,用于判断得到的性能故障状态更加准确。所述两个探测结果的探测间隔时间是一个固定值,为所述数据库休眠的时间,每隔一个探测间隔时间,数据库就会获取到一个探测结果。判断所述至少一个探测结果是否均为性能故障结果来确定所述数据库当前状态。
[0085]其中,所述性能故障结果包括所述待处理事件的个数高于预设的个数阈值的结果,所述预设的个数阈值为所述数据库正常运行时所承受的待处理事件的个数的最大值,即ready队列长度的最大值。若探测到所述待处理事件的个数低于或等于预设的个数阈值,则表明探测结果为正常结果。
[0086]第一确定单元202,用于当所述至少一个探测结果均为所述性能故障结果时,确定所述数据库当前状态为性能故障状态。
[0087]具体地,当所述至少一个探测结果均为所述性能故障结果时,即获取到的两个连续的探测结果均为所述性能故障结果,可以确定所述数据库当前状态为性能故障状态。若第一探测结果为性能故障结果,经过探测间隔时间后获取的第二探测结果为正常结果,则所述数据库当前状态为正常结果状态;若第一探测结果为正常状态结果,经过探测间隔时间后获取的第二探测结果为性能故障状态结果,则无法判断所述数据库当前状态,需再次获取第三探测结果来判断所述数据库当前状态。只有当所述至少一个探测结果均为所述性能故障结果时,才能确定所述数据库当前状态为性能故障状态。若无法判断所述数据库当前状态或所述数据库当前状态为正常状态,获取状态检测参数,检测所述数据库是否处于故障状态。
[0088]第一发送单元203,用于当所述状态检测参数包括待处理事件的个数,且根据所述待处理事件的个数检测出数据库当前状态为性能故障状态时,向管理端发送告警信息。
[0089]由第一确定单元202判断得出所述数据库当前状态为性能故障状态,将所述性能故障状态的信息记录于所述数据库的告警文件中并向管理端发送告警信息。所述告警信息用于通知所述管理端所述数据库处于所述性能故障状态并将自动恢复。
[0090]第一数据库重启单元204,用于根据所述性能故障状态切换用户模式为单用户模式,并重新启动数据库。
[0091]其中,所述用户模式包括单用户模式和多用户模式,当所述数据库的待处理事件的个数低于或等于所述预设的个数阈值时,所述数据库采用多用户模式处理待处理事件,一旦所述数据库当前状态为性能故障状态时,采用多用户模式处理将严重影响所述数据库的运行速度并降低所述数据库的性能。因此,将用户模式切换为单用户模式,依次处理待处理事件直到所述待处理事件的个数低于或等于所述预设的个数阈值并重新启动所述数据库以使所述数据库从故障状态中恢复。
[0092]为了保证重新启动后的数据库处于正常运行状态,需检测所述数据库的运行状态,若检测到所述数据库的运行状态处于正常状态则表明所述数据库已从故障状态中恢复。
[0093]本发明实施例通过当获取到的状态检测参数包括待处理事件的个数并判断获取至少一个探测结果是否均为性能故障结果,实现了对性能故障状态的处理,完成了性能故障状态的检测、告警以及自动恢复,提高了数据库的性能,增强了数据库的主动性。
[0094]请参见图7,本发明实施例提供的一种故障处理的装置的结构示意图;该装置可包括:获取单元101、第二结果获取单元301、第二确定单元302、第一检测单元303、第二检测单元304、确定宕机单元305和第二重启单元103,其中,所述第二重启单元103包括:第二发送单元306和第二数据库重启单元307。
[0095]获取单元101,为图5所示的获取单元101,在此不再赘述。
[0096]第二结果获取单元301,用于当所述获取模块获取到的状态检测参数包括数据库实例状态时,获取至少一个探测结果,并判断所述至少一个探测结果是否均为宕机故障结果O
[0097]具体地,当获取到的状态检测参数包括数据库实例状态时,表明所述数据库实例状态处于异常状态,并非online状态,可能会导致所述数据库出现宕机故障状态。通过获取至少一个探测结果来判断所述数据库当前状态是否为宕机故障状态。所述至少一个探测结果一般为两个探测结果,用于判断得到的宕机故障状态更加准确。所述两个探测结果的探测间隔时间是一个固定值,为所述数据库休眠的时间,每隔一个探测间隔时间,数据库就会获取到一个探测结果。判断所述至少一个探测结果是否均为宕机故障结果来确定所述数据库当前状态。
[0098]其中,所述宕机故障结果包括所述数据库实例状态为异常工作状态的结果,这是所述数据库实例状态未处于online状态。
[0099]第二确定单元302,用于当所述至少一个探测结果均为所述宕机故障结果时,确定所述数据库当前状态为宕机故障状态。
[0100]具体地,当所述至少一个探测结果均为所述宕机故障结果时,即获取到的两个连续的探测结果均为所述宕机故障结果,可以确定所述数据库当前状态为宕机故障状态。若第一探测结果为宕机故障结果,经过探测间隔时间后获取的第二探测结果为正常结果,则所述数据库当前状态为正常结果状态;若第一探测结果为正常状态结果,经过探测间隔时间后获取的第二探测结果为宕机故障状态结果,则无法判断所述数据库当前状态,需再次获取第三探测结果来判断所述数据库当前状态。只有当所述至少一个探测结果均为所述宕机故障结果时,才能确定所述数据库当前状态为宕机故障状态。若无法判断所述数据库当前状态或所述数据库当前状态为正常状态时,获取状态检测参数,检测所述数据库是否处于故障状态。
[0101]第一检测单元303,用于检测数据库实例的进程是否存在。
[0102]第二确定单元302能够确定所述数据库当前状态为所述宕机故障状态,但是并不清楚是所述数据库中的具体哪个实例发生了宕机,因此需要检测数据库实例进程以及宕机故障状态来查找宕机实例。首先,检测数据库实例的进程是否存在,若存在则表明所述数据库实例未发生宕机,获取状态检测参数,检测所述数据库是否处于故障状态。
[0103]第二检测单元304,用于当所述第一检测单元检测到所述数据库实例的进程不存在时,检测所述宕机故障状态是否包括目标关键字。
[0104]当所述第一检测单元303检测到所述数据库实例的进程不存在时,表明所述数据库实例可能发生了宕机,需要通过检测所述宕机故障状态是否包括目标关键字来进一步确认。其中,所述目标关键字包括所述数据库实例的名称、shared memory not initialized。
[0105]确定宕机单元305,用于当所述第二检测单元检测到所述宕机故障状态不包括目标关键字时,确定所述数据库实例为宕机实例。
[0106]第二发送单元306,用于当所述状态检测参数包括数据库实例状态,且根据所述数据库实例状态检测出所述数据库当前状态为宕机故障状态时,向所述管理端发送实例宕机信息。
[0107]由第二确定单元302判断得出所述数据库当前状态为宕机故障状态且查找到宕机实例,将所述宕机故障状态的信息以及所述宕机实例记录于所述数据库的告警文件中并向管理端发送告警信息。所述告警信息用于通知所述管理端所述数据库处于所述宕机故障状态并将自动恢复。
[0108]第二数据库重启单元307,用于根据所述宕机故障状态重新启动所述数据库。
[0109]根据所述宕机故障状态重新启动所述数据库以使所述数据库从故障状态中恢复。
[0110]同样,为了保证重新启动后的数据库处于正常运行状态,需检测所述数据库的运行状态,若检测到所述数据库的运行状态处于正常状态则表明所述数据库已从故障状态中恢复。
[0111]本发明实施例通过获取到的状态检测参数包括数据库实例状态并判断获取至少一个探测结果是否均为宕机故障结果以及查找宕机实例,实现了对宕机故障状态的处理,完成了宕机故障状态的检测、告警以及自动恢复,脱离了人工操作,缩短了恢复时间,提高了数据库的运行效率。
[0112]其中,图6中的各个单元可以与图7中的各个单元处于同一个故障处理的装置中,即所述故障处理的装置可以包括:获取单元101、第一结果获取单元201、第一确定单元202、第一重启单元102、第二结果获取单元301、第二确定单元302、第一检测单元303、第二检测单元304、确定宕机单元305、第二重启单元103,其中,所述第一重启单元包括:第一发送单元203和第一数据库重启单元204,所述第二重启单元103包括:第二发送单元306和第二数据库重启单元307。所述故障处理的装置可以在检测出性能故障的同时,又可以检测出宕机故障,并同时对性能故障和宕机故障进行恢复。
[0113]请参见图8,为本发明实施例提供的另一种故障处理的装置的结构示意图;该装置可包括:获取单元101、第一重启单元102、第二重启单元103和第三重启单元104。
[0114]获取单元101,用于获取状态检测参数,所述状态检测参数包括待处理事件的个数或数据库实例状态。
[0115]第一重启单元102,用于当所述状态检测参数包括待处理事件的个数,且根据所述待处理事件的个数检测出数据库当前状态为性能故障状态时,切换用户模式并重新启动数据库。所述第一重启单元102的具体实现方式可以参见上述图5对应实施例中的第一重启单元102,或参见上述图6对应实施例中的第一重启单元102,这里不再进行赘述。
[0116]第二重启单元103,用于当所述状态检测参数包括数据库实例状态,且根据所述数据库实例状态检测出所述数据库当前状态为宕机故障状态时,重新启动所述数据库。所述第一重启单元103的具体实现方式可以参见上述图5对应实施例中的第二重启单元103,或参见上述图7对应实施例中的第二重启单元103,这里不再进行赘述。
[0117]第三重启单元104,用于当检测到所述数据库的地址和所述数据库的端口网络状态均异常时,重新启动所述数据库。
[0118]具体地,当所述状态检测参数包括数据库实例状态时,表明所述数据库实例状态处于异常状态,并非online状态,可能会导致所述数据库出现宕机故障状态。宕机故障状态除了所述数据库实例异常外,还包括客观原因,如数据库地址和所述数据库的端口网络状态异常,因此需要数据库地址和所述数据库的端口网络状态是否正常。当检测到所述数据库的地址和所述数据库的端口网络状态均异常时,表明所述数据库当前状态为宕机故障状态,需要通过重新启动所述数据库以使所述数据库从故障状态中恢复。
[0119]同样,为了保证重新启动后的数据库处于正常运行状态,需检测所述数据库的运行状态,若检测到所述数据库的运行状态处于正常状态则表明所述数据库已从故障状态中恢复。
[0120]本发明实施例通过检测数据库地址和所述数据库的端口网络状态是否正常来判断所述数据库当前状态是否为宕机故障状态,完成了宕机故障状态的检测以及自动恢复,脱离了人工操作,缩短了恢复时间,提高了数据库的运行效率。
[0121]本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的程序可存储于一计算机可读取存储介质中,该程序在执行时,可包括如上述各方法的实施例的流程。其中,所述的存储介质可为磁碟、光盘、只读存储记忆体(Read-Only Memory, ROM)或随机存储记忆体(Random AccessMemory, RAM)等。
[0122]以上所揭露的仅为本发明较佳实施例而已,当然不能以此来限定本发明之权利范围,因此依本发明权利要求所作的等同变化,仍属本发明所涵盖的范围。
【权利要求】
1.一种故障处理的方法,其特征在于,包括: 获取状态检测参数,所述状态检测参数包括待处理事件的个数或数据库实例状态; 当所述状态检测参数包括待处理事件的个数,且根据所述待处理事件的个数检测出数据库当前状态为性能故障状态时,切换用户模式并重新启动数据库; 当所述状态检测参数包括数据库实例状态,且根据所述数据库实例状态检测出所述数据库当前状态为宕机故障状态时,重新启动所述数据库。
2.根据权利要求1所述的方法,其特征在于,所述当所述状态检测参数包括待处理事件的个数,且根据所述待处理事件的个数检测出数据库当前状态为性能故障状态时,切换用户模式并重新启动数据库,包括: 当所述状态检测参数包括待处理事件的个数,且根据所述待处理事件的个数检测出数据库当前状态为性能故障状态时,向管理端发送告警信息; 根据所述性能故障状态切换用户模式为单用户模式,并重新启动数据库。
3.根据权利要求1所述的方法,其特征在于,所述当所述状态检测参数包括数据库实例状态,且根据所述数据库实例状态检测出所述数据库当前状态为宕机故障状态时,重新启动所述数据库,包括: 当所述状态检测参数包括数据库实例状态,且根据所述数据库实例状态检测出所述数据库当前状态为宕机故障状态时,向所述管理端发送实例宕机信息; 根据所述宕机故障状态重新启动所述数据库。
4.根据权利要求2所述的方法,其特征在于,在所述当所述状态检测参数包括待处理事件的个数,且根据所述待处理事件的个数检测出数据库当前状态为性能故障状态时,切换用户模式并重新启动所述数据库的步骤之前,还包括: 当获取到的状态检测参数包括待处理事件的个数时,获取至少一个探测结果,并判断所述至少一个探测结果是否均为性能故障结果; 当所述至少一个探测结果均为所述性能故障结果时,确定所述数据库当前状态为性能故障状态; 其中,所述性能故障结果包括所述待处理事件的个数高于预设的个数阈值的结果。
5.根据权利要求3所述的方法,其特征在于,在所述当所述状态检测参数包括数据库实例状态,且根据所述数据库实例状态检测出所述数据库当前状态为宕机故障状态时,重新启动所述数据库的步骤之前,还包括: 当获取到的状态检测参数包括数据库实例状态时,获取至少一个探测结果,并判断所述至少一个探测结果是否均为宕机故障结果; 当所述至少一个探测结果均为所述宕机故障结果时,确定所述数据库当前状态为宕机故障状态; 其中,所述宕机故障结果包括所述数据库实例状态为异常工作状态的结果。
6.根据权利要求5所述的方法,其特征在于,在所述当所述至少一个探测结果均为所述宕机故障结果时,确定所述数据库当前状态为宕机故障状态的步骤之后,还包括: 检测数据库实例的进程是否存在; 当检测到所述数据库实例的进程不存在时,检测所述宕机故障状态是否包括目标关键字; 当检测到所述宕机故障状态不包括目标关键字时,确定所述数据库实例为宕机实例。
7.根据权利要求1所述的方法,其特征在于,还包括: 当检测到所述数据库的地址和所述数据库的端口网络状态均异常时,重新启动所述数据库。
8.一种故障处理的装置,其特征在于,包括: 获取单元,用于获取状态检测参数,所述状态检测参数包括待处理事件的个数或数据库实例状态; 第一重启单元,用于当所述状态检测参数包括待处理事件的个数,且根据所述待处理事件的个数检测出数据库当前状态为性能故障状态时,切换用户模式并重新启动数据库;第二重启单元,用于当所述状态检测参数包括数据库实例状态,且根据所述数据库实例状态检测出所述数据库当前状态为宕机故障状态时,重新启动所述数据库。
9.根据权利要求8所述的装置,其特征在于,所述第一重启单元包括: 第一发送单元,用于当所述状态检测参数包括待处理事件的个数,且根据所述待处理事件的个数检测出数据库当前状态为性能故障状态时,向管理端发送告警信息; 第一数据库重启单元,用于根据所述性能故障状态切换用户模式为单用户模式,并重新启动数据库。
10.根据权利要求8所述的装置,其特征在于,所述第二重启单元包括: 第二发送单元,用于当所述状态检测参数包括数据库实例状态,且根据所述数据库实例状态检测出所述数据库当前状态为宕机故障状态时,向所述管理端发送实例宕机信息;第二数据库重启单元,用于根据所述宕机故障状态重新启动所述数据库。
11.根据权利要求9所述的装置,其特征在于,还包括: 第一结果获取单元,用于当所述获取模块获取到的状态检测参数包括待处理事件的个数时,获取至少一个探测结果,并判断所述至少一个探测结果是否均为性能故障结果;第一确定单元,用于当所述至少一个探测结果均为所述性能故障结果时,确定所述数据库当前状态为性能故障状态; 其中,所述性能故障结果包括所述待处理事件的个数高于预设的个数阈值的结果。
12.根据权利要求10所述的装置,其特征在于,还包括: 第二结果获取单元,用于当所述获取模块获取到的状态检测参数包括数据库实例状态时,获取至少一个探测结果,并判断所述至少一个探测结果是否均为宕机故障结果; 第二确定单元,用于当所述至少一个探测结果均为所述宕机故障结果时,确定所述数据库当前状态为宕机故障状态; 其中,所述宕机故障结果包括所述数据库实例状态为异常工作状态的结果。
13.根据权利要求10所述的装置,其特征在于,还包括: 第一检测单元,用于检测数据库实例的进程是否存在; 第二检测单元,用于当所述第一检测单元检测到所述数据库实例的进程不存在时,检测所述宕机故障状态是否包括目标关键字; 确定宕机单元,用于当所述第二检测单元检测到所述宕机故障状态不包括目标关键字时,确定所述数据库实例为宕机实例。
14.根据权利要求8所述的装置,其特征在于,还包括: 第三重启单元,用于当检测到所述数据库的地址和所述数据库的端口网络状态均异常时,重新启动所述数据库。
【文档编号】G06F17/30GK104408059SQ201410594247
【公开日】2015年3月11日 申请日期:2014年10月29日 优先权日:2014年10月29日
【发明者】徐超, 周泽斌, 颜凯, 高连峰 申请人:中国建设银行股份有限公司