一种节点切换方法及相关系统技术方案

技术编号:39001863 阅读:12 留言:0更新日期:2023-10-07 10:33
本申请提供了一种节点切换方法,包括:源数据库节点执行第一查询命令,然后源数据库节点将目标数据发送至目的数据库节点,目标数据为第一查询命令的执行结果中执行第二查询命令所需的数据,接着目的数据库节点使用目标数据来执行第二查询命令。在该方法中,为实现节点切换所实施的一些复杂操作下沉至数据库节点,中间件所在的路由节点无需识别查询语句,实时记录事务状态,以及缓存大量的、改变操作上下文的查询命令,避免了消耗路由节点较多的处理器和内存资源,降低了路由节点的代价和开销,保障了业务性能。保障了业务性能。保障了业务性能。

【技术实现步骤摘要】
一种节点切换方法及相关系统


[0001]本申请涉及数据处理
,尤其涉及一种节点切换方法、节点切换系统以及计算机集群、计算机可读存储介质、计算机程序产品。

技术介绍

[0002]应用(application,APP)在运行时通常会连接数据库节点(database node,DB node),并在数据库节点创建会话(session)对象。在数据操作过程中,应用将操作上下文如系统变量system variables、用户自定义变量User defined variables、事务状况transaction status、用户临时表等维持在会话对象中。
[0003]随着应用的规格变更,或者是应用的版本升级,常常需要对应用连接的数据库节点进行切换。为了满足高可用性(high Availability)的要求,通常可以进行应用无损透明(application lossless transparent,ALT)切换。其中,ALT切换可以实现切换过程中应用无感知,而且业务在切换后无损失。
[0004]目前,相关技术采用中间件连接保持增强技术实现ALT切换。中间件可以是位于应用和数据库节点之间的软件,该中间件例如可以是代理(proxy)。具体地,proxy保持前端连接(proxy与应用的连接)不断,在应用运行过程中,proxy监控事务的执行过程,缓存改变会话对象中操作上下文的结构化查询命令(Structured Query Language command,SQL command)。当切换数据库节点后,在新的会话对象(切换后的节点上的会话对象)中执行缓存的SQL command,从而在新的会话对象中维持之前的事务状态。
[0005]然而,上述方法需要proxy等中间件识别SQL语句,实时记录事务状态,并缓存改变操作上下文的SQL command。如此需要消耗较多的处理器和内存资源,导致实际运行的业务性能受到影响。

技术实现思路

[0006]本申请提供了一种节点切换方法,该方法中为实现节点切换所实施的一些复杂操作由路由节点(如中间件所在的节点)下沉至数据库节点,路由节点无需识别SQL语句,实时记录事务状态,以及缓存大量的、改变操作上下文的查询命令,避免了消耗路由节点较多的处理器和内存资源,降低了路由节点的代价和开销,保障了业务性能。本申请还提供了对应的节点切换系统、计算机集群、计算机可读存储介质以及计算机程序产品。
[0007]第一方面,本申请提供了一种节点切换方法。该方法可以由节点切换系统执行。其中,节点切换系统包括源数据库节点和目的数据库节点。源数据库节点为应用在切换前所连接的数据库节点,目的数据库节点为应用在切换后所连接的数据库节点。
[0008]具体地,源数据库节点执行第一查询命令,然后源数据库节点将目标数据发送至目的数据库节点,该目标数据为第一查询命令的执行结果中执行第二查询命令所需的数据,例如目标数据可以包括操作上下文和事务状态。其中,操作上下文可以包括系统变量、用户自定义变量、事务状况(事务在不同状态之间的状况)和用户临时表中的一种或多种。
目的数据库节点使用目标数据来执行第二查询命令。
[0009]在该方法中,为实现节点切换所实施的一些复杂操作下沉至数据库节点,中间件所在的路由节点无需识别SQL语句,实时记录事务状态,以及缓存大量的、改变操作上下文的查询命令,避免了消耗路由节点较多的处理器和内存资源,降低了路由节点的代价和开销,保障了业务性能。
[0010]在一些可能的实现方式中,所述第一查询命令为第一事务中的命令,所述第二查询命令为第二事务中的命令。也即源数据库节点可以通过排干事务组件拦截事务完成边界,并在第一事务到达事务完成边界时,将后续的第二事务中的命令如第二查询命令转发至目的数据库节点,目的数据库节点执行第二事务中的第二查询命令,从而实现将应用连接的数据库节点由源数据库节点切换为目的数据库节点。
[0011]该方法实现了在事务间完成节点切换,保障了业务无损失,且用户无感知。
[0012]在一些可能的实现方式中,第一查询命令和第二查询命令为同一事务中的命令。源数据库节点可以通过细粒度的排干事务组件拦截事务中的执行边界,并在事务到达该执行边界时,将事务中的后续命令如第二查询命令转发至目的数据库节点,目的数据库节点执行该第二查询命令,从而实现将应用连接的数据库节点由源数据库节点切换为目的数据库节点。
[0013]该方法通过细粒度地排干事务,扩展了排干事务能力,与连接保持增强技术仅限于规定时间内拦截到提交的查询命令后确认事务排干相比,该方法能够在规定时间未拦截到提交的查询命令的情况下,通过拦截事务中的执行边界确认事务排干,由此可以实现在事务中完成节点切换,缩短了节点切换的时间,提高了节点切换的效率。
[0014]在一些可能的实现方式中,节点切换系统还包括路由节点。路由节点可以在目的数据库节点使用所述目标数据来执行所述第二查询命令之前,先将所述第一查询命令路由至所述目的数据库节点,以便所述目的数据库节点执行所述第一查询命令。
[0015]如此可以通过重新执行一次第一查询命令,保障节点切换的可靠性。而且,该方法无需重新执行大量的查询命令,最多重新执行一次查询命令,缩短了节点切换的时间,也避免了执行目的数据库节点执行大量的查询命令时由于执行顺序等导致源数据库节点与目的数据库节点中操作上下文不一致的情况,实现无损切换。
[0016]在一些可能的实现方式中,所述源数据库节点检测到所述事务到达设定的执行位点后,向所述路由节点发送返回码,所述返回码用于指示所述目的数据库节点执行所述第一查询命令。其中,设定的执行位点可以包括一个或多个。例如,设定的执行位点可以为事务中的一个或多个执行边界。
[0017]在该方法中,路由节点无需拦截所有的查询命令,并解析上述查询命令,而是对查询命令的返回码进行处理,当返回码为特殊错误码,具体是用于指示目的数据库节点重新执行该查询命令(如第一查询命令)的返回码时,路由节点可以将第一查询命令转发至目的数据库节点,以便目的数据库节点执行上述第一查询命令,进而实现节点的切换。
[0018]路由节点提供简单的ALT路由能力,无需在应用运行过程中拦截和解析查询命令,识别和缓存修改操作上下文的查询命令,降低了路由节点的负载,使得轻量级的路由节点即可满足业务需求。
[0019]在一些可能的实现方式中,路由节点可以为部署中间件的节点,或者是部署连接
器connector的节点。在一些实施例中,应用以云服务的形式部署时,应用可以连接部署proxy等中间件的路由节点,无需依赖特殊的客户端,而且在ALT切换过程中,无需额外调用相关接口参与ALT切换,具有较高可用性。在另一些实施例中,应用可以以客户端的形式部署在计算机中,客户端的连接器可以集成路由能力作为路由节点,从而实现无中间件的ALT切换。
[0020]在一些可能的实现方式中,所述源数据库节点中包括第一会话对象,所述目的数据库节点中包括本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种节点切换方法,其特征在于,所述方法包括:源数据库节点执行第一查询命令;所述源数据库节点将目标数据发送至目的数据库节点,所述目标数据为所述第一查询命令的执行结果中执行第二查询命令所需的数据;所述目的数据库节点使用所述目标数据来执行所述第二查询命令。2.根据权利要求1所述的方法,其特征在于,所述第一查询命令为第一事务中的命令,所述第二查询命令为第二事务中的命令。3.根据权利要求1所述的方法,其特征在于,所述第一查询命令和所述第二查询命令同一事务中的命令。4.根据要求3所述的方法,其特征在于,所述目的数据库节点使用所述目标数据来执行所述第二查询命令之前,所述方法还包括:路由节点将所述第一查询命令路由至所述目的数据库节点,以便所述目的数据库节点执行所述第一查询命令。5.根据权利要求4所述的方法,其特征在于,所述方法还包括:所述源数据库节点检测到所述事务到达设定的执行位点后,向所述路由节点发送返回码,所述返回码用于指示所述目的数据库节点执行所述第一查询命令。6.根据权利要求1至5任一项所述的方法,其特征在于,所述源数据库节点中包括第一会话对象,所述目的数据库节点中包括第二会话对象,所述方法还包括:所述源数据库节点设置关联会话逻辑标识,所述关联会话逻辑标识用于标识所述第一会话对象和所述第二会话对象,所述第二查询命令被发送至所述第二会话对象;所述目的数据库节点使用所述目标数据来执行第二查询命令,包括:所述目的数据库节点在所述第二会话对象中使用所述目标数据来执行所述第二查询命令。7.根据权利要求6所述的方法,其特征在于,所述关联会话逻辑标识还记录有事务标识,所述事务标识对应的事务块被所述第一会话对象和所述第二会话对象共享。8.根据权利要求1至7任一项所述的方法,其特征在于,所述源数据库节点为应用的规格或版本变更前所述应用连接的数据库节点,所述目的数据库节点为所述应用的规格或版本变更后所述应用连接的数据库节点。9.根据权利要求1至7任一项所述的方法,其特征在于,所述源数据库节点和所述目的数据库节点归属于同一服务集群,且所述源数据库节点的负载大于所述目的数据库节点的负载。10.根据权利要求1至7任一项所述的方法,其特征在于,所述源数据库节点为主节点,所述目的数据库节点为备份节点。11.根据权利要求1至7任一项所述的方法,其特征在于,所述源数据库节点和所述目的数据库节点为存算分离的云原生数据库节点。12.一种节点切换系统,其特征在于,所述系统包括源数据库节点和目的数据库节点;所述源数据库节点,用于执行第一查询命令,将目标数据发送至所述目的数据库节点,所述目标数据为所述第一查询命令的执行结果中执行第二查询命令所需的数据;所述目的数据库节点,用于使用所述目标数据来...

【专利技术属性】
技术研发人员:熊刚彭立勋
申请(专利权)人:华为云计算技术有限公司
类型:发明
国别省市:

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

1