CN112231382A - 一种数据库访问方法及装置 - Google Patents
一种数据库访问方法及装置 Download PDFInfo
- Publication number
- CN112231382A CN112231382A CN202011137021.XA CN202011137021A CN112231382A CN 112231382 A CN112231382 A CN 112231382A CN 202011137021 A CN202011137021 A CN 202011137021A CN 112231382 A CN112231382 A CN 112231382A
- Authority
- CN
- China
- Prior art keywords
- server
- access request
- host
- initial
- online
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
- 238000000034 method Methods 0.000 title claims abstract description 51
- 238000001514 detection method Methods 0.000 claims abstract description 60
- 230000002159 abnormal effect Effects 0.000 claims description 21
- 230000008569 process Effects 0.000 description 12
- 230000005856 abnormality Effects 0.000 description 5
- 230000009471 action Effects 0.000 description 3
- 238000004590 computer program Methods 0.000 description 3
- 230000008859 change Effects 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 230000008878 coupling Effects 0.000 description 1
- 238000010168 coupling process Methods 0.000 description 1
- 238000005859 coupling reaction Methods 0.000 description 1
- 238000010586 diagram Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/25—Integrating or interfacing systems involving database management systems
- G06F16/252—Integrating or interfacing systems involving database management systems between a Database Management System and a front-end application
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
- G06F11/3003—Monitoring arrangements specially adapted to the computing system or computing system component being monitored
- G06F11/3006—Monitoring arrangements specially adapted to the computing system or computing system component being monitored where the computing system is distributed, e.g. networked systems, clusters, multiprocessor systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
- G06F11/3055—Monitoring arrangements for monitoring the status of the computing system or of the computing system component, e.g. monitoring if the computing system is on, off, available, not available
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/245—Query processing
- G06F16/24569—Query processing with adaptation to specific hardware, e.g. adapted for using GPUs or SSDs
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2201/00—Indexing scheme relating to error detection, to error correction, and to monitoring
- G06F2201/80—Database-specific techniques
Abstract
本公开提供了一种数据库访问方法及装置,涉及数据库技术领域,包括:获取访问请求;根据访问请求的操作类型,确定响应访问请求的初始服务器;根据检测操作判断初始服务器的在线状态;其中,检测操作为按照预设时间间隔,检测数据库集群中各服务器的在线状态的操作;如果初始服务器在线,则将访问请求发送至初始服务器执行。本公开能够提升对服务器在线状态的处理实时性,避免连接失败导致的网络等待,还能够降低数据库访问的复杂度。
Description
技术领域
本公开涉及数据库技术领域,尤其涉及一种数据库访问方法及装置。
背景技术
数据库集群作为高可用架构,已经被越来越多的应用到互联网业务中。高可用方案是指,当应用通过JDBC(Java Database Connectivity,Java数据库连接)访问数据库时,不会因数据库集群内部节点变化或者主备节点切换等事件,造成数据库对外的连接全部失效,从而影响应用的对数据库持续访问;而是能够自动检测集群状态,不需要重建JDBC连接还能继续访问数据库。
目前,高可用的访问数据库主要技术有如下两种:一种是通过应用端自己捕获JDBC驱动的异常并进行处理。此方案需要应用端增加很多和应用逻辑本身无关的处理,而且依赖于应用端处理,意味着想要实现该功能的应用都需要去处理相同的事情。另一种是通过中间件代理的方式,该方式需要增加一层代理层,且依赖于中间件对特定数据库的支持,对于一些国内数据库厂商支持并不好。同时,引入中间代理层还需要考虑中间代理节点自身的高可用方案,增加了整体复杂度。
因此,现有的访问数据库方案需要依赖应用的高可用处理,或者依赖中间件对特定数据库的支持,耦合性和方案复杂度较高,导致应用持续访问的可靠性较低,无法较好地实现高可用数据库的访问。
发明内容
为了解决上述技术问题或者至少部分地解决上述技术问题,本公开提供了一种数据库访问方法及装置。
本公开提供了一种数据库访问方法,包括:获取访问请求;根据所述访问请求的操作类型,确定响应所述访问请求的初始服务器;根据检测操作判断所述初始服务器的在线状态;其中,所述检测操作为按照预设时间间隔,检测数据库集群中各服务器的在线状态的操作;如果所述初始服务器在线,则将所述访问请求发送至所述初始服务器执行。
进一步,所述根据检测操作判断所述初始服务器的在线状态的步骤,包括:通过预先建立的检测线程,确定所述数据库集群中在线的主机服务器的主机IP地址;查询所述在线的主机服务器是否存在对应的在线备机服务器;如果存在,则获取所述在线备机服务器的备机IP地址;如果不存在,则判断所述在线的主机服务器是否为真的主机服务器;如果所述在线的主机服务器为真的主机服务器,则确定执行完成检测操作;如果所述在线的主机服务器不是真的主机服务器,则清空所述主机IP地址,并确定执行完成所述检测操作。
进一步,所述根据所述访问请求的操作类型,确定响应所述访问请求的初始服务器的步骤,包括:当所述访问请求的操作类型为写操作类型时,确定响应所述访问请求的初始服务器为第一主机服务器;当所述访问请求的操作类型为读操作类型时,确定响应所述访问请求的初始服务器为第一备机服务器。
进一步,所述将所述访问请求发送至所述初始服务器执行的步骤,包括:建立与所述第一主机服务器的连接;检测所述第一主机服务器是否为真的主机服务器;如果是真的主机服务器,将所述访问请求发送至所述第一主机服务器执行。
进一步,在所述将所述访问请求发送至所述初始服务器执行的步骤之后,所述方法还包括:当所述初始服务器执行所述访问请求出现异常时,重新确定响应所述访问请求的目标服务器,并将所述访问请求发送至所述目标服务器执行。
进一步,所述重新确定响应所述访问请求的目标服务器的步骤,包括:执行至少一次如下更新主机操作:在所述第一主机服务器对应的备机服务器中,检测是否存在提升为主机服务器的备机服务器;其中,所述更新主机操作的执行次数在预设次数之内;如果存在提升为主机服务器的备机服务器,则停止执行所述更新主机操作,并将所述提升为主机服务器的备机服务器更新为第二主机服务器;其中,所述第二主机服务器为响应所述访问请求的目标服务器。
进一步,所述重新确定响应所述访问请求的目标服务器的步骤,包括:将与所述第一备机服务器相对应的第三主机服务器,确定为响应所述访问请求的目标服务器。
进一步,所述方法还包括:如果所述初始服务器对所述访问请求的执行异常信息为预设异常信息,且所述第三主机服务器对所述访问请求执行成功,则将所述第一备机服务器的状态设置为掉线状态。
本公开还提供了一种数据库访问装置,包括:请求获取模块,用于获取访问请求;服务器确定模块,用于根据所述访问请求的操作类型,确定响应所述访问请求的初始服务器;状态检测模块,用于根据检测操作判断所述初始服务器的在线状态;其中,所述检测操作为按照预设时间间隔,检测数据库集群中各服务器的在线状态的操作;请求发送模块,用于如果所述初始服务器在线,则将所述访问请求发送至所述初始服务器执行。
本公开实施例提供的技术方案与现有技术相比具有如下优点:
本公开实施例提供的数据库访问方法及装置,首先根据访问请求的操作类型,确定响应访问请求的初始服务器;然后根据检测操作判断初始服务器的在线状态;并在初始服务器在线的情况下,将访问请求发送至初始服务器执行。上述方式无需依赖应用端或者代理层,仅需在确定初始服务器之后,并在建立与初始服务器的连接之前,预先对包含初始服务器在内的集群中各服务器的在线状态进行检测,该方式不但能够提升对服务器在线状态的处理实时性,避免连接失败导致的网络等待,还能够降低数据库访问的复杂度。
附图说明
此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本公开的实施例,并与说明书一起用于解释本公开的原理。
为了更清楚地说明本公开实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,对于本领域普通技术人员而言,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1为本公开实施例所述一种数据库访问方法流程图;
图2为本公开实施例所述检测操作的执行方法流程图;
图3为本公开实施例所述另一种数据库访问方法流程图;
图4为本公开实施例所述数据库访问装置结构框图。
具体实施方式
为了能够更清楚地理解本公开的上述目的、特征和优点,下面将对本公开的方案进行进一步描述。需要说明的是,在不冲突的情况下,本公开的实施例及实施例中的特征可以相互组合。
在下面的描述中阐述了很多具体细节以便于充分理解本公开,但本公开还可以采用其他不同于在此描述的方式来实施;显然,说明书中的实施例只是本公开的一部分实施例,而不是全部的实施例。
实施例一:
参照图1所示的数据库访问方法流程图,该方法可以包括如下步骤:
S102,获取访问请求;其中,访问请求为SQL语句格式的访问请求。
S104,根据访问请求的操作类型,确定响应访问请求的初始服务器。
操作类型包括读操作类型和写操作类型。在本实施例中,当访问请求的操作类型为写操作类型时,响应访问请求的服务器为数据库集群中的主机服务器,在此可以确定初始服务器为第一主机服务器;当访问请求的操作类型为读操作类型时,响应访问请求的服务器为数据库集群中的备机服务器,在此可以确定初始服务器为第一备机服务器。
S106,根据检测操作判断初始服务器的在线状态;其中,检测操作为按照预设时间间隔,检测数据库集群中各服务器的在线状态的操作。
在现有技术中,并不会对初始服务器或集群中其他服务器的在线状态进行检测;在此情况下,如果初始服务器不在线,则即将与初始服务器建立的连接是无效的,这样将会经过较长的网络等待时间之后,才返回连接失败的结果。相比于此,本实施例在JDBC驱动的分离器建立与初始服务器的连接之前,首先根据检测操作及时检测数据库集群中各服务器的在线状态,其中包括初始服务器的在线状态。
S108,在初始服务器在线的情况下,将访问请求发送至初始服务器执行。同时,可以理解的是,在检测到初始服务器不在线的情况下,可以直接返回错误信息并不再与初始服务器建立连接,避免了较长的等待时间;同时,参照步骤S106,按照预设时间间隔继续执行检测操作,直至当检测到初始服务器在线时,将访问请求发送至初始服务器执行。
本公开实施例提供的数据库访问方法,首先根据访问请求的操作类型,确定响应访问请求的初始服务器;然后根据检测操作判断初始服务器的在线状态;并在初始服务器在线的情况下,将访问请求发送至初始服务器执行。上述方式无需依赖应用端或者代理层,仅需在确定初始服务器之后,并在建立与初始服务器的连接之前,预先对初始服务器的在线状态进行检测,该方式不但能够提升对服务器在线状态的处理实时性,避免连接失败导致的网络等待,还能够降低数据库访问的复杂度。
参照图2的检测操作的执行方法流程图,本实施例提供一种步骤S106的具体实现方式,包括如下步骤:
步骤S202,通过预先建立的检测线程,确定数据库集群中在线的主机服务器的主机IP地址。
在建立与初始服务器的连接之前,首先会创建一个全局唯一的检测线程,该检测线程按照预设时间间隔检测集群中各服务器的在线状态,并根据检测结果更新在线服务器的IP地址。
具体的,通过检测线程确定数据库集群中是否有在线的主机服务器;如果有,确定该在线的主机服务器的主机IP地址。如果没有,表示在查询主机服务器时遇到异常,其原因诸如可能是当前正处于主机服务器和备机服务器的切换过程(简称主备切换),在此情况下,可以直接确定执行完成检测操作。
步骤S204,查询在线的主机服务器是否存在对应的在线备机服务器。如果存在,则执行如下步骤S206;如果不存在,则执行如下步骤S208。
步骤S206,获取在线备机服务器的备机IP地址,并确定执行完成检测操作。
步骤S208,判断在线的主机服务器是否为真的主机服务器。在具体实现时,可以通过发送状态查询SQL语句以判断该在线的主机服务器是否处于追随状态,如果返回错误信息(false),该在线的主机服务器并没有处于追随状态,表示当前检测到的在线的主机服务器实际上是备机服务器,确定不是真的主机服务器。
如果是真的主机服务器,则确定执行完成检测操作;如果不是真的主机服务器,则执行如下步骤S210。
S210,清空主机IP地址,并确定执行完成检测操作。
在本实施例中,当确定执行完成检测操作后,均按照预设时间间隔,重新执行上述步骤S202-S210,从而实时检测数据库集群中各服务器的在线状态并更新在线的服务器的IP地址。
此外,在利用检测线程执行检测操作的过程中,还会出现其他异常信息,诸如:数据库集群不可用,导致在检测线程与数据库集群建立连接时遇到异常;或者,主机服务器掉线造成主备切换,导致在查询主机服务器、备机服务器时遇到异常,在此情况下,在线的主机IP地址、备机IP地址均为空。当出现上述异常信息时,检测线程可以确定执行完成检测操作,并在预设时间间隔后,再次利用检测线程执行检测操作。
在检测线程完成一次检测操作后,开始建立与初始服务器的连接。如果初始服务器不在线,则直接返回连接失败的结果,避免在建立连接时消耗较长的等待时间。
如果初始服务器在线,则可以开始建立与初始服务器的连接,在具体实现时,可以首先与IP列表对应的各服务器均连接一次;其中,IP列表用于记录在线的各服务器的IP地址;然后当确定连接的服务器中存在主机服务器时,确定建立连接成功,并返回初始数据库的连接路径。在连接的服务器中不存在主机服务器的情况下,可以退出程序。
由于检测操作是按照预设时间间隔,对服务器的在线状态进行持续检测的;因此,除了在与初始服务器建立连接之前,在与初始服务器建立连接的过程中,对包含初始服务器在内的各服务器的在线状态也是持续检测更新的。从而,在等待初始服务器返回执行结果的信息时,可以利用初始服务器的实时在线状态,来决定等待初始服务器返回执行结果的信息,还是直接返回错误信息,以避免无限等待。
在接下来的实施例中,将按照不同操作类型的访问请求,对上述步骤S108分别展开描述。
当访问请求的操作类型为写操作类型时,确定响应访问请求的初始服务器为第一主机服务器。在此情况下,可以首先建立与第一主机服务器的连接;然后检测第一主机服务器是否为真的主机服务器。如果是真的主机服务器,将访问请求发送至第一主机服务器执行,并获取第一主机服务器的执行结果。
当访问请求的操作类型为读操作类型时,确定响应访问请求的初始服务器为第一备机服务器。在此情况下,可以将访问请求发送至第一备机服务器执行,并获取第一备机服务器的执行结果。
在以上实施例中,在初始服务器执行访问请求成功的情况,可以直接结束。
然而,考虑到在数据库集群实际运行过程中,主机服务器或者备机服务器可能会因为某些原因突然掉线,此时会使建立在该服务器上的连接失效,导致正在执行的访问请求出现异常,该异常诸如连接异常或者I/O异常。当初始服务器执行访问请求出现异常时,为保证业务的持续运行,本实施例可以提供如下异常处理方式:重新确定响应访问请求的目标服务器,并将访问请求发送至目标服务器执行。
在具体实现时,可以在JDBC驱动内部对初始服务器执行访问请求时出现的异常进行捕获,在捕获到异常并判断异常的类型是由服务器切换造成的情况下,会在基于检测操作更新后的在线服务器中,确定响应访问请求的新的服务器(即:目标服务器),而后建立与目标服务器的连接并将访问请求发送至目标服务器执行。
为便于理解,在此提供如下三条SQL语句格式的访问请求,以此为例对上述异常处理方式展开描述:
语句a:create table test(id int primary key,name varchar(20));
语句b:select*from test;
语句c:{call updateName(?)};
在自动提交模式下,语句a的操作类型为写操作类型,将其发送给第一主机服务器执行。如果检测第一主机服务器不是真的主机服务器,或者第一主机服务器的执行结果为执行语句a异常,该异常可以为第一主机服务器宕机,且通过检测操作确定第一主机服务器不在线,则该语句a将会直接返回I/O异常,确定第一主机服务器执行访问请求出现异常。在此情况下,参照如下步骤(1)和(2)进行异常处理:
(1)执行至少一次如下更新主机操作:在第一主机服务器对应的备机服务器中,检测是否存在提升为主机服务器的备机服务器;其中,更新主机操作的执行次数在预设次数(如10次)之内;
(2)如果存在提升为主机服务器的备机服务器,则停止执行更新主机操作,并将提升为主机服务器的备机服务器更新为第二主机服务器;其中,第二主机服务器为响应访问请求的目标服务器。
当然,如果每次更新主机操作的执行结果均为不存在提升为主机服务器的备机服务器,且更新主机操作的执行次数达到预设次数,则可以直接退出。
将第二主机服务器更新为执行语句a的目标服务器后,将语句a发送至该目标服务器执行。在具体实现时,可以基于第二主机服务器的IP地址,更新主机IP地址,再根据更新后的主机IP地址,将语句a发送至目标服务器执行。而后,如果目标服务器的执行结果依然出现异常,将参照上述步骤(1)和(2)所示的异常处理方式,对目标服务器的执行异常情况进行处理;直至满足如下预设条件时停止:访问请求执行成功、达到异常处理的最大次数或者达到异常处理的最大等待时间(如2分钟)。
在对语句a进行异常处理的实施例中,通过重建与主机服务器的连接和重新发送语句a,避免了无限等待socketTimeout(套接字超时时间),只要数据库集群在设置条件下回复正常,用户看到的只是语句a正常执行返回,关于异常处理过程中的重建连接、重发请求等过程并不会展示给用户;从而对用户而言,能够提高持续访问数据库的可靠性,改善了用户体验。
语句b的操作类型为读操作类型,将其发送给第一备机服务器执行。如果第一备机服务器的执行结果执行语句b异常,该异常可以为第一备机服务器宕机。在此情况下,参照如下步骤进行异常处理:
将与第一备机服务器相对应的第三主机服务器,确定为响应访问请求的目标服务器。第三主机服务器是数据库集群中,第一备机服务器所对应的主机服务器。
如果第三主机服务器在线,将会向用户返回语句b正常执行的结果。在第三主机服务器对访问请求执行成功的情况下,如果初始服务器对访问请求的执行异常信息为预设异常信息,预设异常信息为I/O异常或者连接异常的信息,则将第一备机服务器的状态设置为掉线状态。在此之后,当通过检测操作检测到该第一备机服务器恢复后,再重建该备机的连接,使用该备机处理任务。
如果第三主机服务器也不在线,比如此时正处于主备切换的过程中,那么,将会参照上述步骤(1)和(2),执行重建连接和重发语句的异常处理过程,具体可参照上述实施例,在此不再赘述。
语句c中包含函数,在实际应用中,函数通常被默认为读操作的函数;基于此,语句c将会发送至第二备机服务器执行。由于语句c中的函数包含update操作,实际为写操作的函数,第二备机服务器无法成功执行,并返回执行语句c异常的执行结果。在此情况下,该语句c会被转发给第四主机服务器执行。第四主机服务器执行语句c的具体过程,可参照第三主机服务器执行语句b的过程,在此不再展开描述。
由于检测操作按照预设时间间隔检测并更新数据库集群中的在线服务器,因此,以上出现的第一主机服务器、第二主机服务器、第三主机服务器和第四主机服务器,可能为同一个在线的主机服务器,也可能为经过掉线、主备切换、重新上线等变化后的不同的在线的主机服务器。同样,第一备机服务器和第二备机服务器也可能为相同或不同的备机服务器。
在以上异常处理的实施例中,对于执行异常的访问请求可以重新确定服务器,重新发送访问请求,由此可以保证应用下发的访问请求,在数据库集群切换、重启后最终能执行成功,对用户和应用端的影响几乎可以忽略,实现无痛切换。
综合上述多个实施例,本实施例提供一种数据库访问的具体实现方法。在获取到SQL语句格式的访问请求后,参照图3,该方法可以包括如下步骤:
步骤S302,检测线程执行一次检测操作。
步骤S304,建立与在线服务器的连接;在该步骤中,包括与在线的主机服务器和备机服务器的连接。
步骤S306,执行访问请求;在执行时,根据访问请求的操作类型为读操作类型或者写操作类型,将访问请求发送至不同的服务器执行。具体的,当访问请求为写操作类型时,执行如下步骤S308;当访问请求为读操作类型时,执行如下步骤S320。
步骤S308,将访问请求发送至主机服务器执行。
步骤S310,判断执行访问请求是否出现异常;如果出现异常,执行如下步骤S312;如果没有出现异常,表示执行成功,此时确定结束。
步骤S312,判断出现的异常是否为I/O异常或者连接异常;如果是,执行如下步骤S314;如果不是,确定结束。
步骤S314,判断更新主机操作的执行次数是否达到预设次数;如果达到,确定结束;如果没有达到,则执行如下步骤S316。
步骤S316,执行更新主机操作;通过执行更新主机操作,可确定在线的新的主机服务器,该操作的具体实现方式可参照前述实施例。
步骤S318,判断是否与新的主机服务器成功建立连接;如果成功建立连接,则执行上述步骤S308,将访问请求发送至新的主机服务器执行;如果建立连接失败,则执行上述步骤S314。
步骤S320,将访问请求发送至备机服务器执行;
步骤S310,判断执行访问请求是否出现异常;如果出现异常,执行上述步骤S308,将访问请求发送至主机服务器执行;如果没有出现异常,表示执行成功,此时确定结束。
综上,以上实施例提供的数据库访问方法,通过在JDBC驱动增加服务器在线状态的检测操作,可以应对集群中服务器掉线又上线后,驱动的分发器能重新建立到该服务器的连接,进而提高对集群状态处理的实时性。以及,还通过在JDBC驱动中增加针对执行异常的重建连接、重发访问请求的功能,并对应用端完全透明,可以应对集群主备切换后造成所有连接中断时的应用访问中断问题,提高了持续访问数据库的可靠性。
实施例二:
基于上述实施例一,本实施例提供一种数据库访问装置,参照图4,该装置包括:
请求获取模块402,用于获取访问请求;
服务器确定模块404,用于根据访问请求的操作类型,确定响应访问请求的初始服务器;
状态检测模块406,用于根据检测操作判断初始服务器的在线状态;其中,检测操作为按照预设时间间隔,检测数据库集群中各服务器的在线状态的操作;
请求发送模块408,用于如果初始服务器在线,则将访问请求发送至初始服务器执行。
本公开实施例提供的数据库访问装置,无需依赖应用端或者代理层,仅需在确定初始服务器之后,并在建立与初始服务器的连接之前,预先对初始服务器的在线状态进行检测,该方式不但能够提升对服务器在线状态的处理实时性,避免连接失败导致的网络等待,还能够降低数据库访问的复杂度。
在一种实施例中,状态检测模块406还用于:通过预先建立的检测线程,确定数据库集群中在线的主机服务器的主机IP地址;查询在线的主机服务器是否存在对应的在线备机服务器;如果存在,则获取在线备机服务器的备机IP地址;如果不存在,则判断在线的主机服务器是否为真的主机服务器;如果在线的主机服务器为真的主机服务器,则确定执行完成检测操作;如果第一主机服务器不是真的主机服务器,则清空主机IP地址,并确定执行完成检测操作。
在一种实施例中,服务器确定模块404还用于:当访问请求的操作类型为写操作类型时,确定响应访问请求的初始服务器为第一主机服务器;当访问请求的操作类型为读操作类型时,确定响应访问请求的初始服务器为第一备机服务器。
在一种实施例中,请求发送模块408还用于:建立与第一主机服务器的连接;检测第一主机服务器是否为真的主机服务器;如果是真的主机服务器,将访问请求发送至第一主机服务器执行。
在一种实施例中,上述装置还包括异常处理模块(图中未示出),其用于:当初始服务器执行访问请求出现异常时,重新确定响应访问请求的目标服务器,并将访问请求发送至目标服务器执行。
在一种实施例中,异常处理模块还用于:执行至少一次如下更新主机操作:在第一主机服务器对应的备机服务器中,检测是否存在提升为主机服务器的备机服务器;其中,更新主机操作的执行次数在预设次数之内;如果存在提升为主机服务器的备机服务器,则停止执行更新主机操作,并将提升为主机服务器的备机服务器更新为第二主机服务器;其中,第二主机服务器为响应访问请求的目标服务器。
在一种实施例中,异常处理模块还用于:将与第一备机服务器相对应的第三主机服务器,确定为响应访问请求的目标服务器。
在一种实施例中,异常处理模块还用于:如果初始服务器对访问请求的执行异常信息为预设异常信息,且第三主机服务器对访问请求执行成功,则将第一备机服务器的状态设置为掉线状态。
本实施例所提供的装置,其实现原理及产生的技术效果和前述实施例相同,为简要描述,本实施例部分未提及之处,可参考前述实施例中相应内容。
基于前述实施例,本实施例给出了一种电子设备,包括处理器和存储装置;存储装置上存储有计算机程序,计算机程序在被处理器运行时执行上述方法。
进一步,本实施例还提供了一种计算机可读存储介质,计算机可读存储介质上存储有计算机程序,计算机程序被处理器运行时执行上述方法的步骤。
需要说明的是,在本文中,诸如“第一”和“第二”等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
以上所述仅是本公开的具体实施方式,使本领域技术人员能够理解或实现本公开。对这些实施例的多种修改对本领域的技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本公开的精神或范围的情况下,在其它实施例中实现。因此,本公开将不会被限制于本文所述的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。
Claims (9)
1.一种数据库访问方法,其特征在于,包括:
获取访问请求;
根据所述访问请求的操作类型,确定响应所述访问请求的初始服务器;
根据检测操作判断所述初始服务器的在线状态;其中,所述检测操作为按照预设时间间隔,检测数据库集群中各服务器的在线状态的操作;
如果所述初始服务器在线,则将所述访问请求发送至所述初始服务器执行。
2.根据权利要求1所述的方法,其特征在于,所述根据检测操作判断所述初始服务器的在线状态的步骤,包括:
通过预先建立的检测线程,确定所述数据库集群中在线的主机服务器的主机IP地址;
查询所述在线的主机服务器是否存在对应的在线备机服务器;
如果存在,则获取所述在线备机服务器的备机IP地址;
如果不存在,则判断所述在线的主机服务器是否为真的主机服务器;
如果所述在线的主机服务器为真的主机服务器,则确定执行完成检测操作;
如果所述在线的主机服务器不是真的主机服务器,则清空所述主机IP地址,并确定执行完成所述检测操作。
3.根据权利要求1所述的方法,其特征在于,所述根据所述访问请求的操作类型,确定响应所述访问请求的初始服务器的步骤,包括:
当所述访问请求的操作类型为写操作类型时,确定响应所述访问请求的初始服务器为第一主机服务器;
当所述访问请求的操作类型为读操作类型时,确定响应所述访问请求的初始服务器为第一备机服务器。
4.根据权利要求3所述的方法,其特征在于,所述将所述访问请求发送至所述初始服务器执行的步骤,包括:
建立与所述第一主机服务器的连接;
检测所述第一主机服务器是否为真的主机服务器;
如果是真的主机服务器,将所述访问请求发送至所述第一主机服务器执行。
5.根据权利要求3所述的方法,其特征在于,在所述将所述访问请求发送至所述初始服务器执行的步骤之后,所述方法还包括:
当所述初始服务器执行所述访问请求出现异常时,重新确定响应所述访问请求的目标服务器,并将所述访问请求发送至所述目标服务器执行。
6.根据权利要求5所述的方法,其特征在于,所述重新确定响应所述访问请求的目标服务器的步骤,包括:
执行至少一次如下更新主机操作:在所述第一主机服务器对应的备机服务器中,检测是否存在提升为主机服务器的备机服务器;其中,所述更新主机操作的执行次数在预设次数之内;
如果存在提升为主机服务器的备机服务器,则停止执行所述更新主机操作,并将所述提升为主机服务器的备机服务器更新为第二主机服务器;其中,所述第二主机服务器为响应所述访问请求的目标服务器。
7.根据权利要求5所述的方法,其特征在于,所述重新确定响应所述访问请求的目标服务器的步骤,包括:
将与所述第一备机服务器相对应的第三主机服务器,确定为响应所述访问请求的目标服务器。
8.根据权利要求7所述的方法,其特征在于,所述方法还包括:
如果所述初始服务器对所述访问请求的执行异常信息为预设异常信息,且所述第三主机服务器对所述访问请求执行成功,则将所述第一备机服务器的状态设置为掉线状态。
9.一种数据库访问装置,其特征在于,包括:
请求获取模块,用于获取访问请求;
服务器确定模块,用于根据所述访问请求的操作类型,确定响应所述访问请求的初始服务器;
状态检测模块,用于根据检测操作判断所述初始服务器的在线状态;其中,所述检测操作为按照预设时间间隔,检测数据库集群中各服务器的在线状态的操作;
请求发送模块,用于如果所述初始服务器在线,则将所述访问请求发送至所述初始服务器执行。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011137021.XA CN112231382A (zh) | 2020-10-22 | 2020-10-22 | 一种数据库访问方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011137021.XA CN112231382A (zh) | 2020-10-22 | 2020-10-22 | 一种数据库访问方法及装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN112231382A true CN112231382A (zh) | 2021-01-15 |
Family
ID=74110282
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202011137021.XA Pending CN112231382A (zh) | 2020-10-22 | 2020-10-22 | 一种数据库访问方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112231382A (zh) |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102033912A (zh) * | 2010-11-25 | 2011-04-27 | 北京北纬点易信息技术有限公司 | 一种分布式数据库访问方法及系统 |
CN104331457A (zh) * | 2014-10-31 | 2015-02-04 | 北京思特奇信息技术股份有限公司 | 一种基于数据库节点的数据访问方法及系统 |
CN105183751A (zh) * | 2015-07-13 | 2015-12-23 | 深信服网络科技(深圳)有限公司 | 数据库访问方法及装置 |
-
2020
- 2020-10-22 CN CN202011137021.XA patent/CN112231382A/zh active Pending
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102033912A (zh) * | 2010-11-25 | 2011-04-27 | 北京北纬点易信息技术有限公司 | 一种分布式数据库访问方法及系统 |
CN104331457A (zh) * | 2014-10-31 | 2015-02-04 | 北京思特奇信息技术股份有限公司 | 一种基于数据库节点的数据访问方法及系统 |
CN105183751A (zh) * | 2015-07-13 | 2015-12-23 | 深信服网络科技(深圳)有限公司 | 数据库访问方法及装置 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107291787B (zh) | 主备数据库切换方法和装置 | |
US6952766B2 (en) | Automated node restart in clustered computer system | |
WO2016202051A1 (zh) | 一种通信系统中管理主备节点的方法和装置及高可用集群 | |
US9753954B2 (en) | Data node fencing in a distributed file system | |
US11892922B2 (en) | State management methods, methods for switching between master application server and backup application server, and electronic devices | |
US20080288812A1 (en) | Cluster system and an error recovery method thereof | |
CN103560922A (zh) | 一种容灾方法及系统 | |
CN111200532A (zh) | 数据库集群节点主从切换的方法、装置、设备和介质 | |
CN112118130A (zh) | 自适应的分布式缓存主备状态信息切换方法及装置 | |
CN105677675A (zh) | 业务处理方法及装置 | |
CN114764380A (zh) | 一种基于etcd的分布式集群控制方法和装置 | |
CN108243031B (zh) | 一种双机热备的实现方法及装置 | |
CN109189854B (zh) | 提供持续业务的方法及节点设备 | |
EP2774323B1 (en) | Method, communication system and non-transitory computer readable medium for optimizing network performance after a temporary loss of connection | |
CN112787918B (zh) | 一种基于服务路由树的数据中心寻址与主备切换方法 | |
CN114356711A (zh) | 数据库故障自愈方法、系统及相关装置 | |
CN113612814A (zh) | 一种会话信息的筛选方法、装置、终端及存储介质 | |
CN113986501A (zh) | 实时数据库api无中断调用方法、系统、存储介质及服务器 | |
CN112231382A (zh) | 一种数据库访问方法及装置 | |
CN112069032A (zh) | 一种虚拟机的可用性检测方法、系统及相关装置 | |
CN113596195B (zh) | 公共ip地址管理方法、装置、主节点及存储介质 | |
WO2016181462A1 (ja) | 情報処理システムおよびクラスタ管理方法 | |
CN111324632B (zh) | 利用客户端侧高速缓存的透明数据库会话恢复 | |
CN111510336B (zh) | 一种网络设备状态管理方法及装置 | |
CN113778761A (zh) | 时序数据库集群及其故障处理、操作方法、及装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |