CN116821148A - 一种节点切换方法及相关系统 - Google Patents

一种节点切换方法及相关系统 Download PDF

Info

Publication number
CN116821148A
CN116821148A CN202210283773.XA CN202210283773A CN116821148A CN 116821148 A CN116821148 A CN 116821148A CN 202210283773 A CN202210283773 A CN 202210283773A CN 116821148 A CN116821148 A CN 116821148A
Authority
CN
China
Prior art keywords
node
database node
query command
transaction
session
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
Application number
CN202210283773.XA
Other languages
English (en)
Inventor
熊刚
彭立勋
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Huawei Cloud Computing Technologies Co Ltd
Original Assignee
Huawei Cloud Computing Technologies Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Huawei Cloud Computing Technologies Co Ltd filed Critical Huawei Cloud Computing Technologies Co Ltd
Priority to CN202210283773.XA priority Critical patent/CN116821148A/zh
Priority to PCT/CN2022/130466 priority patent/WO2023179040A1/zh
Publication of CN116821148A publication Critical patent/CN116821148A/zh
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/24Querying
    • G06F16/242Query formulation
    • G06F16/2433Query languages
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/24Querying
    • G06F16/242Query formulation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/27Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L45/00Routing or path finding of packets in data switching networks
    • H04L45/60Router architectures

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Databases & Information Systems (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Data Mining & Analysis (AREA)
  • Computing Systems (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Mathematical Physics (AREA)
  • Computational Linguistics (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

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

Description

一种节点切换方法及相关系统
技术领域
本申请涉及数据处理技术领域,尤其涉及一种节点切换方法、节点切换系统以及计算机集群、计算机可读存储介质、计算机程序产品。
背景技术
应用(application,APP)在运行时通常会连接数据库节点(database node,DBnode),并在数据库节点创建会话(session)对象。在数据操作过程中,应用将操作上下文如系统变量system variables、用户自定义变量User defined variables、事务状况transaction status、用户临时表等维持在会话对象中。
随着应用的规格变更,或者是应用的版本升级,常常需要对应用连接的数据库节点进行切换。为了满足高可用性(high Availability)的要求,通常可以进行应用无损透明(application lossless transparent,ALT)切换。其中,ALT切换可以实现切换过程中应用无感知,而且业务在切换后无损失。
目前,相关技术采用中间件连接保持增强技术实现ALT切换。中间件可以是位于应用和数据库节点之间的软件,该中间件例如可以是代理(proxy)。具体地,proxy保持前端连接(proxy与应用的连接)不断,在应用运行过程中,proxy监控事务的执行过程,缓存改变会话对象中操作上下文的结构化查询命令(Structured Query Language command,SQLcommand)。当切换数据库节点后,在新的会话对象(切换后的节点上的会话对象)中执行缓存的SQL command,从而在新的会话对象中维持之前的事务状态。
然而,上述方法需要proxy等中间件识别SQL语句,实时记录事务状态,并缓存改变操作上下文的SQL command。如此需要消耗较多的处理器和内存资源,导致实际运行的业务性能受到影响。
发明内容
本申请提供了一种节点切换方法,该方法中为实现节点切换所实施的一些复杂操作由路由节点(如中间件所在的节点)下沉至数据库节点,路由节点无需识别SQL语句,实时记录事务状态,以及缓存大量的、改变操作上下文的查询命令,避免了消耗路由节点较多的处理器和内存资源,降低了路由节点的代价和开销,保障了业务性能。本申请还提供了对应的节点切换系统、计算机集群、计算机可读存储介质以及计算机程序产品。
第一方面,本申请提供了一种节点切换方法。该方法可以由节点切换系统执行。其中,节点切换系统包括源数据库节点和目的数据库节点。源数据库节点为应用在切换前所连接的数据库节点,目的数据库节点为应用在切换后所连接的数据库节点。
具体地,源数据库节点执行第一查询命令,然后源数据库节点将目标数据发送至目的数据库节点,该目标数据为第一查询命令的执行结果中执行第二查询命令所需的数据,例如目标数据可以包括操作上下文和事务状态。其中,操作上下文可以包括系统变量、用户自定义变量、事务状况(事务在不同状态之间的状况)和用户临时表中的一种或多种。目的数据库节点使用目标数据来执行第二查询命令。
在该方法中,为实现节点切换所实施的一些复杂操作下沉至数据库节点,中间件所在的路由节点无需识别SQL语句,实时记录事务状态,以及缓存大量的、改变操作上下文的查询命令,避免了消耗路由节点较多的处理器和内存资源,降低了路由节点的代价和开销,保障了业务性能。
在一些可能的实现方式中,所述第一查询命令为第一事务中的命令,所述第二查询命令为第二事务中的命令。也即源数据库节点可以通过排干事务组件拦截事务完成边界,并在第一事务到达事务完成边界时,将后续的第二事务中的命令如第二查询命令转发至目的数据库节点,目的数据库节点执行第二事务中的第二查询命令,从而实现将应用连接的数据库节点由源数据库节点切换为目的数据库节点。
该方法实现了在事务间完成节点切换,保障了业务无损失,且用户无感知。
在一些可能的实现方式中,第一查询命令和第二查询命令为同一事务中的命令。源数据库节点可以通过细粒度的排干事务组件拦截事务中的执行边界,并在事务到达该执行边界时,将事务中的后续命令如第二查询命令转发至目的数据库节点,目的数据库节点执行该第二查询命令,从而实现将应用连接的数据库节点由源数据库节点切换为目的数据库节点。
该方法通过细粒度地排干事务,扩展了排干事务能力,与连接保持增强技术仅限于规定时间内拦截到提交的查询命令后确认事务排干相比,该方法能够在规定时间未拦截到提交的查询命令的情况下,通过拦截事务中的执行边界确认事务排干,由此可以实现在事务中完成节点切换,缩短了节点切换的时间,提高了节点切换的效率。
在一些可能的实现方式中,节点切换系统还包括路由节点。路由节点可以在目的数据库节点使用所述目标数据来执行所述第二查询命令之前,先将所述第一查询命令路由至所述目的数据库节点,以便所述目的数据库节点执行所述第一查询命令。
如此可以通过重新执行一次第一查询命令,保障节点切换的可靠性。而且,该方法无需重新执行大量的查询命令,最多重新执行一次查询命令,缩短了节点切换的时间,也避免了执行目的数据库节点执行大量的查询命令时由于执行顺序等导致源数据库节点与目的数据库节点中操作上下文不一致的情况,实现无损切换。
在一些可能的实现方式中,所述源数据库节点检测到所述事务到达设定的执行位点后,向所述路由节点发送返回码,所述返回码用于指示所述目的数据库节点执行所述第一查询命令。其中,设定的执行位点可以包括一个或多个。例如,设定的执行位点可以为事务中的一个或多个执行边界。
在该方法中,路由节点无需拦截所有的查询命令,并解析上述查询命令,而是对查询命令的返回码进行处理,当返回码为特殊错误码,具体是用于指示目的数据库节点重新执行该查询命令(如第一查询命令)的返回码时,路由节点可以将第一查询命令转发至目的数据库节点,以便目的数据库节点执行上述第一查询命令,进而实现节点的切换。
路由节点提供简单的ALT路由能力,无需在应用运行过程中拦截和解析查询命令,识别和缓存修改操作上下文的查询命令,降低了路由节点的负载,使得轻量级的路由节点即可满足业务需求。
在一些可能的实现方式中,路由节点可以为部署中间件的节点,或者是部署连接器connector的节点。在一些实施例中,应用以云服务的形式部署时,应用可以连接部署proxy等中间件的路由节点,无需依赖特殊的客户端,而且在ALT切换过程中,无需额外调用相关接口参与ALT切换,具有较高可用性。在另一些实施例中,应用可以以客户端的形式部署在计算机中,客户端的连接器可以集成路由能力作为路由节点,从而实现无中间件的ALT切换。
在一些可能的实现方式中,所述源数据库节点中包括第一会话对象,所述目的数据库节点中包括第二会话对象,所述源数据库节点还设置关联会话逻辑标识。该关联会话逻辑标识可以由路由节点远程创建,也可以是源数据库节点根据路由节点发送的对应相同前端连接的不同后端连接的标识创建。其中,每个后端连接对应一个会话对象。上述关联会话逻辑标识可以用于标识所述第一会话对象和所述第二会话对象,从而将第一会话对象和第二会话对象关联。
相应地,所述第二查询命令可以被发送至所述第二会话对象,例如应用发送第二查询命令,路由节点接收到第二查询命令,将其发送至目的数据库节点的第二会话对象中。目的数据库节点在所述第二会话对象中使用所述目标数据来执行所述第二查询命令。
该方法通过关联会话逻辑标识,将源数据库节点中的第一会话对象和目的数据库节点中的第二会话对象关联,从而为发送目标数据至目的数据库节点的第二会话对象中提供帮助。
在一些可能的实现方式中,所述关联会话逻辑标识还记录有事务标识,所述事务标识对应的事务块被所述第一会话对象和所述第二会话对象共享。如此,目的数据库节点中的第二会话对象中可以识别共享事务块的结果,根据需要进行事务恢复以及后续的顶多一次结构化查询命令重试动作。
在一些可能的实现方式中,所述源数据库节点为应用的规格或版本变更前所述应用连接的数据库节点,所述目的数据库节点为所述应用的规格或版本变更后所述应用连接的数据库节点。如此可以实现应用的无损升级或无损扩缩容,且用户无感知,提升了用户体验。
在一些可能的实现方式中,所述源数据库节点和所述目的数据库节点归属于同一服务集群,且所述源数据库节点的负载大于所述目的数据库节点的负载。也即该方法可以实现按需会话切换,从而满足负载均衡的诉求。
在一些可能的实现方式中,所述源数据库节点为主节点,所述目的数据库节点为备份节点。具体地,主节点即将发生故障或即将掉电时,可以将应用连接的节点切换至备份节点,从而满足高可用性的需求。
在一些可能的实现方式中,所述源数据库节点和所述目的数据库节点为存算分离的云原生数据库节点。具体地,云原生应用可以根据需求自适应地将云原生数据库节点切换至其他云原生数据库节点,从而满足业务需求。
第二方面,本申请提供一种节点切换系统。所述系统包括源数据库节点和目的数据库节点;
所述源数据库节点,用于执行第一查询命令,将目标数据发送至目的数据库节点,所述目标数据为所述第一查询命令的执行结果中执行第二查询命令所需的数据;
所述目的数据库节点,用于使用所述目标数据来执行所述第二查询命令。
在一些可能的实现方式中,所述第一查询命令为第一事务中的命令,所述第二查询命令为第二事务中的命令。
在一些可能的实现方式中,所述第一查询命令和所述第二查询命令同一事务中的命令。
在一些可能的实现方式中,所述系统还包括:
路由节点,用于在所述目的数据库节点使用所述目标数据来执行所述第二查询命令之前,将所述第一查询命令路由至所述目的数据库节点,以便所述目的数据库节点执行所述第一查询命令。
在一些可能的实现方式中,所述源数据库节点还用于:
检测到所述事务到达设定的执行位点后,向所述路由节点发送返回码,所述返回码用于指示所述目的数据库节点执行所述第一查询命令。
在一些可能的实现方式中,所述源数据库节点中包括第一会话对象,所述目的数据库节点中包括第二会话对象,所述源数据库节点还用于:
设置关联会话逻辑标识,所述关联会话逻辑标识用于标识所述第一会话对象和所述第二会话对象,所述第二查询命令被发送至所述第二会话对象;
所述目的数据库节点具体用于:
在所述第二会话对象中使用所述目标数据来执行所述第二查询命令。
在一些可能的实现方式中,所述关联会话逻辑标识还记录有事务标识,所述事务标识对应的事务块被所述第一会话对象和所述第二会话对象共享。
在一些可能的实现方式中,所述源数据库节点为应用的规格或版本变更前所述应用连接的数据库节点,所述目的数据库节点为所述应用的规格或版本变更后所述应用连接的数据库节点。
在一些可能的实现方式中,所述源数据库节点和所述目的数据库节点归属于同一服务集群,且所述源数据库节点的负载大于所述目的数据库节点的负载。
在一些可能的实现方式中,所述源数据库节点为主节点,所述目的数据库节点为备份节点。
在一些可能的实现方式中,所述源数据库节点和所述目的数据库节点为存算分离的云原生数据库节点。
第三方面,本申请提供一种计算机集群。所述计算机集群包括第一计算机和第二计算机,第一计算机用于实现如第二方面的任一种实现方式的系统中源数据库节点的功能,第二计算机用于实现如第二方面的任一种实现方式的系统中目的数据库节点的功能。
其中,每台计算机包括至少一个处理器和至少一个存储器。所述至少一个处理器、所述至少一个存储器进行相互的通信。所述至少一个处理器用于执行所述至少一个存储器中存储的指令,以使得计算机执行如第一方面或第一方面的任一种实现方式中的节点切换方法。
第四方面,本申请提供一种计算机可读存储介质,所述计算机可读存储介质中存储有指令,所述指令指示计算机集群执行上述第一方面或第一方面的任一种实现方式所述的节点切换方法。
第五方面,本申请提供了一种包含指令的计算机程序产品,当其在计算机集群上运行时,使得计算机集群执行上述第一方面或第一方面的任一种实现方式所述的节点切换方法。
本申请在上述各方面提供的实现方式的基础上,还可以进行进一步组合以提供更多实现方式。
附图说明
为了更清楚地说明本申请实施例的技术方法,下面将对实施例中所需使用的附图作以简单地介绍。
图1为本申请实施例提供的一种节点切换系统的架构示意图;
图2为本申请实施例提供的一种关联会话共享事务块的示意图;
图3为本申请实施例提供的一种节点切换方法的流程图;
图4为本申请实施例提供的一种转账操作界面的界面示意图;
图5为本申请实施例提供的一种排干事务的粒度示意图;
图6为本申请实施例提供的一种计算机集群的结构示意图。
具体实施方式
本申请实施例中的术语“第一”、“第二”仅用于描述目的,而不能理解为指示或暗示相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”的特征可以明示或者隐含地包括一个或者更多个该特征。
首先对本申请实施例中所涉及到的一些技术术语进行介绍。
应用(application,APP),是应用程序(application program)的简称,具体是指为针对用户的某种特殊应用目的所撰写的程序。例如,应用可以包括文本处理器、表格处理器、浏览器、媒体播放器、航空飞行模拟器、命令行游戏、图像编辑器、在线商店、图书管理系统等不同功能的应用。
其中,一些应用是基于数据库驱动的,例如在线商店、图书管理系统等应用在运行时,通常会连接数据库节点(database node,DB node)。数据库节点是指部署数据库的节点,需要说明的是,数据库可以部署在一个节点,或多个节点形成的集群中。在本申请中,节点可以是计算机等物理节点,或者是计算机上的逻辑节点。计算机包括但不限于终端或服务器等设备,计算机上的逻辑节点可以通过虚拟化方式得到,例如计算机上的逻辑节点可以为计算机上的虚拟机或容器。
应用可以在数据库节点创建会话(session)对象。在数据操作过程中,应用将操作上下文如系统变量system variables、用户自定义变量User defined variables、事务状态transaction status、用户临时表等维持在会话对象中,从而使得数据库节点能够基于会话对象中的上述信息提供较好的服务体验。
在许多场景中,需要对应用连接的数据库节点进行切换。例如,用户规模变更时,如由1000用户扩大为10万用户,应用使用的数据库管理系统(Database ManagementSystems,DBMS)引擎(也可以简称为数据库引擎)的规格(也即应用的规格)也要相应发生变更,为此需要将应用连接的数据库节点进行切换。又例如,应用进行版本变更(如版本升级)时,通常需要将应用连接的数据库节点进行切换,以将应用由当前版本切换为新版本。在一些情况下,应用还配置有主备节点,以保障服务的高可用性(high availability,HA),其中,主备节点包括主节点和备份节点,当主节点故障时,应用可以触发主备倒换,以将应用连接的数据库节点由主节点切换为备份节点。此外,在云场景中,云原生应用通过存算分离,使得存储资源做到了弹性可扩展,基于此,需要对云原生应用连接的数据库节点(即云原生数据库节点)进行切换。
为了满足高可用性的要求,通常可以进行应用无损透明(application losslesstransparent,ALT)切换。其中,ALT切换可以实现切换过程中应用无感知,而且业务在切换后无损失。目前,相关技术采用中间件连接保持增强技术实现ALT切换。中间件可以是位于应用和数据库节点之间的软件,该中间件例如可以是代理proxy。具体地,proxy保持前端连接(proxy与应用的连接)不断,在应用运行过程中,proxy监控事务的执行过程,缓存改变session中操作上下文的结构化查询命令(Structured Query Language command,SQLcommand)。当切换数据库节点后,在新的会话对象(切换后的节点上的会话对象)中执行缓存的SQL command,从而在新的会话对象中维持之前的事务状态。
然而,上述方法需要proxy等中间件识别SQL语句,实时记录事务状态,并缓存改变操作上下文的SQL command。如此需要消耗较多的处理器和内存资源,导致实际运行的业务性能受到影响。
有鉴于此,本申请实施例提供了一种节点切换方法。该方法可以由节点切换系统执行。具体地,节点切换系统包括源数据库节点和目的数据库节点。其中,源数据库节点可以执行第一查询命令,然后将第一查询命令的执行结果中执行第二查询命令所需的数据即目标数据(例如为操作上下文)发送至目的数据库节点,目的数据库节点使用上述目标数据来执行第二查询命令,从而实现将应用连接的数据库节点由源数据库节点切换至目的数据库节点。
在该方法中,为实现节点切换所实施的一些复杂操作下沉至数据库节点,中间件所在的路由节点无需识别SQL语句,实时记录事务状态,以及缓存大量的、改变操作上下文的查询命令,避免了消耗路由节点较多的处理器和内存资源,降低了路由节点的代价和开销,保障了业务性能。
本申请实施例的节点切换方法可以应用于数据库节点计划内切换场景,包括规格变更(如扩容或缩容)、版本变更(如版本升级)等场景。本申请实施例的节点切换方法也可以应用于多写部署下的按需会话切换,从而满足负载均衡的诉求。其中,多写部署是指应用配置有多个数据库节点,多个数据库节点归属一个服务集群。当服务集群中的一个或多个数据库节点(该场景中的源数据库节点)的负载较大时,可以根据需求将会话切换至服务集群中负载相对较小的数据库节点(该场景中的目的数据库节点),从而实现负载均衡。
本申请实施例的节点切换方法也可以应用于基于逻辑日志复制或物理日志复制的传统主备架构数据库。具体地,主节点(该场景中的源数据库节点)即将发生故障或者即将掉电时,可以将应用连接的节点切换至备份节点(该场景中的目的数据库节点)。本申请实施例的节点切换方法还可以应用于云场景。具体地,云原生应用可以根据需求自适应地将连接的云原生数据库(Cloud Native Database)节点(该场景中的源数据库节点)切换至其他云原生数据库节点(该场景中的目的数据库节点)。
为了使得本申请的技术方案更加清楚、易于理解,下面结合附图对本申请实施例的节点切换系统进行详细说明。
参见图1所示的节点切换系统的架构示意图,节点切换系统10包括源数据库节点100和目的数据库节点200。源数据库节点100和目的数据库节点200等数据库节点用于提供引擎能力,例如是通过数据库引擎内核(DB kernel)提供引擎能力。在图1的示例中,源数据库节点100记作DB Node X,目的数据库节点200记作DB Node Y。数据库节点用于为应用20提供数据服务。其中,在节点切换之前,由源数据库节点100为应用20提供数据服务,在节点切换之后,由目的数据库节点200为应用20提供数据服务。
具体地,源数据库节点100用于执行第一查询命令,该第一查询命令可以是应用20发送的查询命令。在一些实施例中,该查询命令可以是SQL command,或者是通过其他查询语言编写的查询命令。源数据库节点100还用于将第一查询命令的执行结果中执行第二查询命令所需的数据即目标数据发送至目的数据库节点200。目的数据库节点200用于使用目标数据来执行第二查询命令。与第一查询命令类似,第二查询命令可以是应用20发送的查询命令。如此,实现了将应用20连接的数据库节点由源数据库节点100切换至目的数据库节点200。
在图1的示例中,节点切换系统10还包括路由节点300。路由节点300可以是部署proxy等中间件的节点,或者是部署连接器(connector)的节点。其中,连接器为应用20提供了连接数据库节点的方式,该连接器可以是数据库提供商提供的连接器,也可以是其他服务提供商或开发者提供的连接器。
具体地,应用20发送第一查询命令,该第一查询命令到达路由节点300,路由节点300将该第一查询命令路由至源数据库节点100。源数据库节点100执行第一查询命令,然后将第一查询命令的执行结果中执行第二查询命令所需的目标数据发送至目的数据库节点。其中,源数据库节点100可以是在执行完第一查询命令后,检测第一查询命令所在事务是否到达设定的执行位点,即源数据库节点100执行排干事务(drain transaction)的操作。当事务到达设定的执行位点,则表明事务排干(drain clean),源数据库节点100可以向路由节点300发送用于指示在目的数据库节点200执行第一查询命令的返回码,例如该返回码可以为ALT Retry,路由节点300响应于该返回码,将第一查询命令路由至目的数据库节点200,以便目的数据库节点200在执行第二查询命令之前,先执行第一查询命令。
进一步地,节点切换系统10还包括控制节点400。控制节点400用于调度控制路由节点300、源数据库节点100在ALT切换过程执行的操作。具体地,控制节点400可以指示路由节点300将源数据库节点100中的所有会话对象纳入ALT切换,或者按需将源数据库节点100中的会话对象纳入ALT切换。如图1所示,源数据库节点100中包括多个会话对象,具体为session AX和session BX。session AX和session BX分别对应不同的前端连接(如connection A和connection B)和后端连接(connection AX和connection BX)。控制节点400可以指示路由节点300将源数据库节点100中的session AX和session BX(可以称作第一会话对象)纳入ALT切换,路由节点300可以根据该指示,在目的数据库节点200创建session AY和session BY(可以称作第二会话对象)。其中,session AY和session BY分别对应不同的前端连接(如connection A和connection B)和后端连接(connection AY和connection BY)。
相应地,源数据库节点100可以在上述第一会话对象中执行第一查询命令,并在接收到控制节点400的排干事务指示后,执行排干事务。当事务排干,源数据库节点100向路由节点300发送用于指示在目的数据库节点200执行第一查询命令的返回码,如ALT Retry,路由节点300可以先将第一查询命令保持(hold)。然后控制节点400指示源数据库节点100克隆会话。第一会话对象中包括第一查询命令的执行结果。相应地,源数据库节点100基于控制节点400发送的克隆会话指示,将第一查询命令的执行结果中执行第二查询命令所需的目标数据发送至目的数据库节点200,例如将目标数据发送至目的数据库节点200的第二会话对象中。目的数据库节点200可以在第二会话对象如session AY和session BY中,执行上述第一查询命令,以及使用各自的目标数据来执行第二查询命令。
在一些可能的实现方式中,源数据库节点100还设置关联会话逻辑标识。关联会话逻辑标识用于标识第一会话对象和第二会话对象,具体是标识对应相同前端连接的第一会话对象和第二会话对象,从而将对应相同前端连接的会话对象关联。其中,第一会话对象和第二会话对象对应不同后端连接,因此关联会话逻辑标识中可以通过后端连接的标识来标识上述会话对象。如图1所示,关联会话逻辑标识中包括connection AX的标识AX_connectionId和connection AY的标识AY_connectionId,如此可以将connection AX和connection AY关联。类似地,关联会话逻辑标识中包括connection BX的标识BX_connectionId和connection BY的标识BY_connectionId,如此可以将connection BX和connection BY关联。相应地,源数据库节点100发送目标数据至目的数据库节点200时,可以根据关联会话逻辑标识发送到目的数据库节点200的第二会话对象中。需要说明的是,关联会话逻辑标识中还包括第二会话对象的服务标识,如ServerId_in_AY、ServerId_in_BY。
在该实施例中,路由节点300不主动拦截查询命令,而是处理查询命令的返回码。例如,路由节点300可以获取第一查询命令的返回码。当返回码指示在目的数据库节点执行第一查询命令时,例如返回码为ALT Retry时,表明第一查询命令所属事务处于ALT切换的某一层次的执行位点。路由节点300可以将第一结构查询命令保持,具体是将第一查询命令挂起,不向上返回执行结果。当路由节点300接收到控制节点400的结束命令时,根据关联会话逻辑标识将第二查询命令转发至第二会话对象,以在第二会话对象中执行,从而实现应用20连接的数据库节点的切换。在节点切换完成之后,应用20的数据操作,例如是增加、删除、查询或修改等操作,经过路由节点300转发至目的数据库节点200,如DB Node Y中进行操作。
进一步地,参见图2所示的关联会话共享事务块的示意图,关联会话逻辑标识中还可以包括事务标识Trx Id,如此可以绑定源数据库节点100中第一会话对象(例如是Session Ax)中的事务Transaction,故关联会话对象(如Session Ax和Session Ay)共享该事务的事务块Transaction Block。相应地,目的数据库节点200中的第二会话对象(例如是Session Ay)识别共享事务块的结果,根据需要进行事务恢复(transaction recovery)以及后续的顶多一次查询命令重试动作。
接下来,从交互的角度,结合附图对本申请实施例的节点切换方法进行详细介绍。
参见图3所示的节点切换方法的交互流程图,该方法包括:
S301:控制节点400向路由节点300发送进入准备阶段的通知。
具体地,准备阶段是指ALT切换的准备阶段(prepare phase)。在进行ALT切换前,控制节点400可以向路由节点300发送进入准备阶段的通知,以通知路由节点300进入准备阶段。在该准备阶段,路由节点300可以进行相关的准备工作,从而保障ALT切换能够顺利完成。
上述S301为本申请实施例的可选步骤,执行本申请实施例的节点切换方法也可以不执行上述S301。例如,路由节点300可以进行ALT切换的准备工作,无需等待控制节点400通知后再执行。
S302:路由节点300在目的数据库节点200创建与源数据库节点100中第一会话对象对应的第二会话对象。
目的数据库节点200是指应用20切换后所要连接的节点。在本实施例中,目的数据库节点200可以是预先配置好的节点,也可以是实时分配的节点。例如,主备倒换场景中,目的数据库节点200可以是预先配置好的备份节点。又例如,在云原生数据库场景中,目的数据库节点200可以是通过随机方式实时分配的一个或多个节点。
具体地,路由节点300可以通过远程的方式在目的数据库节点200创建与源数据库节点100中第一会话对象对应的第二会话对象。在一些实施例中,路由节点300也可以向目的数据库节点200发送会话对象创建命令,目的数据库节点200可以响应于会话对象创建命令,创建第一会话对象对应的第二会话对象。其中,第一会话对象可以是源数据库节点100中的所有会话对象,也可以是源数据库节点100中的部分会话对象,路由节点300按需在目的数据库节点200创建第二会话对象。
需要说明的是,上述S302为本申请实施例的可选步骤,执行本申请实施例的节点切换方法也可以不执行上述S302。例如,目的数据库节点200也可以复用已有的会话对象,无需新建会话对象。
S303:路由节点300在源数据库节点100设置关联会话逻辑标识。
具体地,路由节点300可以获得各会话对象的前端连接的标识和后端连接的标识,基于上述前端连接的标识和后端连接的标识,可以确定对应相同前端连接,并且对应不同后端连接的多个会话对象。路由节点300可以在源数据库节点100设置数据结构将上述多个会话对象关联,得到关联会话。该数据结构记作关联会话逻辑标识。关联会话逻辑标识中包括对应相同前端连接的多个会话对象所对应的不同后端连接的标识。
如图1所示,session AX和session AY对应相同前端连接connection A,且对应不同后端连接,如connection AX和connection AY。路由节点300在源数据库节点100设置关联会话逻辑标识,该关联会话逻辑标识中包括AX_connectionId和AY_connectionId,由此可以实现将session AX和session AY关联。类似地,关联会话逻辑标识中包括BX_connectionId和BY_connectionId,由此可以实现将session BX和session BY关联。
进一步地,关联会话逻辑标识还可以包括服务标识或事务标识。如图1所示,关联会话逻辑标识中包括ServerId_in_Ay、ServerId_in_By等服务标识,以及TrxId等事务标识。
在本实施例中,路由节点300在获得对应相同前端连接的不同后端连接的标识后,可以通过远程方式在源数据库节点100创建关联会话逻辑标识。在另一些实施例中,路由节点300也可以向源数据库节点100发送对应相同前端连接的不同后端连接的标识,源数据库节点100可以根据相同前端连接的不同后端连接的标识创建关联会话逻辑标识。也即源数据库节点100设置关联会话逻辑标识有多种实现方式,本实施例对此不作限制。
S304:路由节点300接收应用20发送的结构化查询命令T1。
结构化查询命令通常是结构化查询语言SQL编写生成。结构化查询命令可以用于指示对数据库节点(源数据库节点100或目的数据库节点200)中的数据进行数据操作。例如,结构化查询命令可以用于指示对数据库节点中的数据进行增加、删除、查询或修改等操作。
事务,是一个或多个数据操作的组合。为了便于理解,下面以转账为例对事务进行说明。在该示例中,应用20为手机银行应用,用户通过应用20在源数据库节点100创建会话后,可以执行转账操作,应用20可以响应于该转账操作,生成转账事务,该转账事务包括如下两条结构化查询命令:(a)从账户A中扣除指定金额的货币;(b)向账户B中添加指定金额的货币。路由节点300可以接收应用20发送的上述结构化查询命令。
在一些可能的实现方式中,应用20可以提供数据操作界面,该数据操作界面可以是图形用户界面(graphical user interface,GUI),或者是命令用户界面(command userinterface,CUI)。用户可以通过上述数据操作界面提供的控件或者是命令行工具,触发数据操作,应用20响应于用户的上述数据操作生成事务,该事务包括一个或多个结构化查询命令。图4示出了一种手机银行中转账操作界面的界面示意图,如图4所示,转账操作界面40包括收款人配置控件41、收款账号配置控件42、收款银行配置控件43、转账金额配置控件44和付款账号配置控件45,用户可以通过上述配置控件配置相应的收款信息、付款信息以及转账金额,转账操作界面40还包括确认控件46,用户触发上述确认控件46后,应用20可以生成转账事务。应用20可以依次发送事务包括的结构化查询命令。相应地,路由节点300可以依次接收事务包括的结构化查询命令。为了便于区分,本申请实施例将本次接收的结构化查询命令记作结构化查询命令T1。
S306:路由节点300向源数据库节点100转发结构化查询命令T1。
在本实施例中,路由节点300可以维护路由表。路由节点300可以通过路由表中的表项对接收到的结构化查询命令,如结构化查询命令T1进行转发,从而保障源数据库节点100中数据的安全性。
S308:源数据库节点100向路由节点300返回结构化查询命令T1的返回码。
源数据库节点100可以在控制节点400的调度下执行结构化查询命令,例如是执行结构化查询命令T1,获得结构化查询命令T1的执行结果。该执行结果中可以包括操作上下文和事务状态。其中,操作上下文可以包括系统变量、用户自定义变量、事务状况、用户临时表等。
源数据库节点100在执行结构化查询命令时,还可以执行排干事务(draintransaction)。排干事务具体是指监控正在运行的事务,到达设定的执行位点便阻塞对应会话上的操作。其中,源数据库节点100可以使用数据库引擎内核中的排干事务组件,执行排干事务。需要说明的是,源数据库节点100支持不同粒度地排干事务。参见图5所示的排干事务的粒度示意图,数据库引擎内核中包括不同粒度的排干事务组件,一种排干事务组件用于拦截事务完成边界,以确定事务排干(drain clean),另一种排干事务组件用于拦截事务中的执行边界。在一些实施例在,事务中的执行边界可以是事务中设定的命令完成边界。需要说明的是,数据库引擎内核中还可以包括其他粒度的排干事务组件,本实施例对此不作限制。
源数据库节点100可以根据排干事务的结果,生成返回码。具体地,事务到达设定的执行位点,例如到达事务完成边界或者是事务中的执行边界,源数据库节点100可以生成用于指示在目的数据库节点执行对应查询命令的返回码,该返回码例如是“ALT Retry”。事务未到达设定的执行位点,例如未到达事务完成边界或者是事务中的执行边界,源数据库节点100可以生成用于指示当前查询命令执行完成的返回码,该返回码例如是“OK”。其中,“OK”用于指示当前查询命令已执行完毕,在切换至目的数据库节点200后可以不必重复执行。在图3的示例中,结构化查询命令T1的返回码可以是“OK”。
S310:路由节点300向应用20返回结构化查询命令T1的返回码。
路由节点300接收到返回码后,向应用20返回上述返回码,以便于应用20基于返回码执行后续操作。在图1的实施例中,结构化查询命令T1的返回码为“OK”,基于此,应用20可以继续发送结构化查询命令,如发送结构化查询命令T2,以便于路由节点300将结构化查询命令T2路由至后端的数据库节点,如源数据库节点100。
S312:路由节点300接收应用20发送的结构化查询命令T2。
S314:路由节点300向源数据库节点100转发结构化查询命令T2。
S316:源数据库节点100向路由节点300返回结构化查询命令T2的返回码。
S318:路由节点300向应用20返回结构化查询命令T2的返回码。
其中,结构化查询命令T2可以是事务中在结构化查询命令T1之后的命令。例如,结构化查询命令T1可以是用于从账户A中扣除指定金额的货币的命令;又例如,结构化查询命令T2可以是用于向账户B中添加指定金额的货币的命令。结构化查询命令T2也可以另一事务中的命令。
上述S312至S318的具体实现可以参见S304至S310相关内容描述。需要说明的是,执行本申请实施例的节点切换方法也可以不执行上述S312至S318。例如,事务中包括一个结构化查询命令时,执行本申请实施例的节点切换方法可以不执行S312至S318。
需要说明的是,图3是以结构化查询命令T1和结构化查询命令T2为同一事务中命令进行示例说明的。在本申请实施例其他可能的实现方式中,结构化查询命令T1和结构化查询命令T2也可以是不同事务中的命令。例如,结构化查询命令T1可以是第一事务中的命令,结构化查询命令T2可以是第二事务中的命令。
S320:路由节点300接收应用20发送的结构化查询命令T3。
S322:路由节点300向源数据库节点100转发结构化查询命令T3。
S324:源数据库节点100向路由节点300返回结构化查询命令T3的返回码。当结构化查询命令T3的返回码指示在目的数据库节点执行结构化查询命令T3时,执行S326。
区别于Proxy连接增强的Drain Transaction动作完全脱离于数据库引擎事务处理逻辑,只能尝试拦截SQL Command和期待事务完全执行结束,拦截粒度为事务级,本申请实施例的数据库引擎内核能部署不同能力的Drain Transaction组件,决定不同的事务执行粒度和精确度。
S326:路由节点300将结构化查询命令T3保持。
具体地,路由节点300将结构化查询命令T3挂起,以便于为复制第一会话对象中的内容至第二会话对象做准备。
需要说明的是,上述S320至S326之前还可以传输更多的结构化查询命令以及相应的返回码,源数据库节点100可以执行结构化查询命令直至事务执行到设定的执行位点。此外,上述S326为可选步骤,例如,结构化查询命令T3为一个事务的最后一个命令时,路由节点300也可以不执行上述S326。
S328:控制节点400向源数据库节点100发送会话克隆命令。
其中,会话克隆命令用于指示源数据库节点100将第一会话对象中的内容克隆至第二会话对象中。控制节点400可以通过会话克隆函数如RDS_ALT clone_Session()生成会话克隆命令并向源数据库节点100发送上述会话克隆命令,从而执行源数据库节点100的数据库引擎内核中的会话克隆组件。
S330:源数据库节点100执行会话克隆,将第一会话对象中的目标数据发送至第二会话对象。
其中,第一会话对象中的内容可以包括前述查询命令(为了便于描述也可以称作第一查询命令)的执行结果。该执行结果包括执行后续的查询命令(为了便于描述也可以称作第二查询命令)所需的数据,该数据也即目标数据。目标数据可以包括操作上下文和事务状态。其中,操作上下文可以包括系统变量、用户定义变量、事务状况或用户临时表中的一种或多种。
源数据库节点100通过将第一会话对象中的目标数据克隆至第二会话对象,从而为后续基于目的数据库节点200提供服务奠定基础。其中,源数据库节点100执行会话克隆有多种实现方式。
在一些可能的实现方式中,源数据库节点100可以采用路由节点300连接保持的逻辑方式进行会话克隆。在另一些可能的实现方式中,源数据库节点也可以采用通过会话通道复制会话的物理方式进行会话克隆。
与通过路由节点300连接保持的方式相比,通过会话通道复制会话的物理方式可以避免在目的数据库节点200中将大量命令重新执行一次,从而导致大量场景中存在一致性反例的问题。
S332:路由节点300接收控制节点400的结束命令。
具体地,当源数据库节点100克隆会话完成后,可以向控制节点400返回克隆会话完成通知,控制节点400可以基于克隆会话完成通知生成结束命令,向路由节点300发送结束命令。
S334:路由节点300根据所述关联会话逻辑标识将结构化查询命令T3转发至目的数据库节点200中所述第二会话对象。
路由节点300接收到结束命令,可以根据关联会话逻辑标识,确定当前源数据库节点100中第一会话对象对应的目的数据库节点200中的第二会话对象,将挂起的结构化查询命令如结构化查询命令T3转发至第二会话对象,以在第二会话对象中执行上述结构化查询命令。
在本实施例中,结构化查询命令T1,结构化查询命令T2、结构化查询命令T3可以在同一个事务中。当结构化查询命令T3在源数据库节点100的会话对象(例如是第一会话对象)中执行完毕,若发生ALT切换,那么目的数据库节点200可以根据源数据库节点100的事务(例如是第一事务)在目的数据库节点200恢复上述事务,为了便于描述,目的数据库节点200上的上述事务也可以称作第三事务,如此结构化查询命令T3在第三事务中执行,实质上相当于在第一事务执行,即结构化查询命令T1,结构化查询命令T2、结构化查询命令T3实质上相当于在同一个事务执行,仍然能够满足事务的原子性(atomicity)、一致性(consistency)、隔离性(isolation)和持久性(durability)。
S336:目的数据库节点200向路由节点300返回结构化查询命令T3的返回码。
其中,目的数据库节点200可以执行结构化查询命令T3,获得执行结果。目的数据库节点200可以生成结构化查询命令T3的返回码,然后向路由节点300返回结构化查询命令T3的返回码。在该实施例中,目的数据库节点200返回的结构化查询命令T3的返回码可以是“OK”。
S338:路由节点300向应用20返回结构化查询命令T3的返回码。
需要说明的是,执行本申请实施例的节点切换方法也可以不执行上述S336至S338。
S340:路由节点300接收应用20发送的结构化查询命令T4。
S342:路由节点300向目的数据库节点200转发结构化查询命令T4。
结构化查询命令T3之后还包括其他结构化查询命令,例如包括结构化查询命令T4,路由节点300还可以在接收到结束命令时,将上述后续进入的其他结构化查询命令如结构化查询命令T4转发至第二会话对象。
S344:目的数据库节点200使用目标数据来执行结构化查询命令T4。
其中,结构化查询命令T3和结构化查询命令T4可以是相同事务中的命令。例如可以是一个转账事务中的命令。目的数据库节点200可以根据目标数据在第二会话对象中恢复事务,从而继续执行结构化查询命令T4。在另一些实施例中,结构化查询命令T3和结构化查询命令T4可以是不同事务中的命令。事务之间具有依赖关系,基于此,目的数据库节点200可以使用目标数据来执行结构化查询命令T4。
S346:目的数据库节点200向路由节点300返回结构化查询命令T4的返回码。
S348:路由节点300向应用20返回结构化查询命令T4的返回。
在该示例中,目的数据库节点200向路由节点300返回结构化查询命令T4的返回码可以是“OK”。
上述S346至S348的作用在于通知执行状况。基于此,执行本申请实施例的节点切换方法也可以不执行上述S346至S348。
图3所示实施例以结构化查询命令的执行进行示例说明,在本申请实施例其他可能的实现方式中,也可以是其他查询语言编写的查询命令。
基于上述内容描述,本申请实施例提供了一种节点切换方法。在该方法中,路由节点300无需参与复杂的Drain Transaction和Clone Session的处理过程,DrainTransaction和Clone Session的处理下沉至数据库节点如源数据库节点100,路由节点300不主动拦截查询命令,而是处理查询命令的返回码。路由节点300无需实时记录事务状态,缓存改变操作上下文的查询命令,避免了消耗较多的处理器和内存资源,降低了路由节点的代价和开销,保障了业务性能。此外,路由节点300只需要在创建后端的会话对象基础上,提供ALT路由能力,可以通过轻量级的proxy或connector即可实现。其中,客户端connector可以集成路由能力,如此还可以实现无中间件的ATL切换。
进一步地,该方法应用到云服务中时,应用20连接到路由节点300,无需依赖特殊的客户端,无需改变应用20的程序,在ALT切换过程中,也无需额外调用相关接口去参与ALT切换,简化了ALT切换的流程和复杂度。
基于本申请实施例提供的节点切换方法,本申请实施例还提供了一种如前述的节点切换系统10。下面将结合附图对本申请实施例提供的节点切换系统10进行介绍。
参见图1所示的节点切换系统10的系统架构图,该系统10包括:源数据库节点100和目的数据库节点200;
所述源数据库节点100,用于执行第一查询命令,将目标数据发送至目的数据库节点200,所述目标数据为所述第一查询命令的执行结果中执行第二查询命令所需的数据;
所述目的数据库节点200,用于使用所述目标数据来执行所述第二查询命令。
在一些可能的实现方式中,所述第一查询命令为第一事务中的命令,所述第二查询命令为第二事务中的命令。
在一些可能的实现方式中,所述第一查询命令和所述第二查询命令同一事务中的命令。
在一些可能的实现方式中,所述系统10还包括:
路由节点300,用于在所述目的数据库节点200使用所述目标数据来执行所述第二查询命令之前,将所述第一查询命令路由至所述目的数据库节点200,以便所述目的数据库节点200执行所述第一查询命令。
在一些可能的实现方式中,所述源数据库节点100还用于:
检测到所述事务到达设定的执行位点后,向所述路由节点发送返回码,所述返回码用于指示所述目的数据库节点执行所述第一查询命令。
在一些可能的实现方式中,所述源数据库节点100中包括第一会话对象,所述目的数据库节点200中包括第二会话对象,所述源数据库节点100还用于:
设置关联会话逻辑标识,所述关联会话逻辑标识用于标识所述第一会话对象和所述第二会话对象,所述第二查询命令被发送至所述第二会话对象;
所述目的数据库节点200具体用于:
在所述第二会话对象中使用所述目标数据来执行所述第二查询命令。
在一些可能的实现方式中,所述关联会话逻辑标识还记录有事务标识,所述事务标识对应的事务块被所述第一会话对象和所述第二会话对象共享。
在一些可能的实现方式中,所述源数据库节点100为应用的规格或版本变更前所述应用连接的数据库节点,所述目的数据库节点200为所述应用的规格或版本变更后所述应用连接的数据库节点。
在一些可能的实现方式中,所述源数据库节点100和所述目的数据库节点200归属于同一服务集群,且所述源数据库节点100的负载大于所述目的数据库节点200的负载。
在一些可能的实现方式中,所述源数据库节点100为主节点,所述目的数据库节点200为备份节点。
在一些可能的实现方式中,所述源数据库节点100和所述目的数据库节点200为存算分离的云原生数据库节点。
根据本申请实施例的节点切换系统10可对应于执行本申请实施例中描述的方法,并且节点切换系统10的各个模块/单元的上述和其它操作和/或功能分别为了实现图3所示实施例中的各个方法的相应流程,为了简洁,在此不再赘述。
本申请实施例还提供一种计算机集群。该计算机集群包括至少一台计算机,该至少一台计算机中的任一台计算机可以来自云环境或者边缘环境,也可以是终端。该计算机集群具体用于实现如图1所示实施例中节点切换系统10的功能。
图6提供了一种计算机集群的结构示意图,如图6所示,计算机集群60包括多台计算机600。计算机600包括总线601、处理器602、通信接口603和存储器604。处理器602、存储器604和通信接口603之间通过总线601通信。
总线601可以是外设部件互连标准(peripheral component interconnect,PCI)总线或扩展工业标准结构(extended industry standard architecture,EISA)总线等。总线可以分为地址总线、数据总线、控制总线等。为便于表示,图6中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。
处理器602可以为中央处理器(central processing unit,CPU)、图形处理器(graphics processing unit,GPU)、微处理器(micro processor,MP)或者数字信号处理器(digital signal processor,DSP)等处理器中的任意一种或多种。
通信接口603用于与外部通信。例如,一台计算机的通信接口603用于获取第一查询命令,发送目标数据至目的数据库节点,另一台计算机的通信接口603用于接收目标数据,以及获取第二查询命令等等。
存储器604可以包括易失性存储器(volatile memory),例如随机存取存储器(random access memory,RAM)。存储器604还可以包括非易失性存储器(non-volatilememory),例如只读存储器(read-only memory,ROM),快闪存储器,硬盘驱动器(hard diskdrive,HDD)或固态驱动器(solid state drive,SSD)。
存储器604中存储有计算机可读指令,处理器602执行该计算机可读指令,以使得计算机集群60执行前述节点切换方法(或实现前述节点切换系统10的功能)。
具体地,在实现图1所示系统的实施例的情况下,且图1中所描述的节点切换系统10的各组成部分的功能为通过软件实现的情况下,执行图1中各组成部分的功能所需的软件或程序代码可以存储在计算机集群60中的至少一个存储器604中。至少一个处理器602执行存储器604中存储的程序代码,以使得计算机集群60执行前述节点切换方法。
其中,计算机集群60可以包括第一计算机和第二计算机,第一计算机可以用于实现源数据库节点100的功能,第二计算机可以用于实现目的数据库节点200的功能,第一计算机和第二计算机通过交互从而实现ALT切换。
本申请实施例还提供了一种计算机可读存储介质。所述计算机可读存储介质可以是计算机能够存储的任何可用介质或者是包含一个或多个可用介质的数据中心等数据存储设备。所述可用介质可以是磁性介质,(例如,软盘、硬盘、磁带)、光介质(例如,DVD)、或者半导体介质(例如固态硬盘)等。该计算机可读存储介质包括指令,所述指令指示计算机或计算机集群执行上述节点切换方法。
本申请实施例还提供了一种计算机程序产品。所述计算机程序产品包括一个或多个计算机指令。在计算机上加载和执行所述计算机指令时,全部或部分地产生按照本申请实施例所述的流程或功能。所述计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一计算机可读存储介质传输,例如,所述计算机指令可以从一个网站站点、计算机或数据中心通过有线(例如同轴电缆、光纤、数字用户线(DSL))或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机或数据中心进行传输。所述计算机程序产品可以为一个软件安装包,在需要使用前述节点切换方法的任一方法的情况下,可以下载该计算机程序产品并在计算机或计算机集群上执行该计算机程序产品。
上述各个附图对应的流程或结构的描述各有侧重,某个流程或结构中没有详述的部分,可以参见其他流程或结构的相关描述。

Claims (25)

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.一种节点切换系统,其特征在于,所述系统包括源数据库节点和目的数据库节点;
所述源数据库节点,用于执行第一查询命令,将目标数据发送至所述目的数据库节点,所述目标数据为所述第一查询命令的执行结果中执行第二查询命令所需的数据;
所述目的数据库节点,用于使用所述目标数据来执行所述第二查询命令。
13.根据权利要求12所述的系统,其特征在于,所述第一查询命令为第一事务中的命令,所述第二查询命令为第二事务中的命令。
14.根据权利要求12所述的系统,其特征在于,所述第一查询命令和所述第二查询命令同一事务中的命令。
15.根据权利要求14所述的系统,其特征在于,所述系统还包括:
路由节点,用于在所述目的数据库节点使用所述目标数据来执行所述第二查询命令之前,将所述第一查询命令路由至所述目的数据库节点,以便所述目的数据库节点执行所述第一查询命令。
16.根据权利要求15所述的系统,其特征在于,所述源数据库节点还用于:
检测到所述事务到达设定的执行位点后,向所述路由节点发送返回码,所述返回码用于指示所述目的数据库节点执行所述第一查询命令。
17.根据权利要求12至16任一项所述的系统,其特征在于,所述源数据库节点中包括第一会话对象,所述目的数据库节点中包括第二会话对象,所述源数据库节点还用于:
设置关联会话逻辑标识,所述关联会话逻辑标识用于标识所述第一会话对象和所述第二会话对象,所述第二查询命令被发送至所述第二会话对象;
所述目的数据库节点具体用于:
在所述第二会话对象中使用所述目标数据来执行所述第二查询命令。
18.根据权利要求17所述的系统,其特征在于,所述关联会话逻辑标识还记录有事务标识,所述事务标识对应的事务块被所述第一会话对象和所述第二会话对象共享。
19.根据权利要求12至18任一项所述的系统,其特征在于,所述源数据库节点为应用的规格或版本变更前所述应用连接的数据库节点,所述目的数据库节点为所述应用的规格或版本变更后所述应用连接的数据库节点。
20.根据权利要求12至18任一项所述的系统,其特征在于,所述源数据库节点和所述目的数据库节点归属于同一服务集群,且所述源数据库节点的负载大于所述目的数据库节点的负载。
21.根据权利要求12至18任一项所述的系统,其特征在于,所述源数据库节点为主节点,所述目的数据库节点为备份节点。
22.根据权利要求12至18任一项所述的系统,其特征在于,所述源数据库节点和所述目的数据库节点为存算分离的云原生数据库节点。
23.一种计算机集群,其特征在于,所述计算机集群包括第一计算机和第二计算机,所述第一计算机用于实现如权利要求12至22任一项所述的系统中源数据库节点的功能,所述第二计算机用于实现如权利要求12至22任一项所述的系统中目的数据库节点的功能。
24.一种计算机可读存储介质,其特征在于,包括计算机可读指令;所述计算机可读指令用于实现权利要求1至11任一项所述的方法。
25.一种计算机程序产品,其特征在于,包括计算机可读指令;所述计算机可读指令用于实现权利要求1至11任一项所述的方法。
CN202210283773.XA 2022-03-22 2022-03-22 一种节点切换方法及相关系统 Pending CN116821148A (zh)

Priority Applications (2)

Application Number Priority Date Filing Date Title
CN202210283773.XA CN116821148A (zh) 2022-03-22 2022-03-22 一种节点切换方法及相关系统
PCT/CN2022/130466 WO2023179040A1 (zh) 2022-03-22 2022-11-08 一种节点切换方法及相关系统

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202210283773.XA CN116821148A (zh) 2022-03-22 2022-03-22 一种节点切换方法及相关系统

Publications (1)

Publication Number Publication Date
CN116821148A true CN116821148A (zh) 2023-09-29

Family

ID=88099720

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202210283773.XA Pending CN116821148A (zh) 2022-03-22 2022-03-22 一种节点切换方法及相关系统

Country Status (2)

Country Link
CN (1) CN116821148A (zh)
WO (1) WO2023179040A1 (zh)

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105824846B (zh) * 2015-01-09 2021-04-13 阿里巴巴集团控股有限公司 数据迁移方法及装置
US9805071B1 (en) * 2016-11-10 2017-10-31 Palantir Technologies Inc. System and methods for live data migration
CN107153680B (zh) * 2017-04-18 2021-02-02 北京思特奇信息技术股份有限公司 一种分布式内存数据库在线扩展节点的方法及系统
CN107229674A (zh) * 2017-04-26 2017-10-03 努比亚技术有限公司 一种数据迁移装置、服务器及方法

Also Published As

Publication number Publication date
WO2023179040A1 (zh) 2023-09-28

Similar Documents

Publication Publication Date Title
KR102628362B1 (ko) 컨테이너화된 환경에서 클러스터의 라이브 마이그레이션
US20230393840A1 (en) File update method and apparatus, device and storage medium
CN113032085A (zh) 云操作系统的管理方法、装置、服务器、管理系统及介质
US20100058319A1 (en) Agile deployment of server
CN111124475A (zh) 存储管理的方法、电子设备和计算机可读存储介质
CN110520844A (zh) 云管理平台、虚拟机管理方法及其系统
CN112434008A (zh) 分布式数据库升级方法、设备及介质
CN114827165A (zh) 对多个交易进行分组的方法和区块链节点
CN115292408A (zh) MySQL数据库的主从同步方法、装置、设备及介质
CN111966877A (zh) 前端服务方法、装置、设备及存储介质
JP7217376B2 (ja) ブロックチェーンシステム起動方法、装置、機器および記憶媒体
CN114996352B (zh) 数据库管理系统及方法
CN116821148A (zh) 一种节点切换方法及相关系统
US11977559B2 (en) Providing instant and distributed access to a source blob via copy-on-read blobs and link blobs
CN110647319A (zh) 功能模块解耦方法及系统
CN113761075A (zh) 切换数据库的方法、装置、设备和计算机可读介质
EP3387533B1 (en) Disaster recovery of cloud resources
JP7106778B1 (ja) ブロックチェーンシステム実行方法、装置、機器、および記憶媒体
CN116821194A (zh) 一种会话克隆方法及相关装置
WO2024108348A1 (en) Method and system for eventual consistency of data types in geo-distributed active-active database systems
CN110941511B (zh) 一种快照合并方法、装置、设备及存储介质
CN115878269A (zh) 集群迁移方法、相关装置及存储介质
CN118093104A (zh) 一种任务处理方法、装置及节点
CN114327800A (zh) topic的写入方法、写入装置、处理器与流处理平台
CN115114260A (zh) 数据处理方法、装置、电子设备及存储介质

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication