CN117573656B - 数据库升级方法、电子设备及可读存储介质 - Google Patents

数据库升级方法、电子设备及可读存储介质 Download PDF

Info

Publication number
CN117573656B
CN117573656B CN202410057832.0A CN202410057832A CN117573656B CN 117573656 B CN117573656 B CN 117573656B CN 202410057832 A CN202410057832 A CN 202410057832A CN 117573656 B CN117573656 B CN 117573656B
Authority
CN
China
Prior art keywords
node
upgraded
current
task
upgrading
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.)
Active
Application number
CN202410057832.0A
Other languages
English (en)
Other versions
CN117573656A (zh
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.)
Zhejiang Zhiyu Technology Co ltd
Original Assignee
Zhejiang Zhiyu Technology 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 Zhejiang Zhiyu Technology Co ltd filed Critical Zhejiang Zhiyu Technology Co ltd
Priority to CN202410057832.0A priority Critical patent/CN117573656B/zh
Publication of CN117573656A publication Critical patent/CN117573656A/zh
Application granted granted Critical
Publication of CN117573656B publication Critical patent/CN117573656B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

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/21Design, administration or maintenance of databases
    • G06F16/219Managing data history or versioning
    • 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/23Updating
    • G06F16/2365Ensuring data consistency and integrity
    • 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/23Updating
    • G06F16/2379Updates performed during online database operations; commit processing
    • 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Databases & Information Systems (AREA)
  • Data Mining & Analysis (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Security & Cryptography (AREA)
  • Computing Systems (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本申请提供了一种数据库升级方法、电子设备及可读存储介质,其中,该方法包括:响应针对分布式数据库集群的升级指示,按照预设的升级顺序确定当前待升级服务器以及当前待升级服务器中的待升级节点,根据当前待升级节点在分布式数据库集群中的当前角色,确定当前待升级节点的目标升级方式,按照目标升级方式对当前待升级节点进行升级。本申请可以在保证服务不中断的前提下,实现对集群中各个服务器的服务升级,确保在升级过程中提供连续、稳定的服务,保障了业务的持续运行。

Description

数据库升级方法、电子设备及可读存储介质
技术领域
本申请涉及数据库技术领域,具体而言,涉及一种数据库升级方法、电子设备及可读存储介质。
背景技术
物联网设备和应用通常都对实时性和连续性有较高的要求。传统的停机升级可能导致升级过程中未保存的数据丢失,影响用户的体验和业务的连续性。如何保证升级过程中服务的可用性就成为了亟待解决的问题。
现有技术中,为了实现升级期间服务不中断,第一种方案是采用部署主备集群的方式或是搭建临时备用集群提供服务,第二种方案是对数据库系统中的各个组件依次升级。
但是,第一种方案中若是搭建主备集群,则需要维护两套集群,维护成本过高;若是搭建临时备用集群,数据同步和业务切换的成本太高,实际操作复杂度也较高。第二种方案需要预先设计最小集群拓扑,而且由于架构方面的缺陷,导致升级时不可避免地终止实时数据同步等功能,虽然这部分数据会在数据库服务重启时再开始同步不致数据缺失,但无法适用于实时性要求较高的场景。
发明内容
本申请的目的在于,针对上述现有技术中的不足,提供一种数据库升级方法、电子设备及可读存储介质,以解决现有技术中数据库服务升级时难以保证服务持续以及数据准确的问题。
为实现上述目的,本申请采用的技术方案如下:
第一方面,本申请提供了一种数据库升级方法,应用于分布式数据库集群,所述分布式数据库集群中包括多个服务器,其中,多个服务器上部署有数据节点和/或计算节点,且,多个服务器上部署有控制节点,所述数据节点用于提供数据服务、流数据服务以及计算服务,所述计算节点用于提供流数据服务以及计算服务,所述控制节点用于提供元数据服务;所述方法包括:
响应针对所述分布式数据库集群的升级指示,按照预设的升级顺序确定当前待升级服务器以及所述当前待升级服务器中的当前待升级节点,其中,所述当前待升级节点包括所述数据节点、所述控制节点或所述计算节点;
根据所述当前待升级节点在所述分布式数据库集群中的当前角色,确定所述当前待升级节点的目标升级方式,所述目标升级方式包括:立即升级或升级并切换当前角色;
按照所述目标升级方式对所述当前待升级节点进行升级。
可选地,所述根据所述当前待升级节点在所述分布式数据库集群中的当前角色,确定所述当前待升级节点的目标升级方式,包括:
若所述当前待升级节点为数据节点或所述计算节点,且所述当前待升级节点的当前角色为提供流数据服务的第一主节点,则确定所述当前待升级节点的目标升级方式为升级并切换当前角色,否则,确定所述当前待升级节点的目标升级方式为立即升级,其中,所述第一主节点用于响应外部服务的请求信息提供流数据服务;
若所述当前待升级节点为控制节点,且所述当前待升级节点的当前角色为提供元数据服务的第二主节点,则确定所述当前待升级节点的目标升级方式为升级并切换当前角色,否则,确定所述当前待升级节点的目标升级方式为立即升级,其中,所述第二主节点用于响应外部服务的请求信息提供元数据服务;
若所述当前待升级节点为数据节点或所述计算节点,且所述当前待升级节点的当前角色为协调者,则确定所述当前待升级节点的目标升级方式为升级并切换当前角色,否则,确定所述当前待升级节点的目标升级方式为立即升级,其中,所述协调者用于响应外部服务的请求信息向上层服务传递请求信息并推动事务进行。
可选地,所述按照所述目标升级方式对所述当前待升级节点进行升级,包括:
若所述当前待升级节点为提供流数据服务的数据节点或计算节点、且所述当前待升级节点的当前角色为主节点、且所述当前待升级节点的目标升级方式为升级并切换当前角色,则启动所述当前待升级节点升级,并由主节点所在分组的从节点发起投票,从分组中的从节点中选择出目标从节点作为新的主节点;
若所述当前待升级节点为提供元数据服务的控制节点、且所述当前待升级节点的当前角色为主节点、且所述当前待升级节点的目标升级方式为升级并切换当前角色,则启动所述当前待升级节点升级,并由主节点所在分组的从节点发起投票,并从分组中的从节点中选择出目标从节点作为新的主节点;
若所述当前待升级节点为数据节点或计算节点、且所述当前待升级节点的当前角色为协调者、且所述当前待升级节点的目标升级方式为升级并切换当前角色,则启动所述当前待升级节点升级,并从协调者之外的数据节点或计算节点中选择出目标数据节点或目标计算节点作为新的协调者。
可选地,所述由主节点所在分组的从节点发起投票,从分组中的从节点中选择出目标从节点作为新的主节点,包括:
若从节点在预设时间内没有接收到主节点发送的心跳消息,则发起投票,并由主节点所在分组的各从节点基于一致性算法协议进行协商处理,以确定所述新的主节点;
由所述新的主节点响应外部请求并提供流数据服务。
可选地,所述方法还包括:
若所述当前待升级节点为数据节点或计算节点,且所述当前待升级节点启动升级时所述当前待升级节点中存在正在执行的第一任务,则确定所述当前待升级节点是否为协调者;
若所述当前待升级节点为协调者,则API在确定所述当前待升级节点断开连接时,对所述第一任务添加第一标识,并向新的协调者重新提交所述第一任务,所述第一标识用于指示所述第一任务为二次提交,并指示所述第一任务的任务序号;
若所述当前待升级节点不是协调者,则协调者在确定所述当前待升级节点断开连接时,由所述API对所述第一任务添加第一标识,并由所述API向协调者重新提交所述第一任务。
可选地,所述方法还包括:
若所述当前待升级节点为控制节点,且所述当前待升级节点的当前角色为主节点,且所述当前待升级节点启动升级时所述当前待升级节点中存在正在执行的第一任务,则协调者在确定所述当前待升级节点断开连接时,由API对所述第一任务添加第一标识,并向协调者重新提交所述第一任务,所述第一标识用于指示所述第一任务为二次提交,并指示所述第一任务的任务序号。
可选地,所述方法还包括:
若所述当前待升级节点为提供流数据服务的数据节点或计算节点,且所述当前待升级节点的当前角色为主节点,且所述当前待升级节点启动升级时所述当前待升级节点中存在正在执行的第一任务,则API在确定所述当前待升级节点断开连接时,对所述第一任务添加第一标识,并向新的主节点重新提交所述第一任务,所述第一标识用于指示所述第一任务为二次提交,并指示所述第一任务的任务序号。
可选地,在所述API向协调者重新提交所述第一任务之后,所述方法还包括:
若所述协调者确定所述第一任务中包括所述第一标识,则根据所述第一任务的客户端标识以及所述第一标识,在映射关系表中查找,确定所述第一任务是否已经完成,所述映射关系表用于表征客户端标识与已完成任务的任务序号的映射关系;
若所述第一任务未完成,则重新执行所述第一任务,若所述第一任务已完成,则不执行所述第一任务,其中,未执行成功的任务基于任务回收机制进行回收。
第二方面,本申请提供了一种电子设备,包括:处理器、存储介质和总线,所述存储介质存储有所述处理器可执行的机器可读指令,当电子设备运行时,所述处理器与所述存储介质之间通过总线通信,所述处理器执行所述机器可读指令,以执行如上述数据库升级方法的步骤。
第三方面,本申请提供了一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器运行时执行如上述数据库升级方法的步骤。
本申请的有益效果是:在升级数据库的过程中可以根据待升级节点的角色确定升级方式,可以在保证服务不中断的前提下,实现对集群中各个服务器的服务升级,确保在升级过程中提供连续、稳定的服务,保障了业务的持续运行。并且相比于现有的升级方式,本申请不需要搭建备用集群,也不需要规划最小集群拓扑,在升级时不必终止实时数据同步功能,避免了传统升级方式造成的对应时段数据缺失的问题,确保了数据的连续性和一致性;无需占用其他资源,节约了成本;简洁的操作减少了运维的复杂性和工作量,降低了出问题的风险,提升了系统的稳定性和可靠性。
附图说明
为了更清楚地说明本申请实施例的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,应当理解,以下附图仅示出了本申请的某些实施例,因此不应被看作是对范围的限定,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他相关的附图。
图1示出了本申请实施例提供的一种分布式数据库集群的架构示意图;
图2示出了本申请实施例提供的一种数据库升级方法的流程图;
图3示出了本申请实施例提供的一种确定目标升级方式的流程图;
图4示出了本申请实施例提供的一种按照目标升级方式进行服务升级的流程图;
图5示出了本申请实施例提供的一种确定新的主节点的流程图;
图6示出了本申请实施例提供的一种数据节点或计算节点中断时重试机制的流程图;
图7示出了本申请实施例提供的一种重新提交第一任务的流程图;
图8示出了本申请实施例提供的一种数据库升级装置的结构示意图;
图9示出了本申请实施例提供的一种电子设备的结构示意图。
具体实施方式
为使本申请实施例的目的、技术方案和优点更加清楚,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,应当理解,本申请中附图仅起到说明和描述的目的,并不用于限定本申请的保护范围。另外,应当理解,示意性的附图并未按实物比例绘制。本申请中使用的流程图示出了根据本申请的一些实施例实现的操作。 应该理解,流程图的操作可以不按顺序实现,没有逻辑的上下文关系的步骤可以反转顺序或者同时实施。 此外,本领域技术人员在本申请内容的指引下,可以向流程图添加一个或多个其他操作,也可以从流程图中移除一个或多个操作。
另外,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。通常在此处附图中描述和示出的本申请实施例的组件可以以各种不同的配置来布置和设计。因此,以下对在附图中提供的本申请的实施例的详细描述并非旨在限制要求保护的本申请的范围,而是仅仅表示本申请的选定实施例。基于本申请的实施例,本领域技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本申请保护的范围。
需要说明的是,本申请实施例中将会用到术语“包括”,用于指出其后所声明的特征的存在,但并不排除增加其它的特征。
现有技术中,为了在升级数据库系统时仍旧保持服务的可用性,常用的第一种解决方案是部署主备集群,但是这种方式需要维护两套集群,维护成本极高。
在此基础上,为了降低维护成本,可以临时搭建备用集群提供服务。但是这种方式数据同步和业务切换的成本过高且实际操作复杂。
第二种方案是对数据库系统中的各个组件依次升级。但是,这种方案需要预先设计最小集群拓扑,且由于架构方面的缺陷,在进行数据库系统升级时需要不可避免的终止实时数据同步等功能,因此也难以满足实时性要求较高的应用场景。
基于此,本申请提出一种数据库升级方法,应用于DolphinDB数据库中,基于DolphinDB数据库中的架构,实现在数据库系统升级过程中服务不中断,并保证数据的准确性。
接下来首先对DolphinDB数据库集群的基本架构进行说明。DolphinDB数据库集群中包括多个服务器,多个服务器上部署有控制节点,所有的控制节点组成一个Raft分组,各个服务器上均部署有数据节点或计算节点,所有的数据节点组成多个Raft分组,每个Raft分组中包括至少3个数据节点,示例性的,假设数据节点包括数据节点1、数据节点2、数据节点3、数据节点4以及数据节点5,则数据节点1、数据节点2以及数据节点3可以组成一个Raft分组,并提供流数据高可用服务,数据节点3、数据节点4以及数据节点5也可以组成一个Raft分组,并提供流数据高可用服务。
其中,流数据服务部署在数据节点和计算节点上,元数据服务部署在控制节点上,数据服务部署在数据节点上,计算服务部署在数据节点以及计算节点上。
如图1所示,是一种DolphinDB数据库集群的架构示例图,参照图1,集群中包括四个服务器,各个服务器上分别包括一个数据节点或计算节点,且服务器1、服务器2以及服务器3上部署有控制节点,流数据服务可以部署在数据节点以及计算节点上,元数据服务可以部署在控制节点上,数据服务可以部署在数据节点上。
其中,数据节点可以充当计算任务的执行者,也可以提供数据存储服务,数据副本可以在不同的数据节点上同时存储,即使一台服务器中的数据损坏,也可以通过访问其他服务器上的副本数据来保证服务不中断,从而实现数据库的数据高可用。计算节点不提供数据服务,仅在计算任务中充当执行者。同时,在数据库事务中,计算节点和数据节点都可以充当协调者,负责推动事务的进行。
需要说明的是,图1中的集群中,控制节点可以基于Raft协议(Replication AndFault Tolerant,一致性算法协议)组成一个Raft分组,分为主节点和从节点,在提供元数据服务时,由部署元数据服务的主节点响应客户端的请求并向客户端提供元数据服务。
示例性的,图1中客户端通过调用API(Application Programming Interface,应用程序编程接口)向集群发起任务请求时,假设当前控制节点的主节点为控制节点2,数据节点1接收到客户端的任务请求,则数据节点1会处理客户端的任务请求,并在需要用到元数据时,向控制节点2请求元数据。
同样的,数据节点以及计算节点也可以基于Raft协议进行分组,分为主节点和从节点,在提供流数据服务时,由部署流数据服务的主节点响应客户端的请求,并向客户端提供流数据服务。
示例性的,假设图1中的数据节点1为组内的主节点,则数据节点1中部署的流数据服务可以向外部服务提供流数据服务。
需要说明的是,流数据服务所在的计算节点或数据节点和元数据服务所在的控制节点的Raft分组相互独立,即元数据服务的主节点的选择和提供流数据服务的主节点的选择互不影响。
接下来对本申请的服务升级方法进行说明,该方法可以应用在图1所示的分布式数据库集群中,如图2所示,该方法包括:
S201、响应针对分布式数据库集群的升级指示,按照预设的升级顺序确定当前待升级服务器以及当前待升级服务器中的当前待升级节点,其中,当前待升级节点包括数据节点、控制节点或计算节点。
其中,流数据服务、数据服务以及计算服务可以部署在图1的数据节点中,部署了流数据服务的数据节点可以对流数据进行处理,部署了数据服务的数据节点可以存储数据,参与数据库中事务的执行,并在作为协调者时推动数据库中的事务进度,部署了计算服务的数据节点还可以充当计算任务的执行者。
计算服务还可以部署在图1中的计算节点上,部署了计算服务的计算节点可以充当计算任务的执行者,在作为协调者时负责推动事务的进度。
元数据服务可以部署在图1的控制节点中,控制节点可以与数据节点进行交互,并对元数据进行处理。其中,元数据是描述数据信息的数据,由DolphinDB数据库产生,用于管理和使用数据。当客户端发起一个任务时,由数据节点或计算节点向控制节点请求元数据以使用数据。
当用户指示需要对数据库集群进行升级时,数据库集群可以基于预设的升级顺序先确定需要升级的服务器,即当前待升级服务器,以及服务器中需要进行升级的节点,即当前待升级节点。
作为一种可能的实施方式,可以按照顺序对各个服务器逐个进行升级,示例性的,参照图1,可以先关闭服务器1上的所有服务,并对服务器1中的所有节点进行升级,然后再按照顺序确定下一个需要升级的服务器,并对该服务器中的所有节点进行升级。
作为另一种可能的实施方式,也可以先依次升级各个服务器中的控制节点,然后再依次升级各个服务器中的控制节点,实现对集群的服务升级。具体的升级顺序本申请在此不作限制。
其中,流数据服务和元数据服务可以分别部署在集群中的多个服务器上,应当理解,元数据服务和流数据服务的部署相互独立,即元数据服务和流数据服务的主节点可以部署在同一服务器或是不同服务器上,本申请在此不作限制。
S202、根据当前待升级节点在分布式数据库集群中的当前角色,确定当前待升级节点的目标升级方式,目标升级方式包括:立即升级或升级并切换当前角色。
本申请中,为了保证元数据服务和流数据服务的高可用,采用了基于Raft协议的高可用多副本架构。部署流数据服务的数据节点形成至少一个Raft分组,部署元数据服务的控制节点形成一个Raft分组,Raft分组中包括一个Leader节点,其余节点均为Follower节点。
在流数据服务的Raft分组中,相同流数据的副本存储在Raft组内不同的数据节点上,写入数据通过Raft组内的Leader节点实现,Raft协议用来维护Leader节点与Follower节点之间的数据一致性。
在元数据服务的Raft分组中,只包括一个Leader节点,其余均为Follower节点,Leader节点与Follower节点上的数据保持强一致性,数据节点只能与控制节点所在Raft分组中的Leader节点交互。
可选的,待升级节点为提供流数据服务或元数据服务的Leader节点时,由于Leader节点为提供流数据服务或元数据服务的节点,此时关闭待升级节点上的服务就会对数据库集群提供服务造成影响,因此当前待升级节点的目标升级方式可以是升级并切换当前角色,即关闭当前节点的服务,并在其余Follower节点中选择一个节点作为新的Leader节点,由新的Leader节点继续提供流数据服务或元数据服务。
示例性的,假设控制节点1为主节点,需要升级图1中控制节点1上的元数据服务,在关闭控制节点1上的元数据服务之后,就要在控制节点2以及控制节点3中确定一个新的主节点,并由新的主节点继续提供元数据服务。
若待升级节点为提供流数据服务或元数据服务的Follower节点,此时即使关闭待升级节点并停止待升级节点的服务,也不会对数据库集群提供元数据服务或流数据服务产生影响,故而可以直接对待升级节点进行升级。
可选的,当前待升级节点为数据节点或计算节点时,当前待升级节点的当前角色还可以是协调者,客户端向数据库集群发送请求消息时,接收请求消息的数据节点或计算节点就自动成为当前事务的协调者,负责推动当前事务的进行。
若当前待升级节点为协调者,则在对当前待升级节点进行升级时,当前待升级节点就不能继续接收客户端的请求消息,此时当前待升级节点的目标升级方式可以是升级并切换当前角色,即数据库集群的API会将客户端的请求消息发送给其他的数据节点或计算节点,接收到消息的数据节点或计算节点就成为了新的协调者。
若当前待升级节点为正在提供数据服务或计算服务的数据节点或计算节点,则对当前待升级节点进行升级时,当前待升级节点就不能继续提供数据服务以及计算服务,此时客户端在请求待升级服务所在的数据节点失败之后,就会自动切换到其他数据节点或计算节点,由其他数据节点或计算节点继续提供数据服务或计算服务。
S203、按照目标升级方式对当前待升级节点进行升级。
以切换当前角色后升级的升级方式为例,假设待升级节点为图1中服务器1的流数据服务,在确定服务器1中的数据节点为Leader节点,且服务器1中的数据节点下线之后,可以先在服务器2以及服务器3中的数据节点中选择一个作为Leader节点,由选出的Leader节点继续提供流数据服务。
可选的,升级待升级节点时,需要先关闭服务器上的服务,然后对节点进行升级。
需要说明的是,在对当前待升级节点进行升级之后,为了保证集群内数据的一致性,可以基于其他节点的数据对当前待升级节点进行数据同步,数据同步的方式可以是在线恢复,具体过程本申请在此不做赘述。
本申请实施例中,响应针对分布式数据库集群的升级指示,按照预设的升级顺序确定当前待升级服务器以及当前待升级服务器中的当前待升级节点,其中,当前待升级节点包括数据节点、控制节点或计算节点,根据当前待升级节点在分布式数据库集群中的当前角色,确定当前待升级节点的目标升级方式,目标升级方式包括:立即升级或升级并切换当前角色,按照目标升级方式对当前待升级节点进行升级。
本申请的方法在升级数据库集群的过程中根据待升级节点的角色确定升级方式,可以在保证服务不中断的前提下,实现对集群中各个服务器的节点升级,确保在升级过程中提供连续、稳定的服务,保障了业务的持续运行。并且相比于现有的升级方式,本申请不需要搭建备用集群,也不需要规划最小集群拓扑,在升级时不必终止实时数据同步功能,避免了传统升级方式造成的对应时段数据缺失的问题,确保了数据的连续性和一致性;无需占用其他资源,节约了成本;简洁的操作减少了运维的复杂性和工作量,降低了出问题的风险,提升了系统的稳定性和可靠性。
以下是对上述根据当前待升级节点在分布式数据库集群中的当前角色,确定当前待升级节点的目标升级方式的进一步说明,如图3所示,上述S202步骤包括:
S301、若当前待升级节点为数据节点或计算节点,且当前待升级节点的当前角色为提供流数据服务的第一主节点,则确定当前待升级节点的目标升级方式为升级并切换当前角色,否则,确定当前待升级节点的目标升级方式为立即升级,其中,第一主节点用于响应外部服务的请求信息提供流数据服务。
可选的,第一主节点可以是数据节点以及计算节点所在Raft分组内的Leader节点。当前待升级节点为数据节点或计算节点,且当前待升级节点的当前角色提供流数据服务的第一主节点,即Raft分组中的Leader节点时,就可以确定当前待升级节点的目标升级方式为升级并切换当前角色。
参照图1,假设需要对服务器1的流数据服务进行升级,由于流数据服务由服务器1中的数据节点1提供,因此可以对服务器1中的数据节点1进行升级,此时,若数据节点1为Raft分组内的Leader节点,在将数据节点1的服务关闭并升级时,可以从服务器2以及服务器3等Follower节点中选择一个作为新的Leader节点。
作为另一种可能的实施方式,如果图1中数据节点1不是Raft分组内的Leader节点,而是Raft分组内的Follower节点,则数据节点1的升级并不会影响整个集群继续提供流数据服务,因此可以直接关闭服务器1上的数据节点1,并对数据节点1进行升级。
可选的,Leader节点可以响应外部服务的请求信息,并向外部服务提供流数据服务,其中,外部服务可以是客户端,或是需要进行流数据处理的外部系统等。
S302、若当前待升级节点为控制节点,且当前待升级节点的当前角色为提供元数据服务的第二主节点,则确定当前待升级节点的目标升级方式为升级并切换当前角色,否则,确定当前待升级节点的目标升级方式为立即升级,其中,第二主节点用于响应外部服务的请求信息提供元数据服务。
可选的,第二主节点可以是控制节点所在Raft分组内的Leader节点。当前待升级节点为控制节点,且为Raft分组内的Leader节点时,可以确定当前待升级节点的目标升级方式为升级并切换当前角色。当前待升级节点为控制节点Raft分组内的Follower节点时,确定当前待升级节点的目标升级方式为立即升级。
参照图1,假设需要对服务器1的控制节点1进行升级,此时,若控制节点1为Raft分组内的Leader节点,则可以在下线控制节点1时,从服务器2以及服务器3等Follower节点中选择一个作为新的Leader节点,然后关闭服务器1上的控制节点1,并对服务器1中的控制节点1进行升级。
作为另一种可能的实施方式,如果图1中控制节点1不是Raft分组内的Leader节点,而是Raft分组内的Follower节点,则控制节点1的升级并不会影响整个集群的元数据服务,因此可以直接关闭服务器1上的控制节点1,并对控制节点1进行升级。
可选的,第二主节点可以响应数据节点的请求信息并提供元数据服务,客户端通过调用API向集群发送请求信息之后,如果数据节点在处理请求消息的过程中需要用到元数据,则数据节点可以向第二主节点申请并获取元数据。
S303、若当前待升级节点为数据节点或计算节点,且当前待升级节点的当前角色为协调者,则确定当前待升级节点的目标升级方式为升级并切换当前角色,否则,确定当前待升级节点的目标升级方式为立即升级,其中,协调者用于响应外部服务的请求信息向上层服务传递请求信息并推动事务进行。
需要说明的是,当外部服务通过API调用数据库集群的服务时,接收外部服务请求消息的数据节点或计算节点就成为了协调者,如果当前待升级节点为协调者,那么数据库集群的API会将客户端的请求消息发送给其他的数据节点或计算节点,接收到消息的数据节点或计算节点就成为了新的协调者,并由新的协调者处理外部服务发送的请求信息。
以下是对上述按照目标升级方式对当前待升级节点进行升级的进一步说明,如图4所示,上述S203步骤包括:
S401、若所述当前待升级节点为提供流数据服务的数据节点或计算节点、且所述当前待升级节点的当前角色为主节点、且所述当前待升级节点的目标升级方式为升级并切换当前角色,则启动所述当前待升级节点升级,并由主节点所在分组的从节点发起投票,从分组中的从节点中选择出目标从节点作为新的主节点。
S402、若所述当前待升级节点为提供元数据服务的控制节点、且所述当前待升级节点的当前角色为主节点、且所述当前待升级节点的目标升级方式为升级并切换当前角色,则启动所述当前待升级节点升级,并由主节点所在分组的从节点发起投票,并从分组中的从节点中选择出目标从节点作为新的主节点。
可选地,若当前待升级节点为Raft分组中的Leader节点,Raft分组中的Follower节点在确定Leader节点下线时,就可以发起投票,并从Raft分组中的Follower节点中重新选举一个新的Leader节点。
示例性的,假设图1中服务器1上的数据节点1为Raft分组中的主节点,则可以确定服务器1中数据节点1的升级方式为升级并切换当前角色,此时,分组中的数据节点1以外的剩余数据节点,即服务器2的数据节点2、服务器3的数据节点3以及服务器4上的数据节点4在确定数据节点1下线时,就可以发起投票,并从数据节点2、数据节点3或是数据节点4中选择一个作为新的主节点,例如选择数据节点2作为新的主节点,则可以由数据节点2作为新的Leader节点继续提供流数据服务。
假设需要对服务器1中的控制节点1进行升级,若控制节点1为Raft分组中的主节点,则可以确定升级方式为升级并切换当前角色,服务器2的控制节点2和服务器3的控制节点3在确定控制节点1下线时,就可以发起投票,并从控制节点2和控制节点3中选择一个作为新的Leader节点,例如选择控制节点2作为新的Leader节点,则可以由控制节点2继续提供元数据服务。
S403、若当前待升级节点为数据节点或计算节点、且当前待升级节点的当前角色为协调者、且当前待升级节点的目标升级方式为升级并切换当前角色,则启动当前待升级节点升级,并从协调者之外的数据节点或计算节点中选择出目标数据节点或目标计算节点作为新的协调者。
可选的,如果数据节点1正在作为协调者接收客户端的请求信息,此时对数据节点1进行升级时,API在接收到客户端的新的请求消息之后,可以将请求消息发送给服务器2的数据节点2或服务器3的数据节点3,接收到请求消息的数据节点就作为新的协调者,并推动事务的进行。
接下来对上述由主节点所在分组的从节点发起投票,从分组的从节点中选择出目标从节点作为新的主节点的步骤进行说明,如图5所示,上述S401步骤包括:
S501、若从节点在预设时间内没有接收到主节点发送的心跳消息,则发起投票,并由主节点所在分组的各从节点基于一致性算法协议进行协商处理,以确定新的主节点。
S502、由新的主节点响应外部请求并提供流数据服务。
其中,Raft协议中包括三种角色,即领导者、跟随者以及候选者,领导者即本申请中的Leader节点,跟随者即本申请中的Follower节点。Leader节点周期性的向各个Follower节点发送心跳消息,如果Follower节点在预设时长内没有接收到Leader节点的心跳消息,则可以推荐自己为候选者并发起选举,如果选举成功,则确定了新的Leader节点,由新的Leader节点继续提供流数据服务。
针对流数据服务,在确定新的Leader节点时,Raft分组内作为Follower节点的各个数据节点以及计算节点可以发起竞争,将满足条件的数据节点或计算节点确定为新的Leader节点,并由这个Leader节点提供流数据服务,如果存在多个满足条件的数据节点或计算节点,则可以基于预设的策略从多个满足条件的Follower节点中确定一个作为Leader节点,例如根据最后一次成为Leader节点的时间确定Leader节点。
示例性的,假设图1中的数据节点2为Leader节点,则流数据服务由数据节点2提供,此时如果要对服务器2中的数据节点2进行升级,则可以基于Raft协议从数据节点1以及数据节点3中确定一个新的Leader节点,此时,数据节点1和数据节点3可以发起竞争,假设数据节点3符合要求,则可以将数据节点3作为新的Leader节点,由数据节点3提供流数据服务。
接下来结合图1对本申请的服务升级方法进行举例说明。
首先对图1中的服务器1上的DolphinDB服务进行停机升级,升级期间该服务器上的数据节点和控制节点均无法使用,目前的控制节点2为Leader节点且可以正常工作,因此集群仍然可以通过控制节点2正常提供元数据服务,数据节点1为Leader节点,此时流数据服务不可用。当流数据服务不可用时,可以从其余的数据节点中基于Raft协议确定新的Leader节点为数据节点2,此时可以由数据节点2继续提供流数据服务。
服务器1升级完成之后,可以按照预设的顺序确定下一个需要升级的服务器2,并对服务器2中的数据节点和控制节点进行升级。
在对服务器2进行升级的过程中,由于数据节点2和控制节点2均为Leader节点,此时可以基于Raft协议在其余的控制节点中确定一个新的Leader节点,在其余的数据节点中确定一个新的Leader节点,然后由Leader节点继续提供元数据服务和流数据服务。
以此类推,完成服务器2中节点的升级之后,可以继续对服务器3中的节点进行升级,直至完成集群内所有服务器的DolphinDB服务的升级。
DolphinDB 采用了两阶段提交 (Two-Phase Commit) 算法以确保分布式事务的原子性。当客户端API提交任务时,它会提交一个包含多个重要信息的字符串。这些信息包括标识当前任务的UUID字符串(称为jobid)、任务的优先级、客户端的唯一UUID字符串(称为clientId)以及任务的序号(称为seqNo)。
其中,seqNo的值从1开始递增。如果seqNo为负数,表示这是一个任务的重复提交,服务器端会单独处理以防止任务重复执行。如果seqNo为正数,表示这是首次提交的任务,服务器会直接执行它,并在任务完成后更新一个由控制节点维护的客户端标识与事务完成标识的映射。这个映射代表了客户端已经提交的最大seqNo和对应的事务id。
在任务提交的过程中,可能会发生中断,因此本申请还提供一种重试机制,可以在不同的中断位置重新提交任务,接下来对此过程进行说明,如果发生中断的当前待升级节点为数据节点或计算节点,如图6所示,此时重试机制的过程包括:
S601、若当前待升级节点为数据节点或计算节点,且当前待升级节点启动升级时当前待升级节点中存在正在执行的第一任务,则确定当前待升级节点是否为协调者。
S602、若当前待升级节点为协调者,则API在确定当前待升级节点断开连接时,对第一任务添加第一标识,并向新的协调者重新提交第一任务,第一标识用于指示第一任务为二次提交,并指示第一任务的任务序号。
其中,第一任务可以是当前待升级节点升级时节点中正在执行的任务。
可选的,如果任务提交的过程中协调者发生了间断,API在捕获到协调者中断的信息之后,就会选择其他节点来重新提交任务,以确保服务的连续性,API选择提交任务的节点就成为了新的协调者。
API在重新提交第一任务时,可以对第一任务添加第一标识,新的协调者在接收到第一任务时,就可以基于第一标识确定第一任务为二次提交的任务。
作为一种示例,API可以对第一任务添加第一标识,可以是对任务序号seqNo值取相反数,新的协调者在接收到任务之后,如果检查发现seqNo值为负数,则可以使用seqNo值和客户端标识与控制节点维护的映射进行匹配,如果seqNo值小于或等于控制节点维护的seqNo,则说明任务已经完成,无需再次执行。如果seqNo值大于控制节点维护的seqNo,则说明任务之前未完成,会重新执行任务。
S603、若当前待升级节点不是协调者,则协调者在确定当前待升级节点断开连接时,由API对第一任务添加第一标识,并由API向协调者重新提交第一任务。
如果当前待升级节点不是协调者,但是在进行升级时节点中存在正在执行的第一任务,此时协调者在确定当前待升级节点断开连接时,可以向API报告,API就会重新提交第一任务。
需要说明的是,数据库集群中未完成的任务在超时之后会进行回滚,从而确保集群中由于中断而重复提交的任务只执行一次,避免数据重复。
如果在任务提交的过程中发生了控制节点的间断,此时会对元数据服务造成影响,此时本申请的方法还包括:
若当前待升级节点为控制节点,且当前待升级节点的当前角色为主节点,且当前待升级节点启动升级时当前待升级节点中存在正在执行的第一任务,则协调者在确定当前待升级节点断开连接时,API对第一任务添加第一标识,并向协调者重新提交第一任务,第一标识用于指示第一任务为二次提交,并指示第一任务的任务序号。
API在确定当前待升级节点断开连接时,会对正在执行的任务添加第一标识,并将添加标识之后的任务重新提交给协调者,并由协调者确定事务是否已经完成,如果此前事务已经完成,则控制节点会同步更新seqNo值,如果未完成,则控制节点中不存在seqNo值,此时可以执行该任务并更新seqNo值。
如果在任务提交的过程中发生了数据节点的间断,此时会对流数据服务造成影响,此时本申请的方法还包括:
若当前待升级节点为提供流数据服务的数据节点或计算节点,且当前待升级节点的当前角色为主节点,且当前待升级节点启动升级时当前待升级节点中存在正在执行的第一任务,则API在确定当前待升级节点断开连接时,对第一任务添加第一标识,并向新的主节点重新提交第一任务,第一标识用于指示第一任务为二次提交,并指示第一任务的任务序号。
在数据节点发生间断时,如果数据节点未参与当前任务事务,则可以由其他数据节点的副本提供服务。
如果当前待升级节点所在的数据节点或计算节点为提供流数据服务的Leader节点,且进行升级时节点中存在正在执行的任务,则API可以捕获到这一信息,并对被中断的任务添加第一标识,将该任务重新提交给新的Leader节点。
需要说明的是,对第一任务添加第一标识的方法可以与上述数据服务中断时对第一任务添加第一标识的方式相同,本申请在此不做赘述。
为了进一步优化性能,还可以引入安全关机机制,即如果当前节点正在进行事务,则进行升级时当前节点会等待事务完成后再结束进程。在此期间,不会接受新提交的任务分配到该节点。这确保了当前任务能够顺利完成,从而减少了二次提交带来的额外开销。
进一步的,在API向协调者重新提交第一任务之后,如图7所示,本申请的方法还包括:
S701、若协调者确定第一任务中包括第一标识,则根据第一任务的客户端标识以及第一标识,在映射关系表中查找,确定第一任务是否已经完成,映射关系表用于表征客户端标识与已完成任务的任务序号的映射关系。
其中,如果第一任务为流数据服务的任务,则协调者在确定第一任务为二次提交的任务时,可以在提供流数据服务的Leader节点维护的映射关系表中查找客户端标识对应的已完成任务的任务序号,确定第一任务是否已经完成。
如果第一任务为元数据服务的任务,则协调者在确定第一任务为二次提交的任务时,可以在提供元数据服务的Leader节点维护的映射关系表中查找,确定第一任务是否已经完成。
需要说明的是,对于已经完成的任务,Leader节点中会同步更新任务的seqNo值,因此如果第一任务的abs(seqNo值)小于或等于控制节点维护的seqNo,则说明任务已经完成,无需再次执行。
S702、若第一任务未完成,则重新执行第一任务,若第一任务已完成,则不执行第一任务,其中,未执行成功的任务基于任务回收机制进行回收。
如果第一任务的abs(seqNo值)大于控制节点维护的seqNo,则说明任务之前未完成,此时协调者会重新执行任务。
如果第一任务的abs(seqNo值)小于或等于控制节点维护的seqNo,则说明任务已经完成,无需再次执行,此时就可以跳过本次执行,从而保证第一任务有且仅有一次被执行成功。
需要说明的是,本申请中针对未执行成功的任务还可以通过任务回收机制进行回滚。作为一种示例,可以对超时的未执行成功的任务由garbageCollect机制回滚,从而确保重复提交的任务只执行一次,避免数据重复。
基于同一发明构思,本申请实施例中还提供了与服务升级方法对应的服务升级装置,由于本申请实施例中的装置解决问题的原理与本申请实施例上述服务升级方法相似,因此装置的实施可以参见方法的实施,重复之处不再赘述。
参照图8所示,为本申请实施例提供的一种数据库升级装置的示意图,所述装置包括:节点确定模块801、方式确定模块802以及升级模块803。
节点确定模块801,用于响应针对分布式数据库集群的升级指示,按照预设的升级顺序确定当前待升级服务器以及当前待升级服务器中的当前待升级节点,其中,当前待升级节点包括数据节点、控制节点或计算节点;
方式确定模块802,用于根据当前待升级节点在分布式数据库集群中的当前角色,确定当前待升级节点的目标升级方式,目标升级方式包括:立即升级或升级并切换当前角色;
升级模块803,用于按照目标升级方式对当前待升级节点进行升级。
可选的,方式确定模块802具体用于:
若当前待升级节点为数据节点或计算节点,且当前待升级节点的当前角色为提供流数据服务的第一主节点,则确定当前待升级节点的目标升级方式为升级并切换当前角色,否则,确定当前待升级节点的目标升级方式为立即升级,其中,第一主节点用于响应外部服务的请求信息提供流数据服务;
若当前待升级节点为控制节点,且当前待升级节点的当前角色为提供元数据服务的第二主节点,则确定当前待升级节点的目标升级方式为升级并切换当前角色,否则,确定当前待升级节点的目标升级方式为立即升级,其中,第二主节点用于响应外部服务的请求信息提供元数据服务;
若当前待升级节点为数据节点或计算节点,且当前待升级节点的当前角色为协调者,则确定当前待升级节点的目标升级方式为升级并切换当前角色,否则,确定当前待升级节点的目标升级方式为立即升级,其中,协调者用于响应外部服务的请求信息向上层服务传递请求信息并推动事务进行。
可选的,升级模块803具体用于:
若当前待升级节点为提供流数据服务的数据节点或计算节点、且当前待升级节点的当前角色为主节点、且当前待升级节点的目标升级方式为升级并切换当前角色,则启动当前待升级节点升级,并由主节点所在分组的从节点发起投票,从分组的从节点中选择出目标从节点作为新的主节点;
若当前待升级节点为提供元数据服务的控制节点、且当前待升级节点的当前角色为主节点、且当前待升级节点的目标升级方式为升级并切换当前角色,则启动当前待升级节点升级,并由主节点所在分组的从节点发起投票,并从分组的从节点中选择出目标从节点作为新的主节点;
若当前待升级节点为数据节点或计算节点、且当前待升级节点的当前角色为协调者、且当前待升级节点的目标升级方式为升级并切换当前角色,则启动当前待升级节点升级,并从协调者之外的数据节点或计算节点中选择出目标数据节点或目标计算节点作为新的协调者。
可选的,升级模块803具体用于:
若从节点在预设时间内没有接收到主节点发送的心跳消息,则发起投票,并由主节点所在分组的各从节点基于一致性算法协议进行协商处理,以确定新的主节点;
由新的主节点响应外部请求并提供流数据服务。
本申请的服务升级装置中还包括中断处理模块,用于:
若当前待升级节点为数据节点或计算节点,且当前待升级节点启动升级时当前待升级节点中存在正在执行的第一任务,则确定当前待升级节点是否为协调者;
若当前待升级节点为协调者,则API在确定当前待升级节点断开连接时,对第一任务添加第一标识,并向新的协调者重新提交第一任务,第一标识用于指示第一任务为二次提交,并指示第一任务的任务序号;
若当前待升级节点不是协调者,则协调者在确定当前待升级节点断开连接时,由API对第一任务添加第一标识,并由API向协调者重新提交第一任务。
可选的,中断处理模块还具体用于:
若当前待升级节点为控制节点,且当前待升级节点的当前角色为主节点,且当前待升级节点启动升级时当前待升级节点中存在正在执行的第一任务,则在确定当前待升级节点断开连接时,对第一任务添加第一标识,并向协调者重新提交第一任务,第一标识用于指示第一任务为二次提交,并指示第一任务的任务序号。
可选的,中断处理模块还具体用于:
若当前待升级节点为提供流数据服务的数据节点或计算节点,且当前待升级节点的当前角色为主节点,且当前待升级节点启动升级时当前待升级节点中存在正在执行的第一任务,则API在确定当前待升级节点断开连接时,对第一任务添加第一标识,并向新的主节点重新提交第一任务,第一标识用于指示第一任务为二次提交,并指示第一任务的任务序号。
可选的,中断处理模块还具体用于:
若协调者确定第一任务中包括第一标识,则根据第一任务的客户端标识以及第一标识,在映射关系表中查找,确定第一任务是否已经完成,映射关系表用于表征客户端标识与已完成任务的任务序号的映射关系;
若第一任务未完成,则重新执行第一任务,若第一任务已完成,则不执行第一任务,其中,未执行成功的任务基于任务回收机制进行回收。
关于装置中的各模块的处理流程、以及各模块之间的交互流程的描述可以参照上述方法实施例中的相关说明,这里不再详述。
本申请实施例在升级数据库集群的过程中可以根据待升级节点的角色确定升级方式,可以在保证服务不中断的前提下,实现对集群中各个服务器的服务升级,确保在升级过程中提供连续、稳定的服务,保障了业务的持续运行。并且相比于现有的升级方式,本申请不需要搭建备用集群,也不需要规划最小集群拓扑,在升级时不必终止实时数据同步功能,避免了传统升级方式造成的对应时段数据缺失的问题,确保了数据的连续性和一致性;无需占用其他资源,节约了成本;简洁的操作减少了运维的复杂性和工作量,降低了出问题的风险,提升了系统的稳定性和可靠性。
本申请实施例还提供了一种电子设备,如图9所示,为本申请实施例提供的电子设备结构示意图,包括:处理器901、存储器902和总线。所述存储器902存储有所述处理器901可执行的机器可读指令(比如,图8中的装置中节点确定模块801、方式确定模块802以及升级模块803对应的执行指令等),当计算机设备运行时,所述处理器901与所述存储器902之间通过总线通信,所述机器可读指令被所述处理器901执行时执行上述数据库升级方法的处理。
本申请实施例还提供了一种计算机可读存储介质,该计算机可读存储介质上存储有计算机程序,该计算机程序被处理器运行时执行上述数据库升级方法的步骤。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统和装置的具体工作过程,可以参考方法实施例中的对应过程,本申请中不再赘述。在本申请所提供的几个实施例中,应该理解到,所揭露的系统、装置和方法,可以通过其它的方式实现。以上所描述的装置实施例仅仅是示意性的,例如,所述模块的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,又例如,多个模块或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些通信接口,装置或模块的间接耦合或通信连接,可以是电性,机械或其它的形式。
另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。所述功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,RandomAccess Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
以上仅为本申请的具体实施方式,但本申请的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本申请揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本申请的保护范围之内。

Claims (9)

1.一种数据库升级方法,其特征在于,应用于分布式数据库集群,所述分布式数据库集群中包括多个服务器,其中,多个服务器上部署有数据节点和/或计算节点,且,多个服务器上部署有控制节点,所述数据节点用于提供数据服务、流数据服务以及计算服务,所述计算节点用于提供流数据服务以及计算服务,所述控制节点用于提供元数据服务;所述方法包括:
响应针对所述分布式数据库集群的升级指示,按照预设的升级顺序确定当前待升级服务器以及所述当前待升级服务器中的当前待升级节点,其中,所述当前待升级节点包括所述数据节点、所述控制节点或所述计算节点;
根据所述当前待升级节点在所述分布式数据库集群中的当前角色,确定所述当前待升级节点的目标升级方式,所述目标升级方式包括:立即升级或升级并切换当前角色;
按照所述目标升级方式对所述当前待升级节点进行升级;
所述根据所述当前待升级节点在所述分布式数据库集群中的当前角色,确定所述当前待升级节点的目标升级方式,包括:
若所述当前待升级节点为数据节点或所述计算节点,且所述当前待升级节点的当前角色为提供流数据服务的第一主节点,则确定所述当前待升级节点的目标升级方式为升级并切换当前角色,否则,确定所述当前待升级节点的目标升级方式为立即升级,其中,所述第一主节点用于响应外部服务的请求信息提供流数据服务;
若所述当前待升级节点为控制节点,且所述当前待升级节点的当前角色为提供元数据服务的第二主节点,则确定所述当前待升级节点的目标升级方式为升级并切换当前角色,否则,确定所述当前待升级节点的目标升级方式为立即升级,其中,所述第二主节点用于响应外部服务的请求信息提供元数据服务;
若所述当前待升级节点为数据节点或所述计算节点,且所述当前待升级节点的当前角色为协调者,则确定所述当前待升级节点的目标升级方式为升级并切换当前角色,否则,确定所述当前待升级节点的目标升级方式为立即升级,其中,所述协调者用于响应外部服务的请求信息向上层服务传递请求信息并推动事务进行。
2.根据权利要求1所述的方法,其特征在于,所述按照所述目标升级方式对所述当前待升级节点进行升级,包括:
若所述当前待升级节点为提供流数据服务的数据节点或计算节点、且所述当前待升级节点的当前角色为主节点、且所述当前待升级节点的目标升级方式为升级并切换当前角色,则启动所述当前待升级节点升级,并由主节点所在分组的从节点发起投票,从分组的从节点中选择出目标从节点作为新的主节点;
若所述当前待升级节点为提供元数据服务的控制节点、且所述当前待升级节点的当前角色为主节点、且所述当前待升级节点的目标升级方式为升级并切换当前角色,则启动所述当前待升级节点升级,并由主节点所在分组的从节点发起投票,并从分组中的从节点中选择出目标从节点作为新的主节点;
若所述当前待升级节点为数据节点或计算节点、且所述当前待升级节点的当前角色为协调者、且所述当前待升级节点的目标升级方式为升级并切换当前角色,则启动所述当前待升级节点升级,并从协调者之外的数据节点或计算节点中选择出目标数据节点或目标计算节点作为新的协调者。
3.根据权利要求2所述的方法,其特征在于,所述由主节点所在分组的从节点发起投票,从分组的从节点中选择出目标从节点作为新的主节点,包括:
若从节点在预设时间内没有接收到主节点发送的心跳消息,则发起投票,并由主节点所在分组的各从节点基于一致性算法协议进行协商处理,以确定所述新的主节点;
由所述新的主节点响应外部请求并提供流数据服务。
4.根据权利要求1所述的方法,其特征在于,所述方法还包括:
若所述当前待升级节点为数据节点或计算节点,且所述当前待升级节点启动升级时所述当前待升级节点中存在正在执行的第一任务,则确定所述当前待升级节点是否为协调者;
若所述当前待升级节点为协调者,则API在确定所述当前待升级节点断开连接时,对所述第一任务添加第一标识,并向新的协调者重新提交所述第一任务,所述第一标识用于指示所述第一任务为二次提交,并指示所述第一任务的任务序号;
若所述当前待升级节点不是协调者,则协调者在确定所述当前待升级节点断开连接时,由所述API对所述第一任务添加第一标识,并由所述API向协调者重新提交所述第一任务。
5.根据权利要求1所述的方法,其特征在于,所述方法还包括:
若所述当前待升级节点为控制节点,且所述当前待升级节点的当前角色为主节点,且所述当前待升级节点启动升级时所述当前待升级节点中存在正在执行的第一任务,则协调者在确定所述当前待升级节点断开连接时,由API对所述第一任务添加第一标识,并向协调者重新提交所述第一任务,所述第一标识用于指示所述第一任务为二次提交,并指示所述第一任务的任务序号。
6.根据权利要求1所述的方法,其特征在于,所述方法还包括:
若所述当前待升级节点为提供流数据服务的数据节点或计算节点,且所述当前待升级节点的当前角色为主节点,且所述当前待升级节点启动升级时所述当前待升级节点中存在正在执行的第一任务,则API在确定所述当前待升级节点断开连接时,对所述第一任务添加第一标识,并向新的主节点重新提交所述第一任务,所述第一标识用于指示所述第一任务为二次提交,并指示所述第一任务的任务序号。
7.根据权利要求4-6任一项所述的方法,其特征在于,在所述API向协调者重新提交所述第一任务之后,所述方法还包括:
若所述协调者确定所述第一任务中包括所述第一标识,则根据所述第一任务的客户端标识以及所述第一标识,在映射关系表中查找,确定所述第一任务是否已经完成,所述映射关系表用于表征客户端标识与已完成任务的任务序号的映射关系;
若所述第一任务未完成,则重新执行所述第一任务,若所述第一任务已完成,则不执行所述第一任务,其中,未执行成功的任务基于任务回收机制进行回收。
8.一种电子设备,其特征在于,包括:处理器、存储介质和总线,所述存储介质存储有所述处理器可执行的程序指令,当电子设备运行时,所述处理器与所述存储介质之间通过总线通信,所述处理器执行所述程序指令,以执行时执行如权利要求 1至 7任一项所述的数据库升级方法的步骤。
9.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器运行时执行如权利要求1 至7任一项所述的数据库升级方法的步骤。
CN202410057832.0A 2024-01-16 2024-01-16 数据库升级方法、电子设备及可读存储介质 Active CN117573656B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202410057832.0A CN117573656B (zh) 2024-01-16 2024-01-16 数据库升级方法、电子设备及可读存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202410057832.0A CN117573656B (zh) 2024-01-16 2024-01-16 数据库升级方法、电子设备及可读存储介质

Publications (2)

Publication Number Publication Date
CN117573656A CN117573656A (zh) 2024-02-20
CN117573656B true CN117573656B (zh) 2024-04-12

Family

ID=89864730

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202410057832.0A Active CN117573656B (zh) 2024-01-16 2024-01-16 数据库升级方法、电子设备及可读存储介质

Country Status (1)

Country Link
CN (1) CN117573656B (zh)

Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8738569B1 (en) * 2012-02-10 2014-05-27 Emc Corporation Systematic verification of database metadata upgrade
CN112069152A (zh) * 2020-09-08 2020-12-11 北京达佳互联信息技术有限公司 一种数据库集群升级方法、装置、设备以及存储介质
CN114201549A (zh) * 2020-09-17 2022-03-18 金篆信科有限责任公司 切换方法、系统、服务器及存储介质
CN115269544A (zh) * 2022-07-13 2022-11-01 天翼云科技有限公司 一种数据库集群升级方法、装置、电子设备及存储介质
CN115665142A (zh) * 2022-10-10 2023-01-31 深圳市汉云科技有限公司 基于分布式数据库的在线升级方法及相关装置
CN116069358A (zh) * 2022-12-28 2023-05-05 金篆信科有限责任公司 分布式数据库中数据的升级方法、装置及存储介质
CN116680256A (zh) * 2023-07-21 2023-09-01 腾讯科技(深圳)有限公司 数据库节点升级方法、装置和计算机设备

Patent Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8738569B1 (en) * 2012-02-10 2014-05-27 Emc Corporation Systematic verification of database metadata upgrade
CN112069152A (zh) * 2020-09-08 2020-12-11 北京达佳互联信息技术有限公司 一种数据库集群升级方法、装置、设备以及存储介质
CN114201549A (zh) * 2020-09-17 2022-03-18 金篆信科有限责任公司 切换方法、系统、服务器及存储介质
CN115269544A (zh) * 2022-07-13 2022-11-01 天翼云科技有限公司 一种数据库集群升级方法、装置、电子设备及存储介质
CN115665142A (zh) * 2022-10-10 2023-01-31 深圳市汉云科技有限公司 基于分布式数据库的在线升级方法及相关装置
CN116069358A (zh) * 2022-12-28 2023-05-05 金篆信科有限责任公司 分布式数据库中数据的升级方法、装置及存储介质
CN116680256A (zh) * 2023-07-21 2023-09-01 腾讯科技(深圳)有限公司 数据库节点升级方法、装置和计算机设备

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
Zero-downtime PostgreSQL database schema migrations in a continuous deployment environment at ING;Nick Geral Richter;UNIVERSITY OF TWENTE STUDENT THESES;20211031;全文 *
分布式图存储系统关键技术设计与实现;毛旺;中国优秀硕士学位论文全文数据库信息科技辑;20200715;第2020卷(第07期);第I137-61页 *

Also Published As

Publication number Publication date
CN117573656A (zh) 2024-02-20

Similar Documents

Publication Publication Date Title
US11360854B2 (en) Storage cluster configuration change method, storage cluster, and computer system
US7668879B2 (en) Database system configured for automatic failover with no data loss
US7627584B2 (en) Database system configured for automatic failover with no data loss
JP6364083B2 (ja) コンセンサスノードを用いた分散ファイルシステム
US8630985B2 (en) Automatic failover configuration with lightweight observer
US7734596B2 (en) Automatic failover configuration with redundant abservers
EP0950955B1 (en) Method and apparatus for correct and complete transactions in a fault tolerant distributed database system
US8103635B2 (en) Reinstatement of database system in an automatic failover configuration
US7558883B1 (en) Fast transaction commit
EP2521037A2 (en) Geographically distributed clusters
JP2019219954A (ja) クラスタストレージシステム、データ管理制御方法、データ管理制御プログラム
EP1704480B1 (en) Cluster database with remote data mirroring
CN111368002A (zh) 一种数据处理方法、系统、计算机设备和存储介质
WO2016070375A1 (zh) 一种分布式存储复制系统和方法
GB2484086A (en) Reliability and performance modes in a distributed storage system
US20150067004A1 (en) Distributed file system using consensus nodes
CN107919977B (zh) 一种基于Paxos协议的在线扩容、在线缩容的方法和装置
EP2140349A2 (en) Upgrading services associated with high availability systems
CN108897641B (zh) 一种数据库主备环境下的日志分析服务实时同步系统
CN115794499B (zh) 一种用于分布式块存储集群间双活复制数据的方法和系统
CN114461438A (zh) 非对称中心模式的分布式数据库容灾系统及方法
US11522966B2 (en) Methods, devices and systems for non-disruptive upgrades to a replicated state machine in a distributed computing environment
CN117573656B (zh) 数据库升级方法、电子设备及可读存储介质
CN114363350A (zh) 一种服务治理系统及方法
WO2023155706A1 (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
GR01 Patent grant
GR01 Patent grant