logo好方法网

数据库状态的检测方法、装置、电子设备及其存储介质


技术摘要:
本申请提供一种数据库状态的检测方法、装置、电子设备及其存储介质,所述方法应用于应用服务器,所述应用服务器对应连接有主数据库和至少一个从属数据库,包括:获取应用服务器中的中间件的运行状态;当获取到所述中间件的运行状态为启动状态时,在所述中间件中创建检  全部
背景技术:
目前,随着IOE(IBM,ORACLE,EMC)运动的大力发展,越来越多的互联网企业使用 MySQL数据库作为后台数据库。基于MySQL(MySQL是一个关系型数据库管理系统)与NFS (NetworkFile  System,网络文件系统)的高可用服务器搭建已经非常成熟,高可用方案要 求数据库可靠和数据库可用,所述数据库可靠指的是数据可靠,所述数据可靠是指数据不 能丢失等,所述数据库可用指的是数据库服务可用,所述服务可用是指服务器不能宕机等。 现有高可用方案一般通过高可用工具,例如MHA(Master  High  Availability)和 orchestrator软件,MHA软件由MHA  Manager(管理节点)和MHA  Node(数据节点)两部分组 成。MHA  Manager可以单独部署在一台独立的机器上管理多个主库-从库集群,也可以部署 在一台从库节点上。MHA  Node运行在每台MySQL服务器上,MHA  Manager会定时探测集群中 的主库节点,当主库出现故障时,自动执行故障切换,即将最新数据的从库提升为新的主 库,然后将所有其他的从库重新指向新的主库。Orchestrator则是节点定期连接或断开 MySQL主库,如果主库连接不上,则连接从库,在从库校验主库和从库之间的读写线程,如果 从库读写线程也显示异常,则判断主库故障。 以上两种高可用用方案都存在由于单点检测而导致的精度低的问题,MHA只对主 库节点一个节点进行单点检测,容易造成误判,且时效性低;而Orchestrator的检测机制会 造成当Orchestrator主库节点探测出问题同时从库夯住时,Orchestrator自身获获取不到 读写线程的状态的时候可能误判数据库故障。目前两种高可用方案都导致会导致检测结果 不够准确的问题,有可能造成主库被当做故障数据库而被误切为从属数据库。
技术实现要素:
基于此,有必要针对上述技术问题,提供一种能够提高数据库故障检测准确性的 数据库状态的检测方法、装置、电子设备及其存储介质。 一方面,本申请提供一种数据库状态的检测方法,应用于应用服务器,所述应用服 务器对应连接有主数据库和至少一个从属数据库,包括: 获取应用服务器中的中间件的运行状态; 当获取到所述中间件的运行状态为启动状态时,在所述中间件中创建检验数据库 的多个校验协程; 根据所述多个校验协程确定主数据库的状态。 在一些实施例中,所述多个校验协程包括第一校验协程; 所述根据所述多个校验协程确定主数据库的状态的步骤,包括: 根据所述多个校验协程进行数据库校验得到多个校验状态,所述多个校验状态为 4 CN 111552637 A 说 明 书 2/13 页 除了第一校验协程外的多个校验协程分别进行数据库检验得到的状态; 当所述多个校验状态中任一校验状态为异常状态时,根据所述第一校验协程获取 多个校验状态; 根据所述多个校验状态确定主数据库的状态。 在一些实施例中,所述多个校验协程包括第二校验协程,所述多个校验状态包括 第一校验状态,所述第一校验状态为第二校验协程检验数据库得到的状态; 所述根据所述多个校验状态确定主数据库的状态的步骤,包括: 根据所述第二校验协程获取第一值、第二值以及第三值,所述第一值为所述第二 校验协程将所述数据写入请求发送到数据库的主数据库节点上的次数,所述第二值为所述 第二校验协程接收到的所述数据写入请求返回所述主数据库节点上的次数,所述第三值为 根据所述第一值和第二值得到的第三值; 将所述第三值和第一预设阈值进行比较,得到比较结果; 根据比较结果得到第一校验状态。 在一些实施例中,所述多个校验协程包括第三校验协程,所述多个校验状态包括 第二校验状态,所述第二校验状态为第三校验协程检验数据库得到的状态; 所述根据所述多个校验状态确定主数据库的状态的步骤,包括: 根据所述第三校验协程将检验数据插入主数据库的请求发送至所述主数据库节 点,得到第一结果和第二结果,所述第一结果为将所述数据是否成功插入主数据库的结果, 所述第二结果为请求发送是否成功的结果; 根据所述第一结果和第二结果,得到所述第二校验状态。 在一些实施例中,所述多个校验协程包括第四校验协程,所述多个校验状态包括 第四校验状态,所述第四校验状态为第三校验协程检验数据库得到的状态; 所述根据所述多个校验状态确定主数据库的状态的步骤,包括: 根据所述第四校验协程获取从属数据库的读写线程的状态,所述读写线程的状态 为所述从属数据库通过所述读写线程与所述主数据库的连接状态; 根据所述读写线程的状态得到第三校验状态。 在一些实施例中,所述根据所述多个校验状态确定主数据库的状态的步骤,包括: 当第一校验状态、第二校验状态以及第三校验状态均为异常状态时,确定所述数 据库的状态为异常状态; 当第一校验状态、第二校验状态、第三校验状态中的任一校验状态为正常状态时, 确定所述数据库的状态为正常状态。 在一些实施例中,所述确定所述数据库的状态为异常状态的步骤之后,还包括: 当确定所述数据库的状态为异常状态时,在所述至少一个从属数据库中选择目标 数据库,将所述目标数据库调整为主数据库。 另一方面,本申请还提供一种数据库的状态的检测装置,所述装置包括: 检测单元,用于获取应用服务器中的中间件的运行状态; 创建单元,用于当获取到所述中间件的运行状态为启动状态时,在所述中间件中 创建检验数据库的多个校验协程; 处理单元,用于根据所述多个校验协程确定主数据库的状态。 5 CN 111552637 A 说 明 书 3/13 页 在一些实施例中,所述多个校验协程包括第一校验协程;所述处理单元用于: 根据所述多个校验协程进行数据库校验得到多个校验状态,所述多个校验状态为 除了第一校验协程外的多个校验协程分别进行数据库检验得到的状态; 当所述多个校验状态中任一校验状态为异常状态时,根据所述第一校验协程获取 多个校验状态; 根据所述多个校验状态确定主数据库的状态。 在一些实施例中,所述多个校验协程包括第二校验协程,所述多个校验状态包括 第一校验状态,所述第一校验状态为第二校验协程检验数据库得到的状态;所述处理单元 用于: 根据所述第二校验协程获取第一值、第二值以及第三值,所述第一值为所述第二 校验协程将所述数据写入请求发送到数据库的主数据库节点上的次数,所述第二值为所述 第二校验协程接收到的所述数据写入请求返回所述主数据库节点上的次数,所述第三值为 根据所述第一值和第二值得到的第三值; 将所述第三值和第一预设阈值进行比较,得到比较结果; 根据比较结果得到第一校验状态。 在一些实施例中,所述多个校验协程包括第三校验协程,所述多个校验状态包括 第二校验状态,所述第二校验状态为第三校验协程检验数据库得到的状态;所述处理单元 用于: 根据所述第三校验协程将检验数据插入主数据库的请求发送至所述主数据库节 点,得到第一结果和第二结果,所述第一结果为将所述数据是否成功插入主数据库的结果, 所述第二结果为请求发送是否成功的结果; 根据所述第一结果和第二结果,得到所述第二校验状态。 在一些实施例中,所述多个校验协程包括第四校验协程,所述多个校验状态包括 第四校验状态,所述第四校验状态为第三校验协程检验数据库得到的状态;所述处理单元 用于: 根据所述第四校验协程获取从属数据库的读写线程的状态,所述读写线程的状态 为所述从属数据库通过所述读写线程与所述主数据库的连接状态; 根据所述读写线程的状态得到第三校验状态。 在一些实施例中,所述处理单元用于: 当第一校验状态、第二校验状态以及第三校验状态均为异常状态时,确定所述数 据库的状态为异常状态; 当第一校验状态、第二校验状态、第三校验状态中的任一校验状态为正常状态时, 确定所述数据库的状态为正常状态。 在一些实施例中,所述处理单元还用于: 当确定所述数据库的状态为异常状态时,在所述至少一个从属数据库中选择目标 数据库,将所述目标数据库调整为主数据库。 另一方面,本申请还提供一种电子设备,所述电子设备包括: 一个或多个处理器; 存储器,用于存储一个或多个程序, 6 CN 111552637 A 说 明 书 4/13 页 当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理 器实现所述的数据库状态的检测方法。 另一方面,本申请还提供一种计算机可读存储介质,其上存储有计算机程序,该程 序被处理器执行时所述的数据库状态的检测方法。 本申请通过中间件创建多个校验协程来对数据库状态进行检测,判断主数据库是 否出现故障,通过多个校验协程的状态以进行综合判断主数据库的状态,不因为单单某一 个校验协程出现异常就判断数据库异常,避免主数据库被误判为故障数据库,从而避免造 成故障数据库误切换,提高故障检测精度。 附图说明 下面结合附图,通过对本申请的
下载此资料需消耗2积分,
分享到:
收藏