一种提升数据库可用性的方法和装置与流程

文档序号:14071460阅读:164来源:国知局

本发明涉及计算机及其软件技术领域,特别涉及一种提升数据库可用性的方法和装置。



背景技术:

随着互联网日益迅速发展,互联网公司的各种数据呈现爆炸式增长,现在虽然有很多分布式非关系型数据库nosql解决了数据增长所带来的一部分问题,但是还有一些业务是需要关系型数据库进行支撑的。现有的关系型数据库在分布式部署分布式事物方面较弱,尤其是当数据量大的时候,单机数据库成为性能瓶颈;现在很多公司的产品虽然在使用自己的数据水平切分规则,但只能暂时解决数据库性能问题。

现有技术方案中,如果数据库出现故障,被中断的服务需等待数据库问题解决后,才重新向用户提供服务;或者使用主从数据库切换,一般应用连接数据库时使用域名或者虚拟ip,人工执行切换方案时使用从数据库ip与域名或者虚拟ip进行映射,并且为了防止数据丢失,通常先在应用层面限制请求流量,切换后重新开启请求流量;而如果数据库服务器出现故障则需要人为进行干预,而且一旦增加或者减少服务器的数量则需要对大量数据进行迁移,进而造成运维困难。

综上所述,现有技术中所存在的缺点主要包括以下几方面:

1.数据库出现故障时往往不能被运维人员即时发现,需要人为确定问题然后执行主从数据库切换方案,并且在进行数据库切换时需要多方配合完成,不能即时修复问题。

2.由于数据库出现问题的时间不可预知,因而需要运维人员7×24小时值班检查,增加了人力监管的成本。

3.由于现有技术方案不是分布式的,在应用和数据库之间还有一层单独的中间件,应用访问数据库是通过中间件进行访问的,所以单个中间件一旦故障则导致服务器不可用,而且所有请求都访问中间件,则会使中间件响应速度变慢导致整体性能下降,从而出现单点故障不可用或者单点性能瓶颈。

4.现有的技术方案中,客户端在连接数据库时由开发人根据数据库配置信息进行配置,从而使数据库的重要信息对于开发人员来说是透明的,进而形成安全隐患。



技术实现要素:

有鉴于此,本发明提供一种提升数据库可用性的方法和装置,能够在数据库出现故障时自动检测并且自动执行切换方案,提升了数据库的可用性;同时避免了运维人员实时检查数据库,减少了人力监管成本。

为实现上述目的,根据本发明的一个方面,提供了一种提升数据库可用性的方法。

本发明的提升数据库可用性的方法包括:数据库服务器每隔设定的时长将数据库可用性检测任务按照设定的规则发送给已建立数据库连接的客户端;所述数据库服务器接收到客户端所返回的数据库不可用的检测报告后,建立该数据库的异常检测任务,并将该异常检测任务分配给n个客户端;所述数据库服务器接收到所述n个客户端返回的所述数据库异常的检测报告后,根据所收到的数据库异常检测报告的数量判定该数据库为故障数据库,并将该数据库切换为该数据库的备用数据库。

可选地,根据所收到的数据库异常检测报告的数量判定该数据库为故障数据库的步骤包括:判断所接收到的数据库异常检测报告的数量是否不小于(n+1)/2,并在数量不小于(n+1)/2时,判定该数据库为故障数据库;所述n为不小于3的奇数。

可选地,数据库服务器每隔设定的第一时长将数据库可用性检测任务按照设定的规则发送给已建立数据库连接的客户端的步骤之前还包括:数据库服务器接收客户端所注册的客户端信息,并根据客户端信息确定已建立数据库连接的客户端的数量。

可选地,将该数据库切换为该数据库的备用数据库的步骤之后还包括:数据库服务器记录执行日志;所述执行日志包括数据库切换日志和数据库调度日志。

可选地,数据库服务器接收客户端所注册的客户端信息的步骤之后还包括:数据库服务器将所述接收到的客户端信息存储于备用服务器中。

可选地,数据库服务器将所述接收到的客户端信息存储于备用服务器中的步骤之后还包括:在数据库服务器发生故障的情况下,将备用服务器作为数据库服务器提供服务。

可选地,所述备用服务器包括与所述数据库服务器位于同一机房的服务器以及与所述数据库服务器处于不同机房的服务器。

根据本发明的另一个方面,提供了一种提升数据库可用性的装置。

本发明的提升数据库可用性的装置,设置于数据库服务器中,包括:任务发送模块,用于每隔设定的时长将数据库可用性检测任务按照设定的规则发送给已建立数据库连接的客户端;任务分配模块,用于在接收到客户端所返回的数据库不可用的检测报告后,建立该数据库的异常检测任务,并将该异常检测任务分配给n个客户端;判断模块,用于在接收到所述n个客户端返回的所述数据库异常的检测报告后,根据所收到的数据库异常检测报告的数量判定该数据库为故障数据库,并将该数据库切换为该数据库的备用数据库。

可选地,所述判断模块还用于:判断所接收到的数据库异常检测报告的数量是否不小于(n+1)/2,并在数量不小于(n+1)/2时,判定该数据库为故障数据库;所述n为不小于3的奇数。

可选地,还包括接收模块,用于接收客户端所注册的客户端信息,并根据客户端信息确定已建立数据库连接的客户端的数量。

可选地,还包括记录模块,用于记录执行日志;所述执行日志包括数据库切换日志和数据库调度日志。

可选地,还包括存储模块,用于将所述接收到的客户端信息存储于备用服务器中。

可选地,还包括切换模块,用于在数据库服务器发生故障的情况下,将备用服务器作为数据库服务器提供服务。

可选地,所述备用服务器包括与所述数据库服务器位于同一机房的服务器以及与所述数据库服务器处于不同机房的服务器。

根据本发明的技术方案,能够对数据库进行自动检测,并且在数据库出现故障时自动执行切换方案,从而提升了数据库的可用性;同时也避免了运维人员实时检查数据库,减少了人力监管成本;同时由于增加了备用服务器,不仅避免了数据库服务器的单点问题,也在一定程度上提升了数据库的可用性。

附图说明

附图用于更好地理解本发明,不构成对本发明的不当限定。其中:

图1是根据本发明实施例的一种提升数据库可用性的方法的示意图;

图2是根据本发明实施例的一种提升数据库可用性的装置的示意图。

具体实施方式

以下结合附图对本发明的示范性实施例做出说明,其中包括本发明实施例的各种细节以助于理解,应当将它们认为仅仅是示范性的。因此,本领域普通技术人员应当认识到,可以对这里描述的实施例做出各种改变和修改,而不会背离本发明的范围和精神。同样,为了清楚和简明,以下的描述中省略了对公知功能和结构的描述。

图1是根据本发明实施例的一种提升数据库可用性的方法的示意图。如图1所示,本发明实施例的方法主要包括如下的步骤s10至步骤s12。

步骤s10:数据库服务器每隔设定的时长将数据库可用性检测任务按照设定的规则发送给已建立数据库连接的客户端。在该步骤中,数据库服务器按照设定的时间间隔将数据库可用性检测任务发送给已经建立数据库连接的客户端;所提到的设定的规则可以根据数据库的数量以及已建立数据库连接的客户端的数量进行规则设定,例如当前数据库的数量为5,已建立数据库连接的数量为5,则可将5个数据库可用性检测任务分别发送给5个客户端。

在步骤s10之前,数据库服务器接收客户端所注册的客户端信息,并根据接手到的客户端信息的数量确定已建立数据库连接的客户端的数量。在数据库服务器接收到客户端所注册的客户端信息之后,将该客户端信息同步于备用服务器中;该备用服务器既包括和当前使用的数据库服务器处于同一机房的服务器,也包括和当前使用的数据库服务器处于不同机房的服务器,即使当前使用的数据库服务器发生故障,也可以切换到同一机房的备用服务器上;同时如果机房发生断电等问题,也可以切换到另一个机房的备用服务器上,从而避免了数据库服务器发生单点故障而导致数据库不可用的问题。

在步骤s10之后,客户端接收到数据库服务器所发送的数据库可用性检测任务后,通过运行数据库语句,从而确定数据库是否可用,并在检测到数据库不可用的前提下,生成对应于该数据库不可用的检测报告,并将检测报告返回给数据库服务器。

步骤s11:所述数据库服务器接收到客户端所返回的数据库不可用的检测报告后,建立该数据库的异常检测任务,并将该异常检测任务分配给n个客户端。在该步骤中,当客户端所返回的有报告中显示某一个数据库不可用时,数据库服务器生成该数据库的异常检测任务,并将该异常检测任务分配给n个客户端。

在步骤s11之后,n个客户端收到数据库服务器所发送的数据库异常性检测任务,并通过运行数据库语句判定数据库是否为故障数据库,并在确定无法运行所述数据库语句后,生成该数据库异常的检测报告,并将该异常检测报告返回给数据库服务器。

步骤s12:数据库服务器接收到所述n个客户端返回的所述数据库异常的检测报告后,根据所收到的数据库异常检测报告的数量判定该数据库为故障数据库,并将该数据库切换为该数据库的备用数据库。在该步骤中,数据库服务器根据所接收到客户端所返回的数据库异常检测报告的数量判断是否超过了所发送的n个客户端的(n+1)/2;例如,在步骤s11中数据库服务器将某一数据库的异常检测任务分配给可5个客户端,如果5个客户端中只有2个客户端返回了数据库异常检测报告,那可以判断该数据库为正常数据库,可以继续使用;但是,如果5个客户端中有3个客户端返回了数据库异常检测报告,则可以判断该数据库为故障数据库,因此,数据库服务器将该数据库切换为该数据库的备用数据库。

在数据库服务器将故障数据库切换为该数据库的备用数据库之后,数据库服务器记录相关的数据库切换日志和数据库调度日志,以及其他一些数据库执行日志。

图2是根据本发明实施例的一种提升数据库可用性的装置的示意图。如图2所示,本发明实施例的提升数据库可用性的装置20设置于数据库服务器中,主要包括:任务发送模块21、任务分配模块22、以及判断模块23;任务发送模块21用于每隔设定的时长将数据库可用性检测任务按照设定的规则发送给已建立数据库连接的客户端;任务分配模块22用于在接收到客户端所返回的数据库不可用的检测报告后,建立该数据库的异常检测任务,并将该异常检测任务分配给n个客户端判断模块23用于在接收到所述n个客户端返回的所述数据库异常的检测报告后,根据所收到的数据库异常检测报告的数量判定该数据库为故障数据库,并将该数据库切换为该数据库的备用数据库。

判断模块23还可用于:判断所接收到的数据库异常检测报告的数量是否不小于(n+1)/2,并在数量不小于(n+1)/2时,判定该数据库为故障数据库;所述n为不小于3的奇数。

提升数据库可用性的装置20还可包括接收模块(图中未示出),用于接收客户端所注册的客户端信息,并根据客户端信息确定已建立数据库连接的客户端的数量。

提升数据库可用性的装置20还可包括记录模块(图中未示出),用于记录执行日志;所述执行日志包括数据库切换日志和数据库调度日志。

本发明实施例的提升数据库可用性的装置20还可包括存储模块(图中未示出),用于将所述接收到的客户端信息存储于备用服务器中;还可包括切换模块(图中未示出),用于在数据库服务器发生故障的情况下,将备用服务器作为数据库服务器提供服务;其中所提到的备用服务器包括与所述数据库服务器位于同一机房的服务器以及与所述数据库服务器处于不同机房的服务器,避免当一个机房因断电而导致服务器无法提供服务的问题。

根据本发明实施例的技术方案,能够对数据库进行自动检测,并且在数据库出现故障时自动执行切换方案,从而提升了数据库的可用性;同时也避免了运维人员实时检查数据库,减少了人力监管成本;同时由于增加了备用服务器,不仅避免了数据库服务器的单点问题,也在一定程度上提升了数据库的可用性。

上述具体实施方式,并不构成对本发明保护范围的限制。本领域技术人员应该明白的是,取决于设计要求和其他因素,可以发生各种各样的修改、组合、子组合和替代。任何在本发明的精神和原则之内所作的修改、等同替换和改进等,均应包含在本发明保护范围之内。

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