掌桥专利:专业的专利平台
掌桥专利
首页

一种数据库监控方法及装置

文献发布时间:2023-06-19 12:22:51


一种数据库监控方法及装置

技术领域

本发明涉及计算机技术领域,尤其涉及一种数据库监控方法及装置。

背景技术

随着科学技术的发展,数据库监控技术不断提高。

GreenPlum数据库是一种由大规模物理机集群部署而构建成的大数据分析处理平台。集群中的节点数量越多,GreenPlum数据库的存储容量可以越大,计算能力可以越强。GreenPlum数据库在运维工作过程中,可能会出现宕机、卡顿和hang死等问题,导致其处于不可用状态。

但是,现有技术无法有效监控GreenPlum数据库。

发明内容

鉴于上述问题,本发明提供一种克服上述问题或者至少部分地解决上述问题的数据库监控方法及装置,技术方案如下:

一种数据库监控方法,包括:

解析预定义好的配置文件,确定并连接目标数据库;

至少一次使用心跳探测模块检测所述目标数据库的运行状态,所述至少一次的具体次数为第一次数;

根据所述心跳探测模块对所述目标数据库运行状态进行所述第一次数的检测的检测结果,确定所述目标数据库的最终运行状态;

当确定所述目标数据库的最终运行状态为可用状态时,调用健康检查模块检测所述目标数据库的健康指标。

可选的,所述配置文件中记录有至少一行预定义信息,各所述预定义信息均包括一个待监控数据库的基本信息,所述基本信息包括数据库服务IP、数据库名、用户名和用户密码,所述解析预定义好的配置文件,确定并连接目标数据库,包括:

在所述配置文件中,读取目标预定义信息,所述目标预定义信息为目标行数的预定义信息;

将所述目标预定义信息对应的待监控数据库,确定为当前的目标数据库;

利用当前的目标数据库的数据库服务IP、数据库名、用户名和用户密码,连接所述目标数据库。

可选的,在所述确定所述目标数据库的最终运行状态之后,所述方法还包括:

将所述目标数据库的最终运行状态,输出至心跳探测日志中进行保存;

在所述调用健康检查模块检测所述目标数据库的健康指标之后,所述方法还包括:

将所述健康检查模块检测所述目标数据库的检测结果,输出至健康检查日志中进行保存。

可选的,所述第一次数与当前已使用所述心跳探测模块对所述目标数据库运行状态进行检测的检测结果相关,所述至少一次使用心跳探测模块检测所述目标数据库的运行状态,包括:

当使用所述心跳探测模块检测出所述目标数据库的运行状态为不可用状态时,确定当前是否已连续使用所述心跳探测模块对所述目标数据库的运行状态进行第二次数的检测,且所述第二次数的检测结果均为不可用状态,如果是,则停止使用所述心跳探测模块检测所述目标数据库的运行状态;

所述根据所述心跳探测模块对所述目标数据库运行状态进行所述第一次数的检测的检测结果,确定所述目标数据库的最终运行状态,包括:

在当前已连续使用所述心跳探测模块对所述目标数据库的运行状态进行所述第二次数的检测,且所述第二次数的检测结果均为不可用状态时,确定所述目标数据库的最终运行状态为不可用状态。

可选的,所述至少一次使用心跳探测模块检测所述目标数据库的运行状态,还包括:

当使用所述心跳探测模块检测出所述目标数据库的运行状态为可用状态时,停止使用所述心跳探测模块监测所述目标数据库的运行状态;

根据所述心跳探测模块对所述目标数据库运行状态进行所述第一次数的检测的检测结果,确定所述目标数据库的最终运行状态,还包括:

当使用所述心跳探测模块检测出所述目标数据库的运行状态为可用状态时,确定所述目标数据库的最终运行状态为可用状态。

可选的,所述方法还包括:

所述心跳探测模块在检测所述目标数据库的运行状态的过程中,调用心跳探测语句对所述目标数据库的运行状态进行检测。

可选的,所述健康指标包括预定义好的待检查健康指标列表中的各项待检查健康指标,所述待检查健康指标列表中包括至少一项待检查健康指标。

一种数据库监控装置,包括:解析单元、第一确定单元、连接单元、第一检测单元、第二确定单元和第二检测单元,其中:

所述解析单元,被配置为执行:解析预定义好的配置文件;

所述第一确定单元,被配置为执行:确定目标数据库;

所述连接单元,被配置为执行:连接目标数据库;

所述第一检测单元,被配置为执行:至少一次使用心跳探测模块检测所述目标数据库的运行状态,所述至少一次的具体次数为第一次数;

所述第二确定单元,被配置为执行:根据所述心跳探测模块对所述目标数据库运行状态进行所述第一次数的检测的检测结果,确定所述目标数据库的最终运行状态;

所述第二检测单元,被配置为执行:当确定所述目标数据库的最终运行状态为可用状态时,调用健康检查模块检测所述目标数据库的健康指标。

可选的,所述配置文件中记录有至少一行预定义信息,各所述预定义信息均包括一个待监控数据库的基本信息,所述基本信息包括数据库服务IP、数据库名、用户名和用户密码;

所述解析单元,被配置为执行:在所述配置文件中,读取目标预定义信息,所述目标预定义信息为目标行数的预定义信息;

所述第一确定单元,被配置为执行:将所述目标预定义信息对应的待监控数据库,确定为当前的目标数据库;

所述连接单元,被配置为执行:利用当前的目标数据库的数据库服务IP、数据库名、用户名和用户密码,连接所述目标数据库。

可选的,所述装置还包括:第一保存单元和第二保存单元,其中:

所述第一保存单元,被配置为执行:在所述确定所述目标数据库的最终运行状态之后,将所述目标数据库的最终运行状态,输出至心跳探测日志中进行保存;

所述第二保存单元,被配置为执行:在所述调用健康检查模块检测所述目标数据库的健康指标之后,将所述健康检查模块检测所述目标数据库的检测结果,输出至健康检查日志中进行保存。

可选的,所述第一次数与当前已使用所述心跳探测模块对所述目标数据库运行状态进行检测的检测结果相关;所述第一检测单元包括:第三确定单元和第一停止单元,所述第二确定单元包括:第四确定单元;其中:

所述第三确定单元,被配置为执行:当使用所述心跳探测模块检测出所述目标数据库的运行状态为不可用状态时,确定当前是否已连续使用所述心跳探测模块对所述目标数据库的运行状态进行第二次数的检测,且所述第二次数的检测结果均为不可用状态,如果是,则触发所述第一停止单元;

所述第一停止单元,被配置为执行:停止使用所述心跳探测模块检测所述目标数据库的运行状态;

所述第四确定单元,被配置为执行:在当前已连续使用所述心跳探测模块对所述目标数据库的运行状态进行所述第二次数的检测,且所述第二次数的检测结果均为不可用状态时,确定所述目标数据库的最终运行状态为不可用状态。

可选的,所述第一检测单元还包括:第五确定单元,所述第二确定单元还包括:第六确定单元,其中:

所述第五确定单元,被配置为执行:当使用所述心跳探测模块检测出所述目标数据库的运行状态为可用状态时,停止使用所述心跳探测模块监测所述目标数据库的运行状态;

所述第六确定单元,被配置为执行:当使用所述心跳探测模块检测出所述目标数据库的运行状态为可用状态时,确定所述目标数据库的最终运行状态为可用状态。

可选的,所述装置还包括:第三检测单元,其中:

所述第三检测单元,被配置为执行:所述心跳探测模块在检测所述目标数据库的运行状态的过程中,调用心跳探测语句对所述目标数据库的运行状态进行检测。

可选的,所述健康指标包括预定义好的待检查健康指标列表中的各项待检查健康指标,所述待检查健康指标列表中包括至少一项待检查健康指标。

本实施例提出的数据库监控方法及装置,可以解析预定义好的配置文件,确定并连接目标数据库,至少一次使用心跳探测模块检测目标数据库的运行状态,至少一次的具体次数为第一次数,根据心跳探测模块对目标数据库运行状态进行第一次数的检测的检测结果,确定目标数据库的最终运行状态,当确定目标数据库的最终运行状态为可用状态时,调用健康检查模块检测目标数据库的健康指标。本发明可以无需在目标数据库上安装任何组件和脚本,在避免数据库复杂化的情况下,通过访问和连接目标数据库,调用心跳探测模块和健康检查模块来检测目标数据库的运行状态和健康指标,可以从数据库层面直接实现对于目标数据库的监控,进而可以对目标数据库出现的问题进行告警,实现对目标数据库的有效监控,有效提高目标数据库的工作效率。

上述说明仅是本发明技术方案的概述,为了能够更清楚了解本发明的技术手段,可依照说明书的内容予以实施,并且为了让本发明的上述和其它目的、特征和优点能够更明显易懂,以下特举本发明的具体实施方式。

附图说明

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

图1示出了本发明实施例提供的第一种数据库监控方法的流程图;

图2示出了本发明实施例提供的第二种数据库监控方法的流程图;

图3示出了本发明实施例提供的第三种数据库监控方法的流程图;

图4示出了本发明实施例提供的第四种数据库监控方法的流程图;

图5示出了本发明实施例提供的第五种数据库监控方法的流程图;

图6示出了本发明实施例提供的一种用于实现数据库监控的系统拓扑结构图;

图7示出了本发明实施例提供的第一种数据库监控装置的结构示意图;

图8示出了本发明实施例提供的第二种数据库监控装置的结构示意图;

图9示出了本发明实施例提供的第三种数据库监控装置的结构示意图;

图10示出了本发明实施例提供的第四种数据库监控装置的结构示意图。

具体实施方式

下面将参照附图更详细地描述本发明的示例性实施例。虽然附图中显示了本发明的示例性实施例,然而应当理解,可以以各种形式实现本发明而不应被这里阐述的实施例所限制。相反,提供这些实施例是为了能够更透彻地理解本发明,并且能够将本发明的范围完整的传达给本领域的技术人员。

如图1所示,本实施例提出了第一种数据库监控方法,该方法可以包括以下步骤:

S101、解析预定义好的配置文件,确定并连接目标数据库;

需要说明的是,本发明可以应用于ETL虚拟机。

其中,配置文件中可以包括有一个或多个待监控数据库的基本信息。具体的,本发明可以从配置文件中读取待监控数据库的基本信息,并基于待监控数据库的基本信息,对待监控数据库进行连接和访问,进而可以对待监控数据库进行相关数据的检测,从数据库层面实现对待监控数据库的监控。

其中,待监控数据库和目标数据库均可以为GreenPlum数据库。

可选的,配置文件中记录有至少一行预定义信息,各预定义信息均包括一个待监控数据库的基本信息,基本信息包括数据库服务IP、数据库名、用户名和用户密码。此时,步骤S101可以包括:

在配置文件中,读取目标预定义信息,目标预定义信息为目标行数的预定义信息;

将目标预定义信息对应的待监控数据库,确定为当前的目标数据库;

利用当前的目标数据库的数据库服务IP、数据库名、用户名和用户密码,连接目标数据库。

其中,数据库服务IP可以为用于连接目标数据库的访问IP。

其中,数据库名可以为目标数据库的标识。

需要说明的是,数据库作为后端存储数据的场所,一般情况下可以禁止用户的直接访问,而本发明可以通过数据库客户端来连接和访问数据库。

具体的,上述ETL虚拟机可以安装数据库客户端(如GreenPlum数据库客户端),该客户端可以是访问数据库所必要的前端入口工具,用于把控用户访问数据库的权限。

其中,用户名为可以登录数据库客户端的用户账户,用户密码可以为相应用户账户登录的密码。

具体的,本发明可以使用用户名和用户密码登录数据库客户端,利用数据库服务IP和数据库名,访问和连接相应的目标数据库。

S102、至少一次使用心跳探测模块检测目标数据库的运行状态,至少一次的具体次数为第一次数;

其中,本发明可以在连接目标数据库后,使用心跳探测模块来检测目标数据库的运行状态。

需要说明的是,本发明每一次使用心跳探测模块来检测目标数据库的运行状态,即可以使用心跳探测模块对目标数据库的运行状态进行一次检测,之后可以获得一次检测结果。

其中,检测结果可以包括有目标数据库的运行状态为可用状态和目标数据库的运行状态为不可用状态两种情况。

可选的,在本实施例提出的其它数据库监控方法中,还可以包括:

心跳探测模块在检测目标数据库的运行状态的过程中,调用心跳探测语句对目标数据库的运行状态进行检测。

具体的,心跳探测模块可以通过调用心跳探测语句来检测目标数据库的运行状态。

可选的,当目标数据库为GreenPlum数据库时,心跳探测语句可以为probeChk.sql语句。

可选的,心跳探测模块可以通过语句time out 180s psql -d dbname -h hostip-p 5432 -U user -c“probeChk.sql”,来连接目标数据库,连接成功后,该语句中的probeChk.sql语句可以执行create、insert、update、delete、select、drop等一系列简短的数据定义语言(Data Definition Language,DDL)和数据操纵语言(Data ManipulationLanguage,DML)语句,即通过执行创建、更新删除和/或筛选临时表等命令,来检测目标数据库的运行状态是否正常可用。

其中,上述time out 180s psql -d dbname -h hostip -p 5432 -U user -c“probeChk.sql”语句可以是连接GreenPlum数据库的标准写法。

其中,time out 180s可以是虚拟机linux操作系统的一种标准写法,可以用于保证当前与目标数据库的连接在180s之后就会自动断掉。

需要说明的是,当操作系统处于hang死状态导致目标数据库处于不可用状态时,目标数据库对于probeChk.sql语句执行上述DDL语句和DML语句所输入的命令,可能会出现长时间无响应和无任何输出的情况。此时,上述time out 180s可以自动中断本次与目标数据库的检测连接,保障监控主程序和心跳探测模块的正常运行,使得后续可以继续使用心跳探测模块对目标数据库进行检测。

其中,-d dbname中的name可以为数据库名;-h hostip中的host可以为数据库的服务IP;-p 5432可以为应用连接端口,属于标准值;-U user中的user可以为用于连接数据库的用户名;-c“probeChk.sql”可以表示在连接上目标数据库后即执行该probeChk.sql语句。

需要说明的是,为提高对目标数据库运行状态的检测准确率和有效性,本发明可以使用一次或者多次心跳探测模块对目标数据库进行检测,在每次检测结束时即获得相应的检测结果,之后再根据全部检测结果来确定目标数据库的最终运行状态。

其中,最终运行状态可以为最终有效的数据库运行状态。

可选的,本发明可以仅使用一次心跳探测模块对目标数据库进行检测,之后获得该次检测结果,并直接根据该次检测结果来确定目标数据库的最终运行状态。具体的,如果该次检测结果为目标数据库处于不可用状态,则本发明可以直接确定目标数据库的最终运行状态为不可用状态;如果该次检测结果为目标数据库处于可用状态,则本发明可以直接确定目标数据库的最终运行状态为可用状态。

可选的,本发明可以使用多次心跳探测模块对目标数据库进行检测,每次检测结束时即获得相应的检测结果,之后根据所有检测结果来确定目标数据库的最终运行状态。

需要说明的是,在采用多次检测的方式来确定目标数据库的最终运行状态时,本发明对于具体要进行的检测次数即上述第一次数的具体数值不做限定,如3次和5次等。

S103、根据心跳探测模块对目标数据库运行状态进行第一次数的检测的检测结果,确定目标数据库的最终运行状态;

其中,本发明可以根据一次或者多次使用心跳探测模块对目标数据库运行状态所进行检测的检测结果,来确定目标数据库的最终运行状态。

可选的,本发明在根据所有检测结果来确定目标数据库的最终运行状态的过程中,可以根据不同检测结果出现的次数来确定目标数据库的最终运行状态。比如,当检测次数为5次时,本发明可以在目标数据库为不可用状态的检测结果出现不少于3次时,确定目标数据库的最终运行状态为不可用状态,可以在出现1次目标数据库为可用状态的检测结果时,即确定目标数据库的最终运行状态为可用状态;

可选的,本发明也可以根据不同检测结果的占比来确定目标数据库的最终运行状态。比如,当目标数据库处于不可用状态的大于百分之70时,确定目标数据库的最终运行状态为不可用状态。

可选的,本发明也可以在多次使用心跳探测模块对目标数据库进行检测的过程中,根据前一次的检测结果来确定是否需要继续对目标数据库进行检测。

其中,如果某一次使用心跳探测模块对目标数据库进行检测所获得的检测结果为目标数据库处于可用状态,则本发明可以直接确定目标数据库的最终运行状态为可用状态,无需再进行下一次检测;如果某一次使用心跳探测模块对目标数据库进行检测所获得的检测结果为目标数据库处于不可用状态,则本发明可以再使用心跳探测模块对目标数据库进行检测,当目标数据库的检测结果连续几次均为不可用状态时,可以确定目标数据库的最终运行状态为不可用状态。

相应的,在多次使用心跳探测模块对目标数据库进行检测的过程中,如果某一次使用心跳探测模块对目标数据库进行检测所获得的检测结果为目标数据库处于不可用状态,则本发明可以直接确定目标数据库的最终运行状态为不可用状态,无需再进行下一次检测;如果某一次使用心跳探测模块对目标数据库进行检测所获得的检测结果为目标数据库处于可用状态,则本发明可以再使用心跳探测模块对目标数据库进行检测,当目标数据库的检测结果连续几次均为可用状态时,可以确定目标数据库的最终运行状态为可用状态。

可选的,本发明可以在确定目标数据库的最终运行状态后,将其最终运行状态输出至心跳探测日志中进行保存。

S104、当确定目标数据库的最终运行状态为可用状态时,调用健康检查模块检测目标数据库的健康指标。

其中,健康检查模块可以通过用于健康检查的sql语句,获取目标数据库的某些重要性能参数和健康状态。

可选的,健康指标包括预定义好的待检查健康指标列表中的各项待检查健康指标,待检查健康指标列表中可以包括至少一项待检查健康指标。

为更好的说明待检查健康指标列表和待检查健康指标,本发明提出并结合下述表1进行说明。

表1

其中,表1即可以为一个待检查健康指标列表,该待检查健康指标列表中的Age值检查等七个检查项均可以分别为一项待检查健康指标。具体的,健康检查模块可以分别调用该待检查健康指标列表中用于健康检查的ageChk.sql等七条sql语句,对目标数据库进行健康检测。

可选的,本发明可以在检测出目标数据库的每一项健康指标时,即将相应健康指标的检测结果输出至健康检查日志中进行保存,也可以在检测出目标数据库的全部待检查健康指标后,再将检测结果输出至健康检查日志中进行保存。

可以理解的是,当确定目标数据库的最终运行状态为不可用状态时,目标数据库无法响应健康检查模块所执行的sql语句,导致健康检查模块无法正常对目标数据库进行健康检测。因此,当确定目标数据库的最终运行状态为不可用状态时,本发明可以禁止调用健康检查模块对目标数据库进行健康检测,减少无谓的资源消耗。

可选的,如图2所示,在本实施例提出的第二种数据库监控方法中,在步骤S103之后还可以包括步骤S201,在步骤S104之后还可以包括步骤S202。其中:

S201、将目标数据库的最终运行状态,输出至心跳探测日志中进行保存;

S202、将健康检查模块检测目标数据库的检测结果,输出至健康检查日志中进行保存。

具体的,本发明可以通过心跳探测日志和健康检查日志,有效实现对目标数据库进行监控数据的保存。

需要说明的是,当前行内数据中心生产上运行的GreenPlum数据库数量已有多套,集群规模从2+12到2+120不等,涉及服务器数量多台。其中,GreenPlum数据库这种大规模物理机集群部署的架构,其集群在运维过程中容易出现硬件故障现象,对于部分因阵列卡、隐形坏盘导致的硬件故障,现有技术难以从生产上硬件故障日志捕捉,而这种类型的硬件故障可能会对GreenPlum数据库造成不可用或者实例宕机的影响。另,数据中心现有生产上的监控只是针对文件系统、CPU、内存使用率等操作系统层面的问题,无法从GreenPlum数据库本身层面来进行监控和实时告警,而Greenplum数据库产品官方也未提供一套完整有效的监控集群状态、性能和健康检查等工具。

对于GreenPlum数据库的运维和监控,现有技术可以通过管理员登录数据库以及执行相关检查命令来实现。而在检查过程中,如果遇到因某个数据节点阵列卡故障导致的节点hang死情况,数据库往往也会进入hang死状态,此时人工无法正常通过执行相关命令获取当前数据库状态。

具体的,现有技术也可以使用一些常用的数据库监控工具来对数据库进行监控,比如Grafana工具和Pgwatch2工具。但是,现有的监控工具也无法有效的对数据库的运维过程进行监控。比如,Grafana工具可以获取GreenPlum数据库的一些健康指标信息,例如文件系统使用率,CPU、内存使用率和磁盘繁忙程度等,但由于产品限制,Grafana工具对于GreenPlum数据库健康指标的获取仍然停留在操作系统层面,且无法有效的快速获取数据库的运行状态;再比如,Pgwatch2工具需要在目标数据库上安装一些组件和脚本,可能导致数据库自身变得更复杂,影响运维过程。

因此,对于GreenPlum数据库频繁发生的实例宕机、集群不可用、数据倾斜、连接数满等数据库问题,仍是GreenPlum数据库当前运维工作中难以解决的痛点。而本发明可以无需在目标数据库上安装任何组件和脚本,在避免数据库复杂化的情况下,通过访问和连接目标数据库,调用心跳探测模块和健康检查模块来检测目标数据库的运行状态和健康指标,从数据库层面直接实现对于目标数据库的监控,进而可以对目标数据库出现的问题进行告警,实现对目标数据库的有效监控,有效提高目标数据库的工作效率。

本实施例提出的数据库监控方法,可以解析预定义好的配置文件,确定并连接目标数据库,至少一次使用心跳探测模块检测目标数据库的运行状态,至少一次的具体次数为第一次数,根据心跳探测模块对目标数据库运行状态进行第一次数的检测的检测结果,确定目标数据库的最终运行状态,当确定目标数据库的最终运行状态为可用状态时,调用健康检查模块检测目标数据库的健康指标。本发明可以无需在目标数据库上安装任何组件和脚本,在避免数据库复杂化的情况下,通过访问和连接目标数据库,调用心跳探测模块和健康检查模块来检测目标数据库的运行状态和健康指标,可以从数据库层面直接实现对于目标数据库的监控,进而可以对目标数据库出现的问题进行告警,实现对目标数据库的有效监控,有效提高目标数据库的工作效率。

基于图1所示步骤,如图3所示,本实施例提出第三种数据库监控方法。在该方法中,第一次数与当前已使用心跳探测模块对目标数据库运行状态进行检测的检测结果相关。此时,步骤S102可以包括步骤S301和S302,步骤S103可以包括步骤S401。其中:

S301、当使用心跳探测模块检测出目标数据库的运行状态为不可用状态时,确定当前是否已连续使用心跳探测模块对目标数据库的运行状态进行第二次数的检测,且第二次数的检测结果均为不可用状态,如果是,则执行步骤S302;

需要说明的是,目标数据库可能会由于计算资源紧张等事况而暂时处于不可用状态,而在该事况消失(如计算资源恢复充足)时可以恢复为可用状态。因此,为有效提高对目标数据库运行状态的检测准确率,本发明可以在检测到目标数据库的运行状态为不可用状态时,继续对目标数据库的运行状态进行检测,仅在连续多次检测到目标数据库的运行状态为不可用状态时,才确定目标数据库的最终运行状态为不可用状态。

具体的,本发明可以在某次使用心跳探测模块对目标数据库进行检测的检测结果为不可用状态时,继续使用心跳探测模块对目标数据库进行检测,如果已连续使用心跳探测模块对目标数据库进行第二次数的检测,且该第二次数的检测结果均为不可用状态时,则本发明可以确定目标数据库的运行状态为不可用状态。

其中,第二次数可以由技术人员根据实际工作情况进行制定,本发明对此不做限定。

S302、停止使用心跳探测模块检测目标数据库的运行状态;

具体的,本发明可以在确定目标数据库的运行状态为不可用状态时,停止对目标数据库进行检测,减少资源消耗。

S401、在当前已连续使用心跳探测模块对目标数据库的运行状态进行第二次数的检测,且第二次数的检测结果均为不可用状态时,确定目标数据库的最终运行状态为不可用状态。

需要说明的是,本发明可以在某次检测到目标数据库的运行状态为可用状态时,即直接确定目标数据库的最终运行状态为可用状态,而无需再进行检测,进一步减少资源消耗。

可选的,基于上述第三种数据库监控方法,如图4所示,在本发明提出的第四种数据库监控方法中,上述步骤S102还可以包括步骤S303,上述步骤S103还可以包括步骤S402。其中:

S303、当使用心跳探测模块检测出目标数据库的运行状态为可用状态时,停止使用心跳探测模块监测目标数据库的运行状态;

具体的,本发明在某次检测到目标数据库的运行状态为可用状态时,即可以停止检测,直接确定目标数据库的最终运行状态为可用状态。比如,本发明在第一次对目标数据库运行状态的检测结果为可用状态时,即可以停止检测,直接确定其最终运行状态为可用状态;再比如,当上述第二次数为3次时,本发明如果第一次对目标数据库运行状态的检测结果为不可用状态,第二次对目标数据库运行状态的检测结果为可用状态时,也可以停止检测,直接确定其最终运行状态为可用状态。

S402、当使用心跳探测模块检测出目标数据库的运行状态为可用状态时,确定目标数据库的最终运行状态为可用状态。

为更好的说明图4所示方法,本发明提出并结合图5所示的第五种数据库监控方法的流程图进行说明。

如图5所示,配置文件中可以包括总共N行信息,其中的每一行信息均可以为一个待监控数据库的基本信息,本发明可以依序读取其中的各行信息,确定及连接相应的目标数据库,监控目标数据库的运行状态和健康指标。

具体的,在图5中,本发明可以解析和读取配置文件,在读取第i(大于等于1而小于等于N)行信息后,开始第一次使用心跳探测模块来检测相应目标数据库的当前运行状态,确定其运行状态是否为可用状态,如果是,则可以停止检测,确定其最终运行状态为可用状态,并将最终运行状态为可用状态的检测结果输出至心跳探测日志中进行保存,之后再使用健康检查模块来检测目标数据库的当前健康指标,获得健康检测结果并输出至健康检查日志中进行保存,之后确定是否已读取配置文件中的最后一行信息,如果是则可以结束,否则可以再读取下一行即i++信息,对下一个目标数据库进行监控。

在图5中,如果在使用心跳探测模块检测目标数据库时,其某次检测结果为不可用状态,则本发明可以确定是否已连续三次(上述第二次数为三次)检测出目标数据库的运行状态均为不可用状态,如果是,则可以确定目标数据库的最终运行状态为不可用状态,将目标数据库的最终运行状态为不可用状态的检测结果输出至心跳探测日志中进行保存,此时无需再使用健康检查模块对目标数据库进行健康检查,而可以直接进行对下一个目标数据库的运行状态的检测。其中,本发明在任一次检测到目标数据库的运行状态为可用状态时,即可以直接确定目标数据库的最终运行状态为可用状态。

本实施例提出的数据库监控方法,可以有效提高对于目标数据库运行状态的检测准确率,也可以有效减少资源消耗。

基于图1所示步骤,本发明提出第六种数据库监控方法。在该方法中,本发明可以通过部署和使用两台ETL虚拟机,对多个目标数据库进行周期性的轮询巡检,提高巡检的高可用性和检测结果的准确性。

其中,本发明可以在配置文件中记录所有生产上部署的待巡检GreenPlum数据库的基本信息,其基本信息可以包括Master节点主机名、服务IP、数据库名、巡检监控用户名和巡检监控用户加密后密码,将hang死检测次数即上述第二次数设置为三次。

具体的,本发明所使用的巡检脚本可以包括由shell编写的主文件以及巡检sql。

其中,主文件可以检测脚本的主程序逻辑,可以用于保证对各目标数据库的遍历以及巡检的正常执行。

其中,巡检sql可以包括对目标数据库的运行状态和健康指标进行检测的sql语句。需要说明的是,本发明巡检sql对数据库本身的负载压力较小,且整体程序代码为shell和sql语言的代码量较少,具有易扩展、易维护特性。

可选的,两台虚拟机均可以周期性的对各数据库进行检测,且两台虚拟机的检测时间可以相隔预设时长。比如,当周期时长为10分钟,预设时长为5分钟时,两台虚拟机中的第一台虚拟机可以在第1分钟开始进行第一台虚拟机的第一次巡检,第二台虚拟机可以在第6分钟开始进行第二台虚拟机的第一次巡检,之后第一台虚拟机可以在第11分钟进行第一台虚拟机的第二次巡检,第二台虚拟机可以在第16分钟进行第二台虚拟机的第二次巡检。

如图6所示,本发明提出一种用于介绍数据库监控原理的系统拓扑结构图。在图6中,ETL虚拟机1和ETL虚拟机2两台虚拟机,可以读取配置文件中的信息,确定待监控的GreenPlum数据库1、GreenPlum数据库2和GreenPlum数据库3,并可以使用心跳探测模块和健康检查模块分别对GreenPlum数据库1、GreenPlum数据库2和GreenPlum数据库3进行检测,将心跳探测模块的检测结果输出至心跳探测日志probe.log中,将健康检查模块的检测结果输出至健康检查日志healthChk.log中。其中,本发明可以对配置文件进行维护期的设定。

需要说明的是,本发明可以通过在两台ETL虚拟机上部署异步定时任务,针对所有目标数据库的可用性、实例状态、连接数、Age值和超长sql等重要指标,进行及时监控和异常告警。其中,两台ETL虚拟机也只需安装数据库客户端,具有易维护、易扩展和低成本的优点。

本实施例提出的数据库监控方法,可以通过部署和使用两台ETL虚拟机,对多个目标数据库进行周期性的轮询巡检,提高巡检的高可用性和检测结果的准确性。

基于图1所示步骤,如图7所示,本实施例提出第一种数据库监控装置,该装置可以包括:解析单元101、第一确定单元102、连接单元103、第一检测单元104、第二确定单元105和第二检测单元106,其中:

解析单元101,被配置为执行:解析预定义好的配置文件;

第一确定单元102,被配置为执行:确定目标数据库;

连接单元103,被配置为执行:连接目标数据库;

需要说明的是,本发明可以应用于ETL虚拟机。

其中,配置文件中可以包括有一个或多个待监控数据库的基本信息。具体的,本发明可以从配置文件中读取待监控数据库的基本信息,并基于待监控数据库的基本信息,对待监控数据库进行连接和访问,进而可以对待监控数据库进行相关数据的检测,从数据库层面实现对待监控数据库的监控。

其中,待监控数据库和目标数据库均可以为GreenPlum数据库。

可选的,配置文件中记录有至少一行预定义信息,各预定义信息均包括一个待监控数据库的基本信息,基本信息包括数据库服务IP、数据库名、用户名和用户密码。此时,解析单元101,被配置为执行:在配置文件中,读取目标预定义信息,目标预定义信息为目标行数的预定义信息;

第一确定单元102,被配置为执行:将目标预定义信息对应的待监控数据库,确定为当前的目标数据库;

连接单元103,被配置为执行:利用当前的目标数据库的数据库服务IP、数据库名、用户名和用户密码,连接目标数据库。

其中,数据库服务IP可以为用于连接目标数据库的访问IP。

其中,数据库名可以为目标数据库的标识。

需要说明的是,数据库作为后端存储数据的场所,一般情况下可以禁止用户的直接访问,而本发明可以通过数据库客户端来连接和访问数据库。

具体的,上述ETL虚拟机可以安装数据库客户端(如GreenPlum数据库客户端),该客户端可以是访问数据库所必要的前端入口工具,用于把控用户访问数据库的权限。

其中,用户名为可以登录数据库客户端的用户账户,用户密码可以为相应用户账户登录的密码。

具体的,本发明可以使用用户名和用户密码登录数据库客户端,利用数据库服务IP和数据库名,访问和连接相应的目标数据库。

第一检测单元104,被配置为执行:至少一次使用心跳探测模块检测目标数据库的运行状态,至少一次的具体次数为第一次数;

其中,本发明可以在连接目标数据库后,使用心跳探测模块来检测目标数据库的运行状态。

需要说明的是,本发明每一次使用心跳探测模块来检测目标数据库的运行状态,即可以使用心跳探测模块对目标数据库的运行状态进行一次检测,之后可以获得一次检测结果。

其中,检测结果可以包括有目标数据库的运行状态为可用状态和目标数据库的运行状态为不可用状态两种情况。

可选的,在本实施例提出的其它数据库监控装置中,还可以包括:第三检测单元,其中:

第三检测单元,被配置为执行:心跳探测模块在检测目标数据库的运行状态的过程中,调用心跳探测语句对目标数据库的运行状态进行检测。

具体的,心跳探测模块可以通过调用心跳探测语句来检测目标数据库的运行状态。

可选的,当目标数据库为GreenPlum数据库时,心跳探测语句可以为probeChk.sql语句。

需要说明的是,为提高对目标数据库运行状态的检测准确率和有效性,本发明可以使用一次或者多次心跳探测模块对目标数据库进行检测,在每次检测结束时即获得相应的检测结果,之后再根据全部检测结果来确定目标数据库的最终运行状态。

其中,最终运行状态可以为最终有效的数据库运行状态。

可选的,本发明可以仅使用一次心跳探测模块对目标数据库进行检测,之后获得该次检测结果,并直接根据该次检测结果来确定目标数据库的最终运行状态。具体的,如果该次检测结果为目标数据库处于不可用状态,则本发明可以直接确定目标数据库的最终运行状态为不可用状态;如果该次检测结果为目标数据库处于可用状态,则本发明可以直接确定目标数据库的最终运行状态为可用状态。

可选的,本发明可以使用多次心跳探测模块对目标数据库进行检测,每次检测结束时即获得相应的检测结果,之后根据所有检测结果来确定目标数据库的最终运行状态。

需要说明的是,在采用多次检测的方式来确定目标数据库的最终运行状态时,本发明对于具体要进行的检测次数即上述第一次数的具体数值不做限定,如3次和5次等。

第二确定单元105,被配置为执行:根据心跳探测模块对目标数据库运行状态进行第一次数的检测的检测结果,确定目标数据库的最终运行状态;

其中,本发明可以根据一次或者多次使用心跳探测模块对目标数据库运行状态所进行检测的检测结果,来确定目标数据库的最终运行状态。

可选的,本发明在根据所有检测结果来确定目标数据库的最终运行状态的过程中,可以根据不同检测结果出现的次数来确定目标数据库的最终运行状态。

可选的,本发明也可以根据不同检测结果的占比来确定目标数据库的最终运行状态。

可选的,本发明也可以在多次使用心跳探测模块对目标数据库进行检测的过程中,根据前一次的检测结果来确定是否需要继续对目标数据库进行检测。

可选的,本发明可以在确定目标数据库的最终运行状态后,将其最终运行状态输出至心跳探测日志中进行保存。

第二检测单元106,被配置为执行:当确定目标数据库的最终运行状态为可用状态时,调用健康检查模块检测目标数据库的健康指标。

其中,健康检查模块可以通过用于健康检查的sql语句,获取目标数据库的某些重要性能参数和健康状态。

可选的,健康指标包括预定义好的待检查健康指标列表中的各项待检查健康指标,待检查健康指标列表中包括至少一项待检查健康指标。

可选的,本发明可以在检测出目标数据库的每一项健康指标时,即将相应健康指标的检测结果输出至健康检查日志中进行保存,也可以在检测出目标数据库的全部待检查健康指标后,再将检测结果输出至健康检查日志中进行保存。

可以理解的是,当确定目标数据库的最终运行状态为不可用状态时,目标数据库无法响应健康检查模块所执行的sql语句,导致健康检查模块无法正常对目标数据库进行健康检测。因此,当确定目标数据库的最终运行状态为不可用状态时,本发明可以禁止调用健康检查模块对目标数据库进行健康检测,减少无谓的资源消耗。

可选的,如图8所示,在本实施例提出的第二种数据库监控装置中,还可以包括:第一保存单元201和第二保存单元202,其中:

第一保存单元201,被配置为执行:在确定目标数据库的最终运行状态之后,将目标数据库的最终运行状态,输出至心跳探测日志中进行保存;

第二保存单元202,被配置为执行:在调用健康检查模块检测目标数据库的健康指标之后,将健康检查模块检测目标数据库的检测结果,输出至健康检查日志中进行保存。

具体的,本发明可以通过心跳探测日志和健康检查日志,有效实现对目标数据库进行监控数据的保存。

本实施例提出的数据库监控装置,可以无需在目标数据库上安装任何组件和脚本,在避免数据库复杂化的情况下,通过访问和连接目标数据库,调用心跳探测模块和健康检查模块来检测目标数据库的运行状态和健康指标,可以从数据库层面直接实现对于目标数据库的监控,进而可以对目标数据库出现的问题进行告警,实现对目标数据库的有效监控,有效提高目标数据库的工作效率。

基于图7,如图9所示,本实施例提出第三种数据库监控装置。在该装置中,第一次数与当前已使用心跳探测模块对目标数据库运行状态进行检测的检测结果相关;第一检测单元104包括:第三确定单元301和第一停止单元302,第二确定单元105包括:第四确定单元401;其中:

第三确定单元301,被配置为执行:当使用心跳探测模块检测出目标数据库的运行状态为不可用状态时,确定当前是否已连续使用心跳探测模块对目标数据库的运行状态进行第二次数的检测,且第二次数的检测结果均为不可用状态,如果是,则触发第一停止单元302;

需要说明的是,目标数据库可能会由于计算资源紧张等事况而暂时处于不可用状态,而在该事况消失(如计算资源恢复充足)时可以恢复为可用状态。因此,为有效提高对目标数据库运行状态的检测准确率,本发明可以在检测到目标数据库的运行状态为不可用状态时,继续对目标数据库的运行状态进行检测,仅在连续多次检测到目标数据库的运行状态为不可用状态时,才确定目标数据库的最终运行状态为不可用状态。

具体的,本发明可以在某次使用心跳探测模块对目标数据库进行检测的检测结果为不可用状态时,继续使用心跳探测模块对目标数据库进行检测,如果已连续使用心跳探测模块对目标数据库进行第二次数的检测,且该第二次数的检测结果均为不可用状态时,则本发明可以确定目标数据库的运行状态为不可用状态。

其中,第二次数可以由技术人员根据实际工作情况进行制定,本发明对此不做限定。

第一停止单元302,被配置为执行:停止使用心跳探测模块检测目标数据库的运行状态;

具体的,本发明可以在确定目标数据库的运行状态为不可用状态时,停止对目标数据库进行检测,减少资源消耗。

第四确定单元401,被配置为执行:在当前已连续使用心跳探测模块对目标数据库的运行状态进行第二次数的检测,且第二次数的检测结果均为不可用状态时,确定目标数据库的最终运行状态为不可用状态。

需要说明的是,本发明可以在某次检测到目标数据库的运行状态为可用状态时,即直接确定目标数据库的最终运行状态为可用状态,而无需再进行检测,进一步减少资源消耗。

可选的,基于图4,如图10,本实施例提出第四种数据库监控装置。在第四种数据库监控装置中,第一检测单元104还可以包括:第五确定单元303,第二确定单元105还包括:第六确定单元402,其中:

第五确定单元303,被配置为执行:当使用心跳探测模块检测出目标数据库的运行状态为可用状态时,停止使用心跳探测模块监测目标数据库的运行状态;

具体的,本发明在某次检测到目标数据库的运行状态为可用状态时,即可以停止检测,直接确定目标数据库的最终运行状态为可用状态。

第六确定单元402,被配置为执行:当使用心跳探测模块检测出目标数据库的运行状态为可用状态时,确定目标数据库的最终运行状态为可用状态。

本实施例提出的数据库监控装置,可以有效提高对于目标数据库运行状态的检测准确率,也可以有效减少资源消耗。

还需要说明的是,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、商品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、商品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括要素的过程、方法、商品或者设备中还存在另外的相同要素。

以上仅为本申请的实施例而已,并不用于限制本申请。对于本领域技术人员来说,本申请可以有各种更改和变化。凡在本申请的精神和原理之内所作的任何修改、等同替换、改进等,均应包含在本申请的权利要求范围之内。

相关技术
  • 一种基于数据库云的数据库监控平台及监控方法
  • 一种数据库表容量监控方法及装置
技术分类

06120113270365