数据库心跳检测方法以及装置制造方法及图纸

技术编号:15791933 阅读:69 留言:0更新日期:2017-07-09 22:40
本申请公开了一种数据库心跳检测方法,包括:创建待检测数据库的工作进程;所述工作进程用于按照预设的时间间隔,分别向所述待检测数据库的主库和备库的重做日志文件中写入日志记录;读取所述主库的重做日志文件中写入时间最晚的日志记录的第一时间信息;比较所述第一时间信息和预先获取的时间信息,若二者的时间差大于预设的时间阈值,则执行下述步骤:读取所述备库的重做日志文件中写入时间最晚的日志记录的第二时间信息;判断所述第一时间信息与所述第二时间信息的时间差是否小于预设的时间差阈值;若是,则执行所述主库和所述备库的切换。该方法降低了主库出现异常的概率,减少了主备库切换次数,提升了数据库的处理效率。

【技术实现步骤摘要】
数据库心跳检测方法以及装置
本申请涉及数据库领域,具体涉及一种数据库心跳检测方法。本申请同时提供一种数据库心跳检测装置,此外,本申请还提供另外两种数据库心跳检测方法以及装置。
技术介绍
随着企业信息系统的广泛应用和深入发展,对于一些关键的信息系统,比如应用系统、数据库和存储网络等,维持高可用性是非常重要的,对于这些信息系统的需求,主要体现在确保关键数据的高可用性,为了保护关键数据免受计划内以及计划外停机的影响,基于高可用架构的集群日益被接受并广泛使用,作为高可用集群的基础组件,心跳(Heartbeat)监测确保了高可用集群的数据的可靠性。Heartbeat是Linux-HA工程的一个组成部分,它实现了一个高可用集群系统,心跳监测技术和集群通信是高可用集群的两个关键组件,在Heartbeat项目里,由heartbeat模块实现了这两个功能,heartbeat包括两个核心部分:心跳监测部分和资源接管部分,心跳监测可以通过网络链路和串口进行,而且支持冗余链路,相互之间通过发送报文通知对方自身当前的状态,如果在指定的时间内未收到对方发送的报文,认为对方失效,启动资源接管模块来接管运行在对方主机上的资源或者服务。现有的数据库心跳检测方法,在主库创建一个数据表,该数据表汇总包含一个用于存储时间戳的心跳字段;心跳检测时,首先连接到主库,将当前时间戳更新到创建的数据表的心跳字段,若更新成功,则表示心跳成功;若更新失败,或者在一定时间段内数据库没有返回响应,则表示心跳失败,多次心跳尝试失败后,进入Failover(失效转移)流程;进入Failover(失效转移)流程后,根据主库中最后一次更新失败的时间,以及备库中创建的数据表的心跳字段记录的时间,比较得出主库和备库之间延迟的时间,如果延迟的时间在允许范围内,则执行主库和备库的切换,否则不切换。上述现有技术所述的数据库心跳检测方法存在明显的缺陷。所述数据库心跳检测方法,首先将当前时间戳更新到主库中预先创建的数据表中记录心跳时间的字段,这一更新操作需要加锁,在更新过程中,会执行写重做日志(RedoLog)、审计日志、统计信息等操作,主库的处理繁忙,响应时间容易抖动,可能导致更新超时,从而引发主库和备库的切换;同时,由于每一次更新会占用一个连接,如果出现更新超时,会重复发起更新请求,占用多个连接,甚至可能将主库所有允许的连接全部占用,从而导致数据库故障;此外,在进行心跳检测时,需要连接到主库,通过网络连接并进行认证,主库通过创建进程来处理连接,由于连接的过程较长,因此,一旦任意节点出现抖动或堵塞,都可能造成数据库心跳异常,从而引发主库和备库的切换。
技术实现思路
本申请提供一种数据库心跳检测方法,以解决现有技术存在的响应时间抖动和容易引发主备切换的问题。本申请同时提供一种数据库心跳检测装置,此外,本申请还提供另外两种数据库心跳检测方法以及装置。本申请提供一种数据库心跳检测方法,包括:创建待检测数据库的工作进程;所述工作进程用于按照预设的时间间隔,分别向所述待检测数据库的主库和备库的重做日志文件中写入日志记录;读取所述主库的重做日志文件中写入时间最晚的日志记录的第一时间信息;比较所述第一时间信息和预先获取的时间信息,若二者的时间差大于预设的时间阈值,则执行下述步骤:读取所述备库的重做日志文件中写入时间最晚的日志记录的第二时间信息;判断所述第一时间信息与所述第二时间信息的时间差是否小于预设的时间差阈值;若是,则执行所述主库和所述备库的切换。可选的,所述日志记录中包含该日志记录写入所述重做日志文件时的时间信息。可选的,所述读取所述主库的重做日志文件中写入时间最晚的日志记录的第一时间信息步骤执行前,执行下述步骤:实时获取当前的时间信息。可选的,所述比较所述第一时间信息和预先获取的时间信息步骤,若二者的时间差小于或者等于所述时间阈值,执行下述步骤:按照预先设置的心跳检测时间间隔执行延时,延时执行完成后,执行所述实时获取当前的时间信息步骤。可选的,所述判断所述第一时间信息与所述第二时间信息的时间差是否小于预设的时间差阈值步骤中,若判断结果为否,执行下述步骤:发出所述主库心跳异常的告警消息,并执行所述实时获取当前的时间信息步骤。可选的,所述工作进程,是基于fork()函数创建的。可选的,所述创建数据库进程步骤执行后,所述读取所述主库的重做日志文件中写入时间最晚的日志记录的第一时间信息步骤执行前,执行下述步骤:读取所述时间间隔的配置参数;按照所述时间间隔,分别向所述主库和所述备库的重做日志文件中写入各自对应的日志记录。本申请提供一种数据库心跳检测装置,包括:工作进程创建单元,用于创建待检测数据库的工作进程;所述工作进程用于按照预设的时间间隔,分别向所述待检测数据库的主库和备库的重做日志文件中写入日志记录;第一时间信息读取单元,用于读取所述主库的重做日志文件中写入时间最晚的日志记录的第一时间信息;第一时间信息比较单元,用于比较所述第一时间信息和预先获取的时间信息,若二者的时间差大于预设的时间阈值,则执行下述步骤:第二时间信息读取单元,用于读取所述备库的重做日志文件中写入时间最晚的日志记录的第二时间信息;时间信息判断单元,用于判断所述第一时间信息与所述第二时间信息的时间差是否小于预设的时间差阈值;若是,则进入主备切换执行单元;所述主备切换执行单元,用于执行所述主库和所述备库的切换。可选的,所述数据库心跳检测装置,包括:当前时间获取单元,用于实时获取当前的时间信息。可选的,所述数据库心跳检测装置,包括:延时单元,用于按照预先设置的心跳检测时间间隔执行延时。可选的,所述数据库心跳检测装置,包括:告警消息发出单元,用于发出所述主库心跳异常的告警消息。可选的,所述数据库心跳检测装置,包括:配置参数读取单元,用于读取所述时间间隔的配置参数;日志记录写入单元,用于按照所述时间间隔,分别向所述主库和所述备库的重做日志文件中写入各自对应的日志记录。本申请另外提供一种数据库心跳检测方法,包括:创建待检测数据库的工作进程;所述工作进程用于按照预设的时间间隔,分别向所述待检测数据库的主库和备库的重做日志文件中写入日志记录;读取所述主库的重做日志文件中写入时间最晚的日志记录的第一时间信息,以及该日志记录在所述主库的重做日志文件中的第一位置信息;比较所述第一时间信息和预先获取的时间信息,若二者的时间差大于预设的时间阈值,则执行下述步骤:读取所述备库的重做日志文件中写入时间最晚的日志记录、在所述备库的重做日志文件中的第二位置信息;判断所述第一位置信息与所述第二位置信息的位置差是否小于预设的位置差阈值;若是,则执行所述主库和所述备库的切换。可选的,所述读取所述主库的重做日志文件中写入时间最晚的日志记录的第一时间信息,以及该日志记录在所述主库的重做日志文件中的第一位置信息步骤执行前,执行下述步骤:实时获取当前的时间信息。可选的,所述判断所述第一位置信息与所述第二位置信息的位置差是否小于预设的位置差阈值步骤中,若判断结果为否,执行下述步骤:发出所述主库心跳异常的告警消息,并执行所述实时获取当前的时间信息步骤。本申请另外提供一种数据库心跳检测装置,包括:工作进程创建单元,用于创建待检测数据库的工作进程;所述工作进程用于按本文档来自技高网
...
数据库心跳检测方法以及装置

【技术保护点】
一种数据库心跳检测方法,其特征在于,包括:创建待检测数据库的工作进程;所述工作进程用于按照预设的时间间隔,分别向所述待检测数据库的主库和备库的重做日志文件中写入日志记录;读取所述主库的重做日志文件中写入时间最晚的日志记录的第一时间信息;比较所述第一时间信息和预先获取的时间信息,若二者的时间差大于预设的时间阈值,则执行下述步骤:读取所述备库的重做日志文件中写入时间最晚的日志记录的第二时间信息;判断所述第一时间信息与所述第二时间信息的时间差是否小于预设的时间差阈值;若是,则执行所述主库和所述备库的切换。

【技术特征摘要】
1.一种数据库心跳检测方法,其特征在于,包括:创建待检测数据库的工作进程;所述工作进程用于按照预设的时间间隔,分别向所述待检测数据库的主库和备库的重做日志文件中写入日志记录;读取所述主库的重做日志文件中写入时间最晚的日志记录的第一时间信息;比较所述第一时间信息和预先获取的时间信息,若二者的时间差大于预设的时间阈值,则执行下述步骤:读取所述备库的重做日志文件中写入时间最晚的日志记录的第二时间信息;判断所述第一时间信息与所述第二时间信息的时间差是否小于预设的时间差阈值;若是,则执行所述主库和所述备库的切换。2.根据权利要求1所述的数据库心跳检测方法,其特征在于,所述日志记录中包含该日志记录写入所述重做日志文件时的时间信息。3.根据权利要求2所述的数据库心跳检测方法,其特征在于,所述读取所述主库的重做日志文件中写入时间最晚的日志记录的第一时间信息步骤执行前,执行下述步骤:实时获取当前的时间信息。4.根据权利要求3所述的数据库心跳检测方法,其特征在于,所述比较所述第一时间信息和预先获取的时间信息步骤,若二者的时间差小于或者等于所述时间阈值,执行下述步骤:按照预先设置的心跳检测时间间隔执行延时,延时执行完成后,执行所述实时获取当前的时间信息步骤。5.根据权利要求3所述的数据库心跳检测方法,其特征在于,所述判断所述第一时间信息与所述第二时间信息的时间差是否小于预设的时间差阈值步骤中,若判断结果为否,执行下述步骤:发出所述主库心跳异常的告警消息,并执行所述实时获取当前的时间信息步骤。6.根据权利要求1所述的数据库心跳检测方法,其特征在于,所述工作进程,是基于fork()函数创建的。7.根据权利要求1所述的数据库心跳检测方法,其特征在于,所述创建数据库进程步骤执行后,所述读取所述主库的重做日志文件中写入时间最晚的日志记录的第一时间信息步骤执行前,执行下述步骤:读取所述时间间隔的配置参数;按照所述时间间隔,分别向所述主库和所述备库的重做日志文件中写入各自对应的日志记录。8.一种数据库心跳检测装置,其特征在于,包括:工作进程创建单元,用于创建待检测数据库的工作进程;所述工作进程用于按照预设的时间间隔,分别向所述待检测数据库的主库和备库的重做日志文件中写入日志记录;第一时间信息读取单元,用于读取所述主库的重做日志文件中写入时间最晚的日志记录的第一时间信息;第一时间信息比较单元,用于比较所述第一时间信息和预先获取的时间信息,若二者的时间差大于预设的时间阈值,则执行下述步骤:第二时间信息读取单元,用于读取所述备库的重做日志文件中写入时间最晚的日志记录的第二时间信息;时间信息判断单元,用于判断所述第一时间信息与所述第二时间信息的时间差是否小于预设的时间差阈值;若是,则进入主备切换执行单元;所述主备切换执行单元,用于执行所述主库和所述备库的切换。9.根据权利要求8所述的数据库心跳检测装置,其特征在于,包括:当前时间获取单元,用于实时获取当前的时间信息。10.根据权利要求9所述的数据库心跳检测装置,其特征在于,包括:延时单元,用于按照预先设置的心跳检测时间间隔执行延时。11.根据权利要求9所述的数据库心跳检测装置,其特征在于,包括:告警消息发出单元,用于发出所述主库心跳异常的告警消息。12.根据权利要求8所述的数据库心跳检测装置,其特征在于,包括:配置参数读取单元,用于读取所述时间间隔的配置参数;日志记录写入单元,用于按照所述时间间隔,分别向所述主库和所述备库的重做日志文件中写入各自对应的日志记录。13.一种数据库心跳检测方法,其特征在于,包括:创建待检测数据库的工作进程;所述工作进程用于按照预设的时间间隔,分别向所述待检测数据库的主库和备库的重做日志文件中写入日志记录;读取所述主库的重做日志文件中写入时间最晚的日志记录的第一时间信息,以及该日志记录在所述主库的重做日志文件中的第一位置信息;比较所述第一时间信息和预先获取的时间信息,若二者的时间差大于预设的时间阈值,则执行下述步骤:读取所述备库的重做日志文件中写入时间最晚的日志记录、在所述备库的重做日志文件中的第二位置信息;判断所述第一位置信息与所述第二位置信息的位置差是否小于预设的位置差阈值;若是,则执行所述主库和所述备库的切换。14.根据权利要求13所述的数据库心跳检测方法,其特征在于,所述读取所述主库的重做日志文件中写入时间最晚的日志记录的第一时间信息,以及该日志记录在所述主库的重做日志文件中的第一位置信息步骤执行前,执行下述步骤:实时获取当前的时间信息。15.根据权利要求14所述的数据库心跳检测方法,其特征在于,所述判断所述第一位置信息与所述第二位置信息的位置差是否小于预设的位置差阈值步骤中,若判断结果为否,执行下述步骤:发出所述主库心跳异常的告警消息,并执行所述实时获取当前的时间信息步骤。16.一种数据库心跳检测装置,其特征在于,包括:工作进程创建单元...

【专利技术属性】
技术研发人员:周正中
申请(专利权)人:阿里巴巴集团控股有限公司
类型:发明
国别省市:开曼群岛,KY

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1