CN116680256A - 数据库节点升级方法、装置和计算机设备 - Google Patents

数据库节点升级方法、装置和计算机设备 Download PDF

Info

Publication number
CN116680256A
CN116680256A CN202310901358.0A CN202310901358A CN116680256A CN 116680256 A CN116680256 A CN 116680256A CN 202310901358 A CN202310901358 A CN 202310901358A CN 116680256 A CN116680256 A CN 116680256A
Authority
CN
China
Prior art keywords
node
data
copy
database
version
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.)
Granted
Application number
CN202310901358.0A
Other languages
English (en)
Other versions
CN116680256B (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.)
Tencent Technology Shenzhen Co Ltd
Original Assignee
Tencent Technology Shenzhen 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 Tencent Technology Shenzhen Co Ltd filed Critical Tencent Technology Shenzhen Co Ltd
Priority to CN202310901358.0A priority Critical patent/CN116680256B/zh
Publication of CN116680256A publication Critical patent/CN116680256A/zh
Application granted granted Critical
Publication of CN116680256B publication Critical patent/CN116680256B/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/211Schema design and management
    • 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/27Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor

Abstract

本申请涉及一种数据库节点升级方法、装置、计算机设备、存储介质和计算机程序产品。该方法包括:确定数据库集群中存储有对所存储数据进行切片得到的数据分片的副本的待升级节点;当待升级节点中存储的数据分片的副本为向从副本进行数据同步的主副本,从数据库集群中确定节点版本支持向关联节点同步切换节点中所存储的数据分片的副本的切换节点;关联节点是数据库集群中存储有数据分片的副本的数据库节点;在将数据分片的主副本由待升级节点切换到切换节点时,对待升级节点进行节点版本升级;升级后的节点中存储的数据分片的副本,是由切换节点基于所存储的数据分片的主副本针对进行数据同步的。采用本方法能够提升数据库集群的可靠性。

Description

数据库节点升级方法、装置和计算机设备
技术领域
本申请涉及计算机技术领域,特别是涉及一种数据库节点升级方法、装置、计算机设备、存储介质和计算机程序产品。
背景技术
随着计算机技术的发展,各种类型数据的数据量不断增加,分布式数据库技术也得到了快速的发展。分布式数据库技术可以利用高速计算机网络,将物理上分散的多个节点连接起来组成一个逻辑上统一的数据库集群,以获取更大的存储容量和更高的并发访问量。
目前,为了满足数据业务需求,需要对数据库集群中的数据库节点进行升级。在针对各数据库节点进行升级时,数据库节点的数据复制通讯协议、文件存储格式等也会随之升级,可能会存在升级过程中同时存在多种不同的数据复制通讯协议的情况,而各个数据库节点中存储有不同的数据副本,很容易出现丢失数据副本的问题,降低了数据库集群的可靠性。
发明内容
基于此,有必要针对上述技术问题,提供一种能够提高数据库集群可靠性的数据库节点升级方法、装置、计算机设备、计算机可读存储介质和计算机程序产品。
第一方面,本申请提供了一种数据库节点升级方法。所述方法包括:
确定数据库集群中的待升级节点;待升级节点中存储有数据分片的副本;数据分片,是数据库集群所存储数据经过切片得到的;
当待升级节点中存储的数据分片的副本属于向从副本进行数据同步的主副本,从数据库集群中确定切换节点;切换节点的节点版本支持向关联节点同步切换节点中所存储的数据分片的副本;关联节点,是数据库集群中存储有数据分片的副本的数据库节点;
在将数据分片的主副本由待升级节点切换到切换节点的情况下,针对待升级节点进行节点版本升级,获得升级后的节点;
其中,升级后的节点中存储的数据分片的副本,是由切换节点基于所存储的数据分片的主副本针对进行数据同步的。
第二方面,本申请还提供了一种数据库节点升级装置。所述装置包括:
待升级节点确定模块,用于确定数据库集群中的待升级节点;待升级节点中存储有数据分片的副本;数据分片,是数据库集群所存储数据经过切片得到的;
切换节点确定模块,用于当待升级节点中存储的数据分片的副本属于向从副本进行数据同步的主副本,从数据库集群中确定切换节点;切换节点的节点版本支持向关联节点同步切换节点中所存储的数据分片的副本;关联节点,是数据库集群中存储有数据分片的副本的数据库节点;
版本升级模块,用于在将数据分片的主副本由待升级节点切换到切换节点的情况下,针对待升级节点进行节点版本升级,获得升级后的节点;其中,升级后的节点中存储的数据分片的副本,是由切换节点基于所存储的数据分片的主副本针对进行数据同步的。
在一个实施例中,切换节点确定模块,还用于确定待升级节点中存储的数据分片的副本所属副本类型;当副本类型表示为向从副本进行数据同步的主副本,获取数据库集群中各数据库节点各自的节点信息;基于各节点信息,从数据库集群的各数据库节点中确定切换节点。
在一个实施例中,节点信息包括节点存储信息和节点版本信息;切换节点确定模块,还用于基于数据分片的分片信息和各数据库节点各自的节点存储信息,从各数据库节点中确定出关联节点;根据关联节点的节点版本信息确定关联节点的节点版本;根据节点版本,从关联节点中确定切换节点。
在一个实施例中,切换节点确定模块,还用于根据节点版本,将关联节点中的第一关联节点确定为切换节点;第一关联节点的节点版本支持增量数据同步协议,且关联节点中除第一关联节点外的第二关联节点兼容增量数据同步协议;数据库节点升级装置还包括数据增量同步模块;数据增量同步模块,用于按照切换节点的节点版本所支持的增量数据同步协议,将切换节点存储的数据分片的主副本的增量数据,向升级后的节点中存储的数据分片的副本进行增量数据同步。
在一个实施例中,切换节点确定模块,还用于根据节点版本,从关联节点中确定第一关联节点;第一关联节点的节点版本支持增量数据同步协议,且关联节点中除第一关联节点外的第二关联节点兼容增量数据同步协议;当第一关联节点不满足节点切换条件,从第二关联节点中确定切换节点。数据增量同步模块,还用于按照切换节点的节点版本所兼容的增量数据同步协议,将切换节点存储的数据分片的主副本的增量数据,向升级后的节点中存储的数据分片的副本进行增量数据同步。
在一个实施例中,版本升级模块,还用于将待升级节点存储的数据分片的副本切换为从副本,并将切换节点存储的数据分片的副本切换为主副本;针对待升级节点的数据格式以及支持的数据同步协议进行版本升级,获得升级后的节点;其中,升级后的节点存储的数据分片的副本更新为新版本数据格式,且升级后的节点支持新版本的数据同步协议进行数据同步。
在一个实施例中,待升级节点确定模块,还用于确定数据库集群中各数据库节点各自的存储信息;按照针对数据库集群的节点升级策略和存储信息,确定针对数据库集群的节点升级顺序;根据节点升级顺序从各数据库节点中确定待升级节点。
在一个实施例中,数据库节点升级装置还包括格式转换模块;格式转换模块,用于从切换节点获取数据分片的主副本的增量数据;增量数据的数据格式与关联节点可采用的增量数据同步协议相匹配;将增量数据转换成升级后的节点支持的新版本数据格式;将新版本数据格式的增量数据同步到升级后的节点所存储的数据分片的副本中。
在一个实施例中,数据库节点升级装置还包括回滚模块;回滚模块,用于确定数据库集群中经过至少一次节点版本升级后的待回滚节点;当待回滚节点中存储的数据分片的副本属于由目标主副本进行数据同步的从副本,针对待回滚节点进行节点版本降级,获得回滚后的节点;从数据库集群中确定目标主副本所在的目标节点;当目标节点与回滚后的节点属于相同的节点版本,将目标节点中存储的数据分片的目标主副本,同步到回滚后的节点中。
在一个实施例中,回滚模块,还用于当目标节点的节点版本高于回滚后的节点所属的节点版本,从数据库集群中确定存量数据恢复节点;存量数据恢复节点中存储有目标主副本关联的从副本,且存量数据恢复节点与回滚后的节点属于相同的节点版本;将存量数据恢复节点中存储的数据分片的从副本,恢复到回滚后的节点中;按照回滚后的节点所属的节点版本支持的增量数据同步协议,将目标节点中存储的目标主副本的增量数据,同步到回滚后的节点中。
在一个实施例中,回滚模块,还用于当待回滚节点所存储数据分片的副本属于目标主副本,从数据库集群中确定中间节点;中间节点存储有目标主副本关联的从副本;将目标主副本由待回滚节点切换到中间节点,并执行当待回滚节点中存储的数据分片的副本属于由目标主副本进行数据同步的从副本,针对待回滚节点进行节点版本降级,获得回滚后的节点的步骤。
在一个实施例中,回滚模块,还用于获取针对数据库集群的节点升级策略以及数据库集群中的已升级节点;已升级节点经过至少一次节点版本升级;按照节点升级策略和已升级节点确定节点回滚顺序;根据节点回滚顺序,从已升级节点中确定待回滚节点。
在一个实施例中,节点升级策略包括按照不同节点区域依次进行节点升级的策略;节点区域中包括至少一个数据库节点,且每个节点区域中存储有每个数据分片的至少一个副本。
第三方面,本申请还提供了一种计算机设备。所述计算机设备包括存储器和处理器,所述存储器存储有计算机程序,所述处理器执行所述计算机程序时实现以上数据库节点升级方法中的步骤。
第四方面,本申请还提供了一种计算机可读存储介质。所述计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现以上数据库节点升级方法中的步骤。
第五方面,本申请还提供了一种计算机程序产品。所述计算机程序产品,包括计算机程序,该计算机程序被处理器执行时实现以上数据库节点升级方法中的步骤。
上述数据库节点升级方法、装置、计算机设备、存储介质和计算机程序产品,确定数据库集群中的待升级节点,待升级节点上存储有对数据库集群所存储数据进行切片得到的数据分片的副本,当待升级节点中存储的数据分片的副本属于向从副本进行数据同步的主副本,从数据库集群中确定切换节点,切换节点的节点版本支持向数据库集群中存储有数据分片的副本同步切换节点中所存储的数据分片的副本,在将数据分片的主副本由待升级节点切换到切换节点的情况下,针对待升级节点进行节点版本升级,且升级后的节点中存储的数据分片的副本,是由切换节点基于所存储的数据分片的主副本针对进行数据同步的。在对数据库节点进行节点升级的过程中,确定数据库集群中的待升级节点,在待升级节点上存储有数据分片的主副本的情况下,从数据库集群中确定节点版本支持向关联节点同步所存储的数据分片的副本的切换节点,并将数据分片的主副本切换至切换节点后,对待升级节点进行升级,对于升级后的节点所存储的数据分片的副本也由数据分片的主副本针对进行数据同步。对于升级后的节点和关联节点,均可以通过切换节点基于所存储的数据分片的主副本针对进行数据同步,可以确保各个数据分片的副本能够在各个数据库节点中进行正常同步,降低了在数据库集群升级过程中数据分片的副本丢失的风险,从而提升了数据库集群的可靠性。
附图说明
图1为一个实施例中数据库节点升级方法的应用环境图;
图2为一个实施例中数据库节点升级方法的流程示意图;
图3为一个实施例中节点升级过程的时序图;
图4为另一个实施例中节点升级过程的时序图;
图5为一个实施例中数据库节点回滚的流程示意图;
图6为一个实施例中节点回滚过程的时序图;
图7为另一个实施例中节点回滚过程的时序图;
图8为又一个实施例中节点回滚过程的时序图;
图9为再一个实施例中节点回滚过程的时序图;
图10为一个实施例中数据库节点的状态结构框图;
图11为另一个实施例中数据库节点的状态结构框图;
图12为常规技术中数据库节点的状态结构框图;
图13为另一个实施例中数据库节点的状态结构框图;
图14为又一个实施例中数据库节点的状态结构框图;
图15为一个实施例中数据库节点的状态结构框图;
图16为另一个实施例中数据库节点的状态结构框图;
图17为一个实施例中可用区域的划分情况结构框图;
图18为另一个实施例中可用区域的划分情况结构框图;
图19为又一个实施例中可用区域的划分情况结构框图;
图20为再一个实施例中可用区域的划分情况结构框图;
图21为又一个实施例中可用区域的划分情况结构框图;
图22为一个实施例中数据库节点升级装置的结构框图;
图23为一个实施例中计算机设备的内部结构图。
具体实施方式
为了使本申请的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本申请进行进一步详细说明。应当理解,此处描述的具体实施例仅仅用以解释本申请,并不用于限定本申请。
本申请实施例提供的数据库节点升级方法,可以应用于如图1所示的应用环境中。数据库集群中可以包括多个数据库节点,每个数据库节点用于存储数据,具体可以将数据分片后,存储数据分片的副本。在针对数据库集群中的数据库节点进行升级处理时,数据库集群中可以划分成待升级节点102和多个数据库节点104,待升级节点102可以是数据库集群中需要进行升级的数据库节点,待升级节点102上可以存储有向从副本进行数据同步的数据分片的主副本,也可以存储数据分片的从副本,同一数据分片的主副本可以针对其从副本进行数据同步。数据库集群中的数据可以按照某种数据分片策略进行分片切分,获得多个数据分片。考虑到可靠性,针对每一个数据分片,均可以对应有多个数据分片的副本。例如,在按照数据分片策略将数据进行分片切分之后,获得数据分片1和数据分片2,对于数据分片1,可以对应有4个副本,对于数据分片2,也可以对应有4个副本。在数据分片1和数据分片2对应的4个副本中,分别可以包括一个主副本,3个从副本,即数据分片1对应有数据分片1主、数据分片1从、数据分片1从、数据分片1从;数据分片2对应有数据分片2主、数据分片2从、数据分片2从、数据分片2从,每个副本均可以存储在不同的数据库节点中。其中,数据分片1和数据分片2的主副本可以存储在待升级节点102上,其他的从副本可以存储在各数据库节点104上。当然,也可以只有数据分片1的主副本或者数据分片2的主副本存储在待升级节点102上,还可以是数据分片1和数据分片2的主副本均没有存储在待升级节点102上。
其中,在待升级节点102上可以存储有数据分片1的主副本和数据分片2的主副本。由于数据总是由主副本写入从副本,主副本可以用于面向外部提供读写的操作,从副本可以是主副本的备份。因此,在外部有数据写入到数据库集群中数据分片1的主副本时,数据可以是从待升级节点102复制到各数据库节点104的。在外部有数据写入到数据库集群中数据分片2的主副本时,数据也可以是从待升级节点102复制到各数据库节点104的。通过这种主从架构,不仅可以实现读写分离,对外提供查询服务,减少主库压力,提升性能,还可以在存在故障的情况下,如待升级节点102出现故障时,可以将数据分片1的从副本所在的任意一个数据库节点104切换成主副本,提升了数据库集群的安全性。
在具体实现数据库节点升级时,可以由数据库集群中的数据库主节点完成数据库节点的节点升级过程,也可以由待升级节点102独立完成自身的节点升级过程,还可以由数据库集群中,除待升级节点102以外的其他数据库节点104在确定数据库集群中存在待升级节点102时,协助待升级节点102完成数据库节点升级。具体地,待升级节点102确定自身需要进行升级时,当待升级节点102中存储的数据分片的副本属于向从副本进行数据同步的主副本,从数据库集群中确定切换节点,切换节点的节点版本支持向关联节点同步切换节点中所存储的数据分片的副本,在将数据分片的主副本由待升级节点切换到切换节点的情况下,针对待升级节点102进行节点版本升级,获得升级后的节点;其中,升级后的节点中存储的数据分片的副本,是由切换节点基于所存储的数据分片的主副本针对进行数据同步的。
其中,待升级节点102和各数据库节点104可以是各种类型的计算机设备,如具体可以是终端或者服务器。其中,终端可以但不限于是各种台式计算机、笔记本电脑、智能手机、平板电脑、物联网设备和便携式可穿戴设备,物联网设备可为智能音箱、智能电视、智能空调、智能车载设备等。便携式可穿戴设备可为智能手表、智能手环、头戴设备等。服务器可以用独立的服务器或者是多个服务器组成的服务器集群来实现。
在一个实施例中,如图2所示,提供了一种数据库节点升级方法,该方法可以由数据库集群中的数据库节点执行,具体可以由待升级节点或除待升级节点以外的其他数据库节点单独执行,也可以由待升级节点和除待升级节点以外的其他数据库节点共同执行,还可以由单独设置的升级服务器执行,在本申请实施例中,以该方法应用于数据库集群中的数据库节点所对应的计算机设备为例进行说明,包括以下步骤:
步骤202,确定数据库集群中的待升级节点;待升级节点中存储有数据分片的副本;数据分片,是数据库集群所存储数据经过切片得到的。
其中,数据库集群可以是由至少两个数据库节点构成的集群。数据库节点可以是安装在数据库服务器上的数据库软件或者数据库应用程序,基于多个安装有数据库软件的数据库服务器,构成了数据库集群。数据库集群可以使用数据库应用程序为其他计算机程序或计算机设备提供数据库服务,数据服务具体可以包括查询、更新、事务管理、索引、高速缓存、查询优化、安全及多用户存取控制等。其中,待升级节点可以是数据库集群的各数据库节点中需要进行升级的节点,通过对待升级节点进行升级,可以引入新功能、提升性能以及改善安全性等,以满足用户的需求。例如,存在某一计算机应用在开发时用到了数据库服务,当该计算机应用发布功能更新,或增加业务逻辑之后,其原先使用的数据库结构可能已经不适用了,通过对数据库节点进行升级,从而可以更好地为其他的计算程序、计算机设备等提供数据库服务。
其中,待升级节点中存储有数据分片的副本,数据分片是对数据库集群所存储的数据进行切片得到的分片。对于数据库集群中存储的数据,可以将其进行切片得到多个数据分片,如可以按照数据类型、预设数据大小等多个切片维度针对进行切片,得到数据量更小的多个数据分片,通过存储各个数据分片可以实现对数据的存储。为了增加数据冗余来防止副本丢失,对于切片得到的每一个数据分片,均可以包括多个副本,且各数据分片的多个副本均可以存储在不同的数据库节点上。数据分片的多个副本具体可以包括一个主副本和至少一个从副本,其中,外部数据总是先写入主副本,再从主副本复制给从副本,在主副本上写入有新数据之后,可以同步给从副本。从副本用于做数据备份,获取主副本同步过来的数据,以保证数据的一致,在主副本所在的数据库节点处于升级、离线或者出现故障等情况下,可以由从副本可以接替主副本的工作。
其中,数据库集群中每个数据库节点可以存储某个数据分片的主副本和存储除该数据分片之外的其他数据分片的从副本。例如,在数据库节点A中,可以存储数据分片1的主副本,数据分片2和数据分片3的从副本;数据库集群中的数据库节点也可以同时只存储各个数据分片的从副本,例如,在数据库节点B中,可以同时只存储数据分片1的从副本、数据分片2的从副本和数据分片3的从副本;数据库集群中的数据库节点还可以同时存储多个数据分片的主副本,例如,在数据库节点C中,可以同时存储数据分片1的主副本、数据分片2的主副本和数据分片3的主副本。在具体确定数据分片所包括的各个副本存储在哪个数据库节点上时,可以结合数据节点的计算资源、运行状态等进行确定。
具体地,计算机设备可以确定数据库集群中的待升级节点,如计算机设备可以随机的从数据库集群中选取数据库节点为待升级节点,也可以按照预先设定的节点选取策略从数据库集群中确定待升级节点。其中,待升级节点上存储有对数据库集群上的数据进行数据分片后得到的数据分片的副本。在按照节点选取策略从数据库节点中选取待升级节点时,可以基于各数据库节点所提供数据库服务的频次高低进行选取,也可以按照各数据库节点的节点序号、区域位置等展开选取。在实际设定节点选取策略时,可以结合数据库集群中的各数据库节点的运行状态、所提供的数据库服务的内容等展开设定。在一个具体应用中,计算机设备在对数据库集群中存储的数据进行分片时,可以按照预设的数据切分公式展开切分,计算机设备可以确定数据库集群所服务客户端的客户端ID(Identitydocument,唯一标识),并基于客户端标识计算hash(哈希)值,将计算得到的hash值代入数据切分公式求基于n的余数,获得余数值,根据计算得到的余数值确定数据分片,其中,n可以是数据分片的数量。
步骤204,当待升级节点中存储的数据分片的副本属于向从副本进行数据同步的主副本,从数据库集群中确定切换节点;切换节点的节点版本支持向关联节点同步切换节点中所存储的数据分片的副本;关联节点,是数据库集群中存储有数据分片的副本的数据库节点。
其中,在针对待升级节点进行升级处理过程中时,待升级节点会处于暂停或者下线状态。在待升级的节点中存储的数据分片的副本为主副本的情况下,为了保持在节点升级处理过程中,数据库集群仍然可以向外部的客户端提供数据库服务,在对待升级节点进行升级前,可以从数据库集群中确定切换节点,以将待升级节点上存储的主副本切换到切换节点。其中,切换节点也可以是数据库集群中的数据库节点,切换节点具体可以从关联节点中确定得到,关联节点是数据库节点中存储有数据分片的副本的节点,即待升级节点也属于关联节点,各个关联节点上存储的为同一数据分片的副本,切换节点是从关联节点中确定的,关联节点可以包括切换节点。例如,数据分片1的副本可以包括副本1、副本2以及副本3,待升级节点1上可以存储副本1,关联节点1上可以存储副本2,关联节点2上可以存储副本3,关联节点1或者关联节点2可以被确定为切换节点。
节点版本可以是指在数据库集群中的应用过程中,经功能更新、功能优化等过程而产生的不同版本。如针对数据库节点A,可以包括多个节点版本,如节点版本1、节点版本2等。切换节点的节点版本支持向关联节点同步切换节点中所存储的数据分片的副本,即基于切换节点的节点版本,可以向待升级节点的关联节点进行数据分片的副本的同步,即包括待升级节点在内的关联节点可以识别并存储切换节点同步过来的数据。
具体地,计算机设备在确定待升级节点中存储的数据分片的副本属于向从副本进行数据同步的主副本时,可以从数据库集群中确定切换节点。计算机设备可以对待升级节点上存储的数据分片的副本进行分析,如分析存储的数据分片的副本的类型,确定出待升级节点上是否存在有向从副本进行数据同步的主副本,当确定待升级节点上存在有数据分片的主副本时,计算机设备可以从数据库集群中确定切换节点,具体从除去待升级节点的剩余关联节点中确定切换节点。计算机设备在从关联节点中确定切换节点时,可以先确定关联节点的个数,在关联节点只有一个时,可以直接将该唯一的一个关联节点确定为切换节点。在关联节点存在有多个时,可以依据各关联节点的节点版本进行选择,如将各关联节点中,节点版本最低的关联节点确定为切换节点,也可以将各关联节点中,节点版本不是最低,但可以成功的完成向其他的关联节点同步其所存储的数据分片的副本的节点为切换节点。
在具体实现时,数据库集群中存储数据库节点A、数据库节点B、数据库节点C以及数据库节点D,数据库节点B、数据库节点C以及数据库节点D上存储有数据分片2的副本,计算机设备可以确定数据库节点C为待升级节点,在确定切换节点时,计算机设备可以将数据库节点B以及数据库节点D作为数据库节点C的关联节点,计算机设备可以从数据库节点B以及数据库节点D中选取出切换节点。计算机设备可以按照选取节点版本最低的节点为切换切点的策略,在确定数据库节点B的节点版本低于数据库节点D的节点版本的情况下,将数据库节点B确定为切换节点,其中,数据库节点B的节点版本可以支持向数据库节点C同步数据库节点B中所存储的数据分片的副本。
步骤206,在将数据分片的主副本由待升级节点切换到切换节点的情况下,针对待升级节点进行节点版本升级,获得升级后的节点;其中,升级后的节点中存储的数据分片的副本,是由切换节点基于所存储的数据分片的主副本针对进行数据同步的。
其中,节点版本升级可以是指针对数据库节点进行功能增加、性能优化的升级过程,具体可以包括针对数据复制协议、数据存储格式的升级处理。随着节点版本升级中数据库节点的功能变化,在节点版本升级完成后,为了适应新版本的数据库节点,原来版本的数据库节点的数据复制协议、数据存储格式等也可能会被动的发生更新。在待升级节点上的主副本切换至切换节点的情况下,切换节点上的数据分片的副本更新为主副本,用来完成原来存储在待升级节点上的主副本所实现的功能,此时也可以进入节点版本升级的过程。
具体地,计算机设备可以基于确定出的切换节点,将待升级节点上的数据分片的主副本切换至切换节点,以实现数据库节点上的副本角色的转换。计算机设备可以进一步针对待升级节点进行节点版本升级,如将原先第一版本的待升级节点进行节点版本升级后,获得第二版本的升级后的节点,升级后的第二版本的节点性能更加优化,可以支持更多的数据库服务。当外部有数据写入数据库集群时,切换节点上的主副本可以针对写入的数据进行处理,获得数据处理结果,并将数据处理结果同步至升级后的节点。在一个具体应用中,切换节点上的主副本在将获得的数据处理结果同步至升级后的节点时,可以采用自身的数据复制协议,以将数据处理结果同步至升级后的节点,升级后的节点可以识别切换节点的数据复制协议,可以直接对数据处理结果进行存储,也可以对数据处理结果进行格式转换,将数据处理结果转换成升级后的节点所对应的数据转换格式后进行存储。此外,切换节点还可以基于所存储的数据分片的主副本向其他关联节点进行数据同步,即可以向数据库集群中存储有相同数据分片的从副本的数据库节点进行数据同步。进一步地,针对待升级节点完成升级后,可以从数据库集群中重新确定下一个待升级节点,从而针对数据库集群中的各个数据库节点依次进行升级处理,直至数据库集群中各个数据库节点均完成节点版本升级。
在一个实施例中,计算机设备在对节点进行升级之后,可以对数据库集群中每一个数据库节点的节点版本进行识别,确定每一个数据库节点的节点版本,当确定各数据库节点均完成升级,且各数据库节点的节点版本一致时,可以统一各数据库节点的数据存储格式、数据复制协议,以提升数据存储效率、数据同步效率。其中,计算机设备在进行版本识别时,可以按照设定的时间间隔进行识别,如设定每隔2个小时进行一次版本识别,也可以设定达到设定的时间点进行一次版本识别,具体进行版本识别的时间可以结合数据库集群实际的升级情况进行设定。
在一个具体应用中,如图3所示,为针对数据库集群中的节点C,实现节点升级的时序图。其中,数据库集群中可以包括节点A、节点B、节点C、节点D、节点E以及节点F。数据库集群所存储的数据经由水平切分后,可以被切分为数据分片1、数据分片2以及数据分片3。针对每一个数据分片,均可以对应设置有3个副本,并分别存储在不同的数据库节点上。其中,数据分片1的副本,可以分别存储在节点A、节点C以及节点F上;数据分片2的副本,可以分别存储在节点A、节点D以及节点E上,数据分片3的副本,可以分别存储在节点B、节点D以及节点E上。
其中,节点C被确定为待升级节点,在节点C上存储的数据分片1的副本为数据分片1的主副本时,计算机设备可以确定存储有数据分片1的副本的关联节点,即关联节点包括同样存储有数据分片1的副本的节点A、节点F以及节点C,计算机设备从节点A以及节点F中确定出切换节点。计算机设备在从节点A和节点F中确定切换节点时,可以对节点A和节点F进行分析,从节点A和节点F中选取出可以支持向升级后的节点以及向另一个关联节点同步数据的节点作为切换节点。其中,计算机设备可以直接按照节点A和节点F的版本展开分析,一般的,高版本的节点可以识别低版本的节点采用的数据复制协议,而低版本的节点很难识别高版本的节点采用的数据复制协议,即低版本的节点总是可以支持向高版本的节点或者相同版本的节点同步数据,可以将节点A和节点F中版本相对较低的确定为切换节点。计算机设备也可以不考虑节点A和节点F的版本,只要节点A和节点F中,任意一个节点可以保证完成数据的正常同步,不会发生丢失副本即可。本实施例中以节点版本为选取依据,由于节点F的节点版本低于节点A的节点版本,计算机设备可以将节点F确定为切换节点。
在节点F被确定为切换节点后,计算机设备可以将节点C上的数据分片1的主副本切换至节点F,以实现数据库节点上的副本角色的转换。在此基础上,可以进一步针对节点C进行节点版本升级,以将C1版本的节点C升级为C2版本的节点C,升级后的节点C性能更加优化,可以支持更多的数据库服务。
在节点C完成升级后,节点C会重启,节点C上的数据分片1的副本会作为从副本加入数据库集群,并以升级后的数据存储格式进行存储。当外部有数据写入节点F所存储的数据分片1的主副本时,节点F所存储的数据分片1的主副本可以针对写入的数据进行处理,获得数据处理结果,并按照节点F所支持的数据复制协议,将数据处理结果同步至升级后的节点C,以及关联节点A。升级后的节点C在接收到节点F同步过来的数据处理结果之后,可以对数据处理结果进行数据格式转换,将数据处理结果转换成升级后的节点C支持的新版本数据格式,并将数据格式转换后的数据处理结果同步到升级后的节点C所存储的数据分片1的从副本中。至此关于节点C的数据库节点升级过程完成,在此过程中,不会出现副本丢失的情况,数据库集群的可靠性和安全性均可以被保证。计算机设备会重新确定待升级节点,如将节点B确定为待升级节点,并重复对节点C进行节点升级的过程,直至数据库集群中所有的节点均升级完成,或者数据库集群中需要升级的节点升级完成,结束升级过程。
上述数据库节点升级方法中,确定数据库集群中的待升级节点,待升级节点上存储有对数据库集群所存储数据进行切片得到的数据分片的副本,当待升级节点中存储的数据分片的副本属于向从副本进行数据同步的主副本,从数据库集群中确定切换节点,切换节点的节点版本支持向数据库集群中存储有数据分片的副本同步切换节点中所存储的数据分片的副本,在将数据分片的主副本由待升级节点切换到切换节点的情况下,针对待升级节点进行节点版本升级,且升级后的节点中存储的数据分片的副本,是由切换节点基于所存储的数据分片的主副本针对进行数据同步的。在对数据库节点进行节点升级的过程中,确定数据库集群中的待升级节点,在待升级节点上存储有数据分片的主副本的情况下,从数据库集群中确定节点版本支持向关联节点同步所存储的数据分片的副本的切换节点,并将数据分片的主副本切换至切换节点后,对待升级节点进行升级,对于升级后的节点所存储的数据分片的副本也由数据分片的主副本针对进行数据同步。对于升级后的节点,以及关联节点,均可以通过切换节点基于所存储的数据分片的主副本针对进行数据同步,可以确保各个数据分片的副本能够在各个数据库节点中进行正常同步,降低了在数据库节点升级过程中数据分片的副本丢失的风险,从而提升了数据库集群的可靠性。
在一个实施例中,当待升级节点中存储的数据分片的副本属于向从副本进行数据同步的主副本,从数据库集群中确定切换节点,包括:确定待升级节点中存储的数据分片的副本所属副本类型;当副本类型表示为向从副本进行数据同步的主副本,获取数据库集群中各数据库节点各自的节点信息;基于各节点信息,从数据库集群的各数据库节点中确定切换节点。
其中,副本类型可以是指数据分片的副本的身份类型,数据分片的副本类型具体可以包括主副本和从副本。在确定副本类型时,主副本和从副本在数据库集群中所承担的任务以及涉及到的数据交互走向等均存在不同,可以通过获取待升级节点上的每一个数据分片的副本的计算资源、运行情况或者副本标识等,来确定出数据分片的副本类型。节点信息可以是用于对数据库节点的节点属性进行描述的信息,节点属性可以包括数据库节点的节点版本、存储情况、物理位置以及运行状态、计算资源等多种信息。通过基于节点信息对各数据库节点进行筛选,从而筛选出切换节点。
具体地,计算机设备可以确定待升级节点中存储的数据分片的副本所属副本类型,具体可以获取待升级节点上,每一个数据分片的副本所对应的副本标识,并基于副本标识进行查询,确定出副本标识所对应的数据分片的副本的类型。在一个实施例中,计算机设备可以预先针对数据分片的主副本和从副本预先构建相应的副本类型库,副本类型库中包括副本类型与副本标识之间的关联关系。对于数据库节点中的每一个数据分片的副本对应的副本标识,计算机设备可以分别在副本类型库中进行查询,从而确定出各个数据分片的副本是属于主副本还是从副本。例如,在副本类型库中,主副本对应于标识A,从副本对应于标识B。若在待升级节点上,数据分片1的副本标识为B,则在待升级节点上,数据分片1的副本为从副本;若在待升级节点上,数据分片2的副本标识为A,则在待升级节点上,数据分片2的副本为主副本。
在计算机设备根据副本类型确定数据分片的副本为主副本时,可以进一步获取数据库集群中各数据库节点各自的节点信息,获取的节点信息可以包括节点版本、节点位置、节点存储情况等多种信息,并基于节点版本、节点位置以及节点存储情况等综合评估,从各数据库节点中筛选出最优的切换节点。计算机设备可以基于数据库集群中各数据库节点各自的节点信息,从各个数据库节点中确定存储有数据分片的副本的关联节点,并进一步从关联节点中确定切换节点,切换节点的节点版本支持向关联节点同步所存储的数据分片的副本的切换节点。
本实施例中,计算机设备结合数据分片的副本类型确定待升级节点上的数据分片的副本是否为主副本,在数据分片的副本为主副本的情况下,再进一步结合节点信息确定切换节点。由于节点信息可以表征数据库节点的各类属性,因此,通过分析节点信息确定出的切换节点可以更加的准确,确保切换节点的可靠性,从而提升了数据库集群在数据库节点升级过程中的可靠性。
在一个实施例中,节点信息包括节点存储信息和节点版本信息;基于节点信息,从数据库集群的各数据库节点中确定切换节点,包括:基于数据分片的分片信息和各数据库节点各自的节点存储信息,从各数据库节点中确定出关联节点;根据关联节点的节点版本信息确定关联节点的节点版本;根据节点版本,从关联节点中确定切换节点。
其中,数据分片的分片信息可以对数据库集群存储的数据进行分片后,获得的各数据分片的信息,分片信息可以包括数据被分为多少个数据分片、每个数据分片的数据字节长度以及各数据分片对应有多少个副本等。节点存储信息是用于表征各数据库节点上存储的数据分片的情况的信息,节点存储信息具体可以为数据库节点上存储的数据分片的副本的个数、数据分片的副本属于哪个数据分片等。节点版本信息可以是用于描述各数据库节点当前版本的信息。各数据库节点的当前版本可以是一致的,即各数据库节点的当前版本相同,例如,在数据库节点中,节点A的版本为版本2,节点B的版本为版本2,节点C的版本为版本2,节点D的版本为版本2;当然,各数据库节点的当前版本也可以是部分相同的,例如,在数据库集群中,节点A的版本为版本1,节点B的版本为版本2,节点C的版本为版本2,节点D的版本为版本1。
具体地,计算机设备可以获取数据分片的分片信息以及每一个数据库节点的节点存储信息,通过数据分片的分片信息,确定有多少个数据分片,每一个数据分片的副本有多少个,以及根据数据库节点的节点存储信息,确定数据库节点中存储的是哪些数据分片的副本,从而将存储有与待升级节点相同数据分片的副本的数据库节点确定为关联节点。进一步地,计算机设备对关联节点的节点版本信息进行分析,确定关联节点的节点版本,按照节点版本筛选得到切换节点。在按照节点版本筛选切换节点时,计算机设备可以基于节点版本的高低进行筛选,也可以从数据同步角度进行考虑,即从节点版本所采用的数据复制协议筛选,只要关联节点的数据复制协议可以支持向升级后的节点、以及除自身之外的其他的关联节点进行数据同步即可。在具体实现时,计算机设备通过分片信息,可以确定数据库集群所存储的数据被切分为数据分片1和数据分片2,且数据分片1和数据分片2分别包括4个副本;计算机设备可以通过节点存储信息,确定出各数据库节点上存储的是哪个数据分片的副本,在待升级节点上存储的为数据分片2的副本时,计算机设备可以根据数据分片2的副本个数,确定出除待升级节点外的剩余关联节点的个数为3个,以及根据各数据库节点的节点存储信息,确定出除待升级节点外的剩余关联节点为节点B、节点E以及节点F。
本实施例中,计算机设备确定出除待升级节点外的剩余关联节点,并基于剩余关联节点的节点版本确定切换节点,由于节点版本对于数据同步是否能够成功具有较大的影响,因此,通过节点版本确定切换节点,可以使得确定出的切换节点更加的准确。
在一个实施例中,根据节点版本,从关联节点中确定切换节点,包括:根据节点版本,将关联节点中的第一关联节点确定为切换节点;第一关联节点的节点版本支持增量数据同步协议,且关联节点中除第一关联节点外的第二关联节点兼容增量数据同步协议。
其中,增量数据同步协议可以是指通过在多个副本之间同步数据,来确保数据库集群中的数据一致性和可用性的一种协议。增量数据同步协议具体可以是对数据库集群中的增量数据进行复制,从而将主副本写入的增量数据同步至从副本的增量数据的数据复制协议,增量数据可以是数据库集群中新产生的数据,一般的,在外部客户端新产生的数据可以先写入到数据库集群中的主副本,主副本可以对新写入的数据进行处理,获得数据处理结果,并进一步通过增量数据同步协议针对数据处理结果进行数据同步。
其中,第一关联节点可以是关联节点中支持增量数据同步协议的节点,第二关联节点可以是关联节点中兼容增量数据同步协议的节点。第一关联节点支持增量数据同步协议,可以认为第一关联节点在进行数据同步时,是可以直接按照增量数据同步协议展开的;第二关联节点兼容增量数据同步协议,可以是第二关联节点可以识别第一关联节点支持的增量数据同步协议,第二关联节点在进行数据同步时,第二关联节点可以对应有自身支持的增量数据同步协议,其在进行数据同步时,不一定是按照第一关联节点支持的增量数据同步协议展开。一般情况下,兼容可以是指向下兼容,即高版本的节点可以兼容低版本节点的增量数据同步协议,第一关联节点支持的增量数据同步协议可以被第二关联节点兼容,第二关联节点支持的数据增量协议,不一定会被第一关联节点兼容,采用第一关联节点支持的增量数据同步协议,数据分片的副本所在的节点都可以实现数据同步。
具体的,计算机设备可以确定出各关联节点的节点版本,由于高版本节点一般都可以兼容低版本节点所支持的数据复制协议,而低版本节点却不一定能够兼容高版本节点的数据复制协议,计算机设备可以从各关联节点中,将节点版本最低的确定为第一关联节点,将关联节点中除待升级节点和第一关联节点之外的其他节点确定为第二关联节点。在一个实施例中,计算机设备在确定第一关联节点时,除了可以将节点版本最低的关联节点确定为第一关联节点,还可以对各关联节点进行分析,只要存在某一关联节点可以支持数据同步,即在数据同步过程中不会出现副本丢失的情况,则可以将其确定为第一关联节点。例如,数据库集群中存在数据库节点A、数据库节点B、数据库节点C以及数据库节点D。在数据库节点B被确定为待升级节点时,且数据库节点B上存储有数据分片3的主副本时,计算机设备确定数据库节点A、数据库节点C以及数据库节点D均为关联节点,其中,数据库节点A的节点版本高于数据库节点C的节点版本,数据库节点C的节点版本高于数据库节点D的节点版本。计算机设备通过对数据库节点A、数据库节点C以及数据库节点D进行分析,数据库节点C的节点版本虽然高于数据库节点D的节点版本,但数据库节点C和数据库节点D由于升级需要,两者之间是可以相互兼容的,因此,计算机设备可以选取数据库节点C作为切换节点。
进一步地,数据库节点升级方法还包括:按照切换节点的节点版本所支持的增量数据同步协议,将切换节点存储的数据分片的主副本的增量数据,向升级后的节点中存储的数据分片的副本进行增量数据同步。
具体地,计算机设备可以根据切换节点的节点版本所支持的增量数据同步协议展开增量数据同步,具体可以为采用切换节点的节点版本所支持的增量数据同步协议针对增量数据形成复制协议数据包,并根据复制协议数据包向升级后的节点中存储的数据分片的副本进行增量数据同步。例如,切换节点的节点版本所支持的增量数据同步协议为数据复制协议1,则计算机设备可以基于数据复制协议1,将数据分片的主副本的增量数据形成复制协议1数据包输出至升级后的节点中,以完成增量数据同步。此外,对于数据库集群中与切换节点存储有相同数据分片的其他关联节点,切换节点也可以按照所支持的增量数据同步协议将增量数据向其他关联节点进行增量数据同步。
本实施例中,计算机设备在确定切换节点时,从关联节点中确定节点版本支持增量数据同步协议的第一关联节点,且第一关联节点所支持的增量数据同步协议可以被第二关联节点兼容,采用第一关联节点支持的增量数据同步协议,数据分片的副本所在的节点都可以实现数据同步,降低了升级过程中副本丢失的可能性,提升了数据库集群的可靠性。
在一个实施例中,根据节点版本,从关联节点中确定切换节点,包括:根据节点版本,从关联节点中确定第一关联节点;第一关联节点的节点版本支持增量数据同步协议,且关联节点中除第一关联节点外的第二关联节点兼容增量数据同步协议;当第一关联节点不满足节点切换条件,从第二关联节点中确定切换节点。
其中,节点切换条件可以是指设定的用于判断第一关联节点是否可以用于做切换节点的条件。在设定节点切换条件时,可以根据数据库集群的实际应用场景进行设定。由于切换节点是存储数据分片的主副本的,且主副本又是与客户端进行交互的角色,切换节点的网络状态、计算资源以及运行状态等都可能需要保持一个较优的状态。计算机设备具体在设定节点切换条件时,可以按照节点的网络稳定性是否达到网络稳定性阈值、运行情况是否良好等来设定。
具体地,计算机设备可以通过节点切换条件,判定第一关联节点是否为适用于做切换节点的节点。在节点切换条件为与关联节点是否会发生故障相关时,若计算机设备判断第一关联节点当前处于故障状态,或者计算机设备判断在未来一段时间第一关联节点出现故障的可能性较高,则计算机设备可以从第二关联节点中确定出切换节点。其中,第二关联节点的个数可能为一个,当第二关联节点的个数为一个时,可以直接将该唯一的第二关联节点确定为切换节点。第二关联节点的个数可能为多个,当第二关联节点的个数为多个时,也可以按照一定的策略,如版本最低优先策略、网络状态最稳优先策略等,从第二关联节点中确定出切换节点。在具体应用时,数据库集群中的数据库节点A被确定为第一关联节点,数据库集群中的数据库节点C和数据库节点D被确定为第二关联节点。计算机设备在发现数据库节点A突然离线后,可以从数据库节点C和数据库节点D中选取新的切换节点,具体可以将数据库节点C和数据库节点D中版本较低的选取为切换节点。
进一步地,数据库节点升级方法还包括:按照切换节点的节点版本所兼容的增量数据同步协议,将切换节点存储的数据分片的主副本的增量数据,向升级后的节点中存储的数据分片的副本进行增量数据同步。
其中,在切换节点为第二关联节点时,第二关联节点的节点版本会高于第一关联节点的节点版本,第二关联节点是兼容第一关联节点的增量数据同步协议的。计算机设备可以根据切换节点的节点版本所兼容的低版本的增量数据同步协议展开增量数据同步,具体可以为采用第二关联节点的节点版本所兼容的增量数据同步协议针对增量数据形成复制协议数据包,并根据复制协议数据包向升级后的节点中存储的数据分片的副本进行增量数据同步。例如,第二关联节点的节点版本所兼容的增量数据同步协议为数据复制协议2,则计算机设备可以基于数据复制协议2,将数据分片的主副本的增量数据形成复制协议2数据包输出至升级后的节点中,以完成增量数据同步。此外,对于数据库集群中与切换节点存储有相同数据分片的其他关联节点,切换节点也可以按照所兼容的增量数据同步协议将增量数据向其他关联节点进行增量数据同步。
在一个实施例中,如图4所示,为针对数据库集群中的节点C,实现节点升级的时序图。其中,数据库集群中可以包括节点A、节点B、节点C、节点D、节点E以及节点F。数据库集群所存储的数据经由水平切分后,可以被切分为数据分片1、数据分片2以及数据分片3。其中,节点C被确定为待升级节点,在节点C上存储的数据分片1的副本为数据分片1的主副本时,计算机设备可以确定存储有数据分片1的副本的关联节点,即关联节点包括同样存储有数据分片1的副本的节点A、节点F以及节点C。其中,由于节点F的节点版本低于节点A的节点版本,计算机设备可以将节点F确定为第一关联节点,节点A被确定为第二关联节点。
在针对节点C进行主副本切换前,计算机设备确定节点F当前处于故障状态,计算机设备可以将第二关联节点确定为切换节点,即将节点A确定为切换节点。在节点A被确定为切换节点后,计算机设备可以将节点C上的数据分片1的主副本切换至节点A,以实现数据库节点上的副本角色的转换。在此基础上,可以进一步针对节点C进行节点版本升级。
在节点C完成升级后,节点C会重启,节点C上的数据分片1的副本会作为从副本加入数据库集群,并以升级后的数据存储格式进行存储。当外部有数据写入节点A所存储的数据分片1的主副本时,节点A所存储的数据分片1的主副本可以针对写入的数据进行处理,获得数据处理结果,并按照节点A所兼容的数据复制协议,将数据处理结果同步至升级后的节点C,以及节点F。升级后的节点C在接收到节点A同步过来的数据处理结果之后,可以对数据处理结果进行数据格式转换,将数据处理结果转换成升级后的节点C支持的新版本数据格式,并将数据格式转换后的数据处理结果同步到升级后的节点C所存储的数据分片1的从副本中。至此关于节点C的数据库节点升级过程完成,在此过程中,不会出现副本丢失的情况,数据库集群的可靠性和安全性均可以被保证。计算机设备会重新确定待升级节点,如将节点E确定为待升级节点,并重复对节点C进行节点升级的过程,直至数据库集群中所有的节点均升级完成,或者数据库集群中需要升级的节点升级完成,结束升级过程。
本实施例中,计算机设备在确定切换节点时,当第一关联节点不满足切点切换条件时,从第二关联节点中确定切换节点,并采用第二关联节点兼容的增量数据同步协议进行增量数据同步,也可以使得数据分片的副本所在的节点都可以实现数据同步,降低了升级过程中副本丢失的可能性,提升了数据库集群的可靠性。
在一个实施例中,在将数据分片的主副本由待升级节点切换到切换节点的情况下,针对待升级节点进行节点版本升级,获得升级后的节点,包括:将待升级节点存储的数据分片的副本切换为从副本,并将切换节点存储的数据分片的副本切换为主副本;针对待升级节点的数据格式以及支持的数据同步协议进行版本升级,获得升级后的节点;其中,升级后的节点存储的数据分片的副本更新为新版本数据格式,且升级后的节点支持新版本的数据同步协议进行数据同步。
其中,数据格式可以是数据库节点上的数据存储格式,具体可以为文件存储格式。对于不同版本的数据库节点,为了适应节点版本更新后的功能变化,各版本的数据库节点的数据存储格式可能是不同的,当然,也可能存在节点版本升级之后,无需更改数据格式,使得不同版本的数据库节点的数据格式是相同的情况。数据同步协议可以是指各数据库节点之间的数据复制协议,同样的,对于不同版本的数据库节点,为了适应节点版本更新后的功能变化,各版本的数据库节点的数据同步协议可能是不同的,当然,也可能存在节点版本升级之后,无需更改数据同步协议,使得不同版本的数据库节点的数据格式是相同的情况。一般情况下,升级后的数据库节点可以支持新版本的数据同步协议,同时还可以兼容旧版本的数据同步协议,升级后的节点可以支持新版本的数据同步协议进行数据同步,在具体数据同步的场景中,是否使用新版本的数据同步协议可以结合数据库集群中其他数据库节点的节点版本确定。
具体地,计算机设备可以将待升级节点存储的数据分片的副本和切换节点存储的副本进行角色的转换,即将待升级节点存储的数据分片的副本切换为从副本,并将升级切换节点存储的数据分片的副本切换为主副本。在完成副本切换后,可以进行待升级节点的节点版本升级,随着升级过程中,待升级节点的功能、性能的变化,为了适应功能和性能变化的待升级节点,计算机设备可以对待升级节点的数据存储格式进行更新,以及对待升级节点的数据同步协议进行更新,从而使得更新后的数据存储格式和数据同步协议是适配版本升级后的节点的。进一步的,计算机设备将升级后的节点存储的数据分片的副本更新为新版本数据格式后,以从副本的形式加入数据库集群,且升级后的节点支持新版本的数据同步协议进行数据同步。在具体实施时,在对数据库节点1进行升级时,数据库节点1增加了功能A和功能B,得到新版本的数据库节点2。数据库节点1上原先使用的数据存储格式和数据同步协议已经不能适配增加功能A和功能B的数据库节点2,计算机设备可以对数据库节点1的数据存储格式进行更新,以及对数据库节点1的数据同步协议进行更新,从而使得更新后的数据存储格式和数据同步协议是适配数据库节点2的。
本实施例中,计算机设备在对待升级节点进行节点版本升级时,还会对待升级节点的数据格式以及支持的数据同步协议进行更新,使得更新后的数据格式以及支持的数据同步协议可以适配升级后的节点,保证了数据库节点升级的可靠性。
在一个实施例中,确定数据库集群中的待升级节点,包括:确定数据库集群中各数据库节点各自的存储信息;按照针对数据库集群的节点升级策略和存储信息,确定针对数据库集群的节点升级顺序;根据节点升级顺序从各数据库节点中确定待升级节点。
其中,节点升级策略可以是预先设定的对数据库集群进行升级的策略。节点升级策略中可以设定从数据库节点中选取待升级节点的方式,如可以按照数据库节点所在的AZ(Availability Zones,可用区域)、数据库节点所处的物理位置、数据库节点的节点序号等进行选取。节点升级顺序可以是对数据库节点进行升级的顺序,通过节点升级顺序,可以从数据库节点中确定出待升级节点,并按照节点升级顺序,依次对确定出的带升级节点进行升级。
具体地,计算机设备可以确定数据库节点上的数据分片的副本的存储情况,并将节点升级策略和数据库节点上的数据分片的副本的存储情况,确定数据库集群的节点升级顺序。在节点升级策略为按照数据库节点所处的AZ时,计算机设备可以按照预先设定的AZ的序号,以及各AZ上的数据库节点上的数据分片的存储情况,确定出节点升级顺序,并按照节点升级顺序确定待升级节点。具体计算机设备可以先选取AZ序号排在前几位的AZ上的数据库节点作为备选节点。计算机设备可以确定各个备选节点的存储信息,以尽量使得针对每一个数据分片,在升级过程中可以保留各个数据分片的至少一个副本所在的节点不升级为基准,结合各个备选节点的存储信息进行选取,确定出节点升级顺序。在一个具体应用中,计算机设备按照AZ序号,从数据库集群中选取出AZ1、AZ2上的数据库节点作为备选节点,其中,备选节点可以包括备选节点1、备选节点2、备选节点3以及备选节点4,其中,备选节点1上的存储信息为存储数据分片1的副本、数据分片2的副本;备选节点2上的存储信息为存储数据分片2的副本;备选节点3上的存储信息为存储数据分片1的副本;备选节点4上的存储信息为存储数据分片2的副本。计算机设备在确定节点升级顺序时,结合备选节点的存储信息,可以确定节点升级顺序为备选节点1、备选节点2、备选节点3以及备选节点4;其中,可以确定的节点升级顺序还可以为备选节点1、备选节点3、备选节点2以及备选节点4。
本实施例中,计算机设备可以结合节点升级策略和数据库节点各自的存储信息,来确定出节点升级顺序,从而可以按照节点升级顺序确定带升级节点进行升级,提升了升级过程的可靠性。
在一个实施例中,数据库节点升级方法还包括:从切换节点获取数据分片的主副本的增量数据;增量数据的数据格式与关联节点可采用的增量数据同步协议相匹配;将增量数据转换成升级后的节点支持的新版本数据格式;将新版本数据格式的增量数据同步到升级后的节点所存储的数据分片的副本中。
其中,关联节点包括第一关联节点和第二关联节点,即切换节点可以是第一关联节点,也可以是第二关联节点。在此种情况下,关联节点可采用的增量数据同步协议可以包括第一关联节点支持的增量数据同步协议,以及第二关联节点兼容的增量数据同步协议。在切换节点为第一关联节点时,切换节点存储的数据分片的主副本可以按照第一关联节点支持的增量数据同步协议同步数据,增量数据的数据格式与第一关联节点支持的增量数据同步协议匹配。在切换节点为第二关联节点时,切换节点存储的数据分片的主副本可以按照第二关联节点兼容的增量数据同步协议同步数据,增量数据的数据格式与第二关联节点兼容的增量数据同步协议匹配。
具体地,在切换节点为第一关联节点时,计算机设备可以按照第一关联节点支持的增量数据同步协议对数据分片的主副本的增量数据进行打包,获得数据复制协议包。计算机设备可以按照升级后的节点支持的新版本数据格式,对数据复制协议包中的数据格式进行转换,获得新版本数据格式的增量数据。进一步将新版本数据格式的增量数据同步到升级后的节点所存储的数据分片的副本中。在切换节点为第二关联节点时,计算机设备可以按照第二关联节点兼容的增量数据同步协议对数据分片的主副本的增量数据进行打包,获得增量数据复制协议包。计算机设备同样可以按照升级后的节点支持的新版本数据格式,对数据复制协议包中的数据格式进行转换,获得新版本数据格式的增量数据。进一步将新版本数据格式的增量数据同步到升级后的节点所存储的数据分片的副本中。
在一个具体应用中,在切换节点为第一关联节点,即低版本节点时,计算机设备可以按照第一关联节点支持的增量数据同步协议对数据分片的主副本的增量数据进行打包,获得增量数据复制协议包,并将增量数据复制协议包同步给升级后的节点。升级后的节点在收到低版本节点按照低版本节点支持的增量数据同步协议同步的数据复制协议包时,可以不进行数据格式转换,直接将数据复制协议包中的增量数据存储至本地。后续在节点回滚过程中,可以从存储有同一个数据分片的主副本的数据库节点拷贝存量数据、同步增量数据,可以有效的提升数据同步效率。
本实施例中,计算机设备通过对切换节点同步过来的增量数据进行格式转换,获得新版本数据格式的增量数据,并将新版本数据格式的增量数据同步至升级后的节点所存储的数据分片的副本中。通过对低版本复制协议复制过来的增量数据进行格式转换后再进行存储,可以保证升级后的节点存储的数据的一致性。
在一个实施例中,如图5所示,数据库节点升级方法还包括以下步骤:
步骤502,确定数据库集群中经过至少一次节点版本升级后的待回滚节点。
其中,待回滚节点可以是在已经进行版本升级后的节点中,需要进行回退的节点,通过对待回滚节点进行回退,可以对待回滚节点进行降级,获得降级后的节点,降级后的节点即为回滚后的节点。具体地,计算机设备在确定待回滚节点时,可以在数据库节点中已经升级的节点的个数达到预设的升级节点数量或者数据库集群的升级时间达到升级时间阈值时,确定待回滚节点,通过对确定出的待回滚节点进行降级,以达到一定的数据处理需求。计算机设备也可以在确定数据集群中出现故障时,如出现数据同步故障、节点升级故障时,从已经升级的节点中确定待回滚节点,通过对确定出的待回滚的节点进行降级,以辅助分析故障节点。计算机设备还可以在确定由于业务需求,已经升级的节点需要退回到老版本时,从已经升级的节点中确定待回滚节点,通过对确定出的待回滚节点降级,以适配业务需求。
步骤504,当待回滚节点中存储的数据分片的副本属于由目标主副本进行数据同步的从副本,针对待回滚节点进行节点版本降级,获得回滚后的节点。
其中,目标主副本可以是指待回滚节点上存储的数据分片的主副本,待回滚节点上存储的数据分片的副本可以为目标主副本,也可以为属于由目标主副本进行数据同步的从副本。节点版本降级可以将待回滚节点当前的节点版本降级为当前的节点版本的上一个节点版本。具体地,在计算机设备确定在待回滚节点上存储的为属于由目标主副本进行数据同步的从副本时,可以直接对待回滚节点进行降级,以将待回滚节点的节点版本4降级为节点版本3。
步骤506,从数据库集群中确定目标主副本所在的目标节点。
其中,目标节点可以是指数据库集群中存储有待目标主副本的节点。具体地,目标节点可以是数据库集群中比待回滚节点的节点版本要低的节点,也可以是数据库集群中与待回滚节点的节点版本相同的节点,还可以是数据库集群中比待回滚节点的节点版本要高的节点。计算机设备可以获取数据库集群中各数据库节点上的存储信息,确定出目标节点。
步骤508,当目标节点与回滚后的节点属于相同的节点版本,将目标节点中存储的数据分片的目标主副本,同步到回滚后的节点中。
其中,回滚后的节点所对应的节点版本已经被降级了,若目标节点的节点版本为与降级后节点的节点版本相同,则计算机设备可以将目标节点上存储的数据分片的目标主副本,同步到回滚后的节点中,使得回滚后的节点上可以存储数据分片的从副本,以此实现了数据备份,降低了副本丢失的可能性。
在一个实施例中,如图6所示,为针对数据库集群中的节点C,实现节点回滚的时序图。其中,数据库集群中可以包括节点A、节点B、节点C、节点D、节点E以及节点F。数据库集群所存储的数据经由水平切分后,可以被切分为数据分片1、数据分片2以及数据分片3。
其中,节点C被确定为待回滚节点,在节点C上存储的数据分片1的副本为属于由目标主副本进行数据同步的从副本时,直接对节点C进行节点版本降级,获得回滚后的节点C。
在对节点C进行节点降级重启后,计算机设备可以从数据库集群中确定存储有目标主副本的目标节点,节点F为存储有数据分片1的目标主副本的目标节点,且节点F的节点版本与降级后的节点C的节点版本相同。计算机设备可以基于节点F上存储的数据分片1的目标主副本,针对回滚后的节点C上存储的数据分片1的从副本进行同步,同步至节点C的数据可以包括存量数据和增量数据,其中,存量数据可以是数据库集群中已经存在的数据,以此实现了数据备份,降低了副本丢失的可能性。计算机设备还可以基于节点F上存储的数据分片1的目标主副本,针对节点A上存储的数据分片1的从副本进行同步,同步至节点A的数据可以包括增量数据。
本实施例中,计算机设备确定数据库集群中的待回滚节点,并在待回滚节点上存储的数据分片的副本为从副本时,直接进行待回滚节点的降级,在降级之后,如果目标主副本所在的目标节点为与降级后的待回滚节点相同版本的节点,则可以直接通过目标节点进行数据同步,无需占用多个数据库节点的节点资源,提升了数据同步的效率。
在一个实施例中,数据库节点升级方法还包括:当目标节点的节点版本高于回滚后的节点所属的节点版本,从数据库集群中确定存量数据恢复节点;存量数据恢复节点中存储有目标主副本关联的从副本,且存量数据恢复节点与回滚后的节点属于相同的节点版本;将存量数据恢复节点中存储的数据分片的从副本,恢复到回滚后的节点中;按照回滚后的节点所属的节点版本支持的增量数据同步协议,将目标节点中存储的目标主副本的增量数据,同步到回滚后的节点中。
其中,存储数据恢复节点可以是数据库集群中,用于对回滚后的节点上存储的数据分片的副本进行恢复的节点,存量数据可以是数据库集群中已经存在的数据,具体可以是历史数据,即在某一时间节点前所保存的数据。在目标节点的节点版本高于回滚后的节点所属的节点版本的情况下,回滚后的节点上的存量数据如果由目标节点采用数据复制协议的方式同步的话,可能会存在效率低下的问题。计算机设备可以从数据库集群中确定存量数据恢复节点,存量数据恢复节点可以是与回滚后的节点属于相同的节点版本的节点,且存储有目标主副本关联的从副本的节点,通过存量数据恢复节点,可以通过拷贝的方式直接恢复回滚后的节点上的数据分片的从副本。
具体地,计算机设备在确定回滚后的节点存储的数据分片的主副本在高版本节点上,即目标节点的版本高于回滚后节点的节点版本,对于此种情况,计算机设备可以从数据库集群中,基于各数据库节点的版本信息、存储信息,查找到与回滚后节点的节点版本相同,且存储有目标主副本关联的从副本的存量数据恢复节点。计算机设备可以通过存量数据恢复节点存储的数据分片的从副本,恢复回滚后的节点的存量数据。通过目标节点按照回滚后的节点所属的节点版本支持的增量数据同步协议,同步目标节点中存储的目标主副本的增量数据至回滚后的节点中。
在一个实施例中,如图7所示,为针对数据库集群中的节点C,实现节点回滚的时序图。其中,数据库集群中可以包括节点A、节点B、节点C、节点D、节点E以及节点F。数据库集群所存储的数据经由水平切分后,可以被切分为数据分片1、数据分片2以及数据分片3。其中,节点C被确定为待回滚节点,在节点C上存储的数据分片1的副本为属于由目标主副本进行数据同步的从副本时,直接对节点C进行节点版本降级,获得回滚后的节点。
在对节点C进行节点降级重启后,计算机设备可以从数据库集群中确定存储有目标主副本的目标节点,目标节点为节点A。在节点A为节点版本高于回滚后的节点C的节点版本的节点时,计算机设备可以从数据库集群中确定与回滚后的节点C的节点版本相同,且存储有相同数据分片的副本的节点F作为存量恢复节点。计算机设备可以基于节点F上存储的数据分片1的从副本,恢复数据到降级后的节点C中,恢复至降级后的节点C的数据可以包括存量数据,以此避免了副本丢失的情况。计算机设备还可以基于节点A上存储的数据分片1的目标主副本针对降级后的节点C的数据分片1的从副本进行数据同步,同步数据到降级后的节点C中,同步至降级后的节点C的数据可以包括增量数据。
本实施例中,在回滚后的节点的目标主副本在目标节点上,且目标节点的版本高于回滚后的节点时,对于回滚后的节点的存量数据可以从回滚后的节点相同版本的存量数据恢复节点恢复。对于回滚后的节点的增量数据,可以从高版本的目标节点中同步,有效避免了数据回滚过程中副本丢失的情况,提升了数据库集群的可靠性。
在一个实施例中,数据库节点升级方法还包括:当待回滚节点所存储数据分片的副本属于目标主副本,从数据库集群中确定中间节点;中间节点存储有目标主副本关联的从副本;将目标主副本由待回滚节点切换到中间节点,并执行当待回滚节点中存储的数据分片的副本属于由目标主副本进行数据同步的从副本,针对待回滚节点进行节点版本降级,获得回滚后的节点的步骤。
其中,待回滚节点所存储数据分片的副本属于目标主副本可以是指待回滚节点上存储有目标主副本,导致此种情况的原因可能是待回滚节点在升级后,由于节点故障、节点离线或者实际业务需要,目标主副本被切换到了待回滚节点上。中间节点可以是存储有目标主副本关联的从副本的节点,中间节点具体可能是与待回滚节点存储同一数据分片的副本的高版本节点,中间节点也可能是与待回滚节点存储同一数据分片的副本的低版本节点。在将目标主副本由待回滚节点切换到中间节点前,中间节点也有可能会发生变化,例如,本来中间节点为低版本节点,但低版本节点在切换前出现了故障或者下线的情况,则中间节点更新为高版本节点。又如,本来中间节点为高版本节点,但在切换前确定了数据库集群中出现了与待回滚节点存储同一数据分片的副本的低版本节点,则中间节点更新为低版本节点。
具体的,对于待回滚节点所存储数据分片的副本属于目标主副本的情况,即目标主副本在回滚节点上,计算机设备那么需要进行倒换操作,将目标主副本倒换至中间节点上。其中,中间节点可以是与待回滚节点存储同一数据分片的副本的高版本节点,也可以是与待回滚节点存储同一数据分片的副本的低版本节点。在确定中间节点之后,计算机设备可以将待回滚节点上的目标主副本切换至中间节点,并进一步对待回滚节点进行降级,获得回滚后的节点。在具体实施时,计算机设备在选取中间节点时,优先选择低版本节点,使得在具体倒换时,可以优先向低版本节点倒换,如果低版本节点下线,那么才向高版本节点倒换。
在一个实施例中,如图8所示,为针对数据库集群中的节点C,实现节点回滚的时序图。其中,数据库集群中可以包括节点A、节点B、节点C、节点D、节点E以及节点F。数据库集群所存储的数据经由水平切分后,可以被切分为数据分片1、数据分片2以及数据分片3。
其中,节点C被确定为待回滚节点,在节点C上存储的数据分片1的副本为目标主副本时,计算机设备需要从数据库集群中确定中间节点,图8中将节点F确定为中间节点,节点F为与降级后的节点C相同版本的节点。计算机设备可以将节点C上的数据分片1的目标主副本倒换至节点F。
在对节点C进行节点降级重启后,计算机设备可以基于节点F上存储的数据分片1的目标主副本针对降级后的节点C的数据分片1的从副本进行数据同步,同步数据到回滚后的节点C中,同步至回滚后的节点C的数据可以包括存量数据和增量数据,以此实现了数据备份,降低了副本丢失的可能性。计算机设备还可以基于节点F上存储的数据分片1的目标主副本针对节点A存储的数据分片1的从副本进行数据同步,同步数据到节点A中,同步至节点A的数据可以包括增量数据。
如图9所示,节点A被确定为倒换节点,即中间节点,节点A为比降级后的节点C的节点版本要高的节点。计算机设备可以将节点C上的目标主副本倒换至节点A。在对节点C进行节点降级重启后,计算机设备可以从数据库集群中确定与回滚后的节点C的节点版本相同的节点F作为存量恢复节点。计算机设备可以基于节点F上存储的数据分片1的从副本,恢复数据到回滚后的节点C中,恢复至回滚后的节点C的数据可以包括存量数据,以此避免了副本丢失的情况。计算机设备还可以基于节点A上存储的数据分片1的目标主副本,针对降级后的节点C上的数据分片1的从副本进行数据同步,同步数据到节点C中,同步至节点C的数据可以包括增量数据。
本实施例中,当目标主副本在回滚节点时需要进行倒换,计算机设备通过确定存储有目标主副本关联的从副本的中间节点,以将目标主副本倒换成至中间节点后,才进行后续的降级处理。从而保证了在节点降级过程中,目标主副本依然可以持续写入数据,保证了数据库集群的工作效率。
在一个实施例中,方法还包括:确定数据库集群中经过至少一次节点版本升级后的待回滚节点,包括:获取针对数据库集群的节点升级策略以及数据库集群中的已升级节点;已升级节点经过至少一次节点版本升级;按照节点升级策略和已升级节点确定节点回滚顺序;根据节点回滚顺序,从已升级节点中确定待回滚节点。
其中,已升级节点可以是数据库集群中,已经经过至少一次节点版本升级的节点。由于数据库集群的实际升级需求、业务需要等,可能会存在部分数据库节点已经升级了多次,部分数据库节点只升级了一次,还有部分数据库节点没有升级。节点回滚顺序可以是指对已升级节点进行回退的顺序,节点回滚顺序可以是与节点升级策略相关的,节点升级策略中定义了数据库节点的节点升级顺序。在确定节点回滚顺序时,可以直接按照节点升级顺序确定节点回滚顺序。节点回滚顺序也可以与已升级节点上的存储信息相关,可以将节点升级顺序和存储信息结合,确定节点回滚顺序。无论采用何种方式选取节点回滚顺序,只要保证可以实现安全的回滚操作即可。可以确定出待回滚节点。
具体地,计算机设备在确定待回滚节点时,可以针对已升级的节点,确定各已升级节点的节点升级顺序,并将各已升级节点的节点升级顺序的逆顺序,确定为节点回滚顺序。通过确定出的节点回滚顺序,则可以从已升级节点中确定待回滚节点。例如,已升级的节点可以包括节点A、节点B、节点C,节点A、节点B、节点C的节点升级顺序可以为先升级节点B,再升级节点A,最后升级节点C,节点升级顺序的逆顺序可以是按照节点C、节点A以及节点B进行排序的顺序,计算机设备可以先回滚节点C,再回滚节点A,最后回滚节点B。
本实施例中,计算机设备在确定待回滚节点时,是根据节点升级策略和已升级节点确定节点回滚顺序,节点升级策略中定义了数据库节点的节点升级顺序,从而通过节点升级顺序确定节点回滚顺序,提升了回滚操作的安全性。
在一个实施例中,节点升级策略包括按照不同节点区域依次进行节点升级的策略;节点区域中包括至少一个数据库节点,且每个节点区域中存储有每个数据分片的至少一个副本。
其中,节点区域可以是一个或多个物理数据中心的集合,节点区域可以是指可用分区,可用分区是一个逻辑上的概念,可以是在某个地域内拥有独立电力和网络的物理区域,具体可以表示故障的隔离域。其中,可用分区具体可以表征物理资源的分区,物理资源可以包括计算、存储、网络等。同一个可用分区之间内网互通,不同可用分区之间物理隔离。每个可用分区都不受其他可用分区故障的影响,并提供低价、低延迟的网络连接,以连接到同一地区其他可用分区。通过使用独立可用分区,可以保护数据库节点不受单一位置故障的影响。
具体地,可用分区中可以设置有多个数据库节点,每个数据库节点上可以存储有不同数据分片的副本,且同一个可用区域中,不会存储同一数据分片的副本,即在同一个可用区域中的数据库节点上,各数据库节点上存储的副本是属于不同数据分片的,这样不仅能处理不同节点的故障,还能够处理整个可用区域故障的场景。在确定节点升级顺序时,通过按照不同节点区域依次进行节点升级,可以尽可能的保证在数据库集群升级的过程中,所有的数据分片都保存有一份副本。由于某些故障的发生是很难预知的,使得在需要回滚时,可以尽可能的通过保存的副本安全的回滚到老版本。
在一个具体应用中,数据库集群中的数据库节点可以设置在可用区域1、可用区域2以及可用区域3中,可用区域1上设置有数据库节点1和数据库节点2、可用区域2上可以设置有数据库节点3和数据库节点4;可用区域3上设置有数据库节点5和数据库节点6。各不同的数据库节点上分别存储有数据分片1、数据分片2以及数据分片3的副本。其中,计算机设备可以按照可用区域1、可用区域2以及可用区域3的顺序,如可用区域1、可用区域2以及可用区域3的序号,依次按照可用区域选取待升级节点。例如,可以先升级可用区域1中的数据库节点1和数据库节点2。在可用区域1上的数据库节点1和数据库节点2均升级完之后,再升级可用区域2中的数据库节点3和数据库节点4。在可用区域2上的数据库节点3和数据库节点4均升级完之后,最后升级可用区域3中的数据库节点5和数据库节点6。
本实施例中,计算机设备可以按照不同节点区域依次进行节点升级的策略确定节点升级顺序,一方面,能处理不同数据库节点的故障、整个可用区域的故障;另一方面,还提高了安全回滚的节点数上限,能够更安全的执行不兼容的集群升级,提升了数据库集群的可靠性。
本申请还提供一种应用场景,该应用场景应用上述的数据库节点升级方法。具体地,该数据库节点升级在该应用场景的应用如下:
随着计算机技术的发展,数据量的高速增长,分布式数据库技术、分布式数据存储系统等也得到了快速的发展。为了利用数据库集群的多节点性能,一般会将数据切分成大量分片,分布在不同的数据库节点上。为了提高数据的可靠性,每个分片都有多个副本,且放置到不同的数据库节点上。多个副本间有主从复制关系,一个主副本,多个从副本。
其中,分布式数据库通常在伸缩性上较传统数据库有大的区别。数据通常按照某种策略被切成分片,分片也可以被称为切片、region(区域)以及shard(碎片)等,考虑到可靠性,每一个分片会有多个副本,一般可以是3个,其中一个副本是主,主副本可以称为leader(领导)副本、primary(主要的)副本,数据写入主后被复制到其他的从副本,从副本又可以称为follower(跟随者),replica(复制品)等。
当分布式数据库集群做跨版本不兼容升级时都有较高的风险。目前,在针对数据库集群进行节点升级时,通常使用滚动升级策略,一次升级一个节点,当观察无误后再升级下一个节点,即整个升级会持续较长时间。当这个升级是不兼容时,主要体现在新旧版本节点间数据复制协议不同,新旧节点内文件存储格式不同两方面,即升级过程中集群中可能会同时存在2种或2种以上的不同的数据复制通讯协议、数据存储格式,很容易造成数据复制中断,丢失副本,降低数据可靠性;如果遇到异常必须做升级回退,过程将非常危险,有很高的丢数据风险。
如图10所示,为数据库集群中各数据库节点的初始状态结构框图。其中,图10中包括节点Av1、节点Bv1以及节点Cv1,即节点NodeAv1、节点NodeBv1和节点NodeCv1。节点Av1、节点Bv1以及节点Cv1节点的节点版本相同,节点Av1上存储有数据分片1的从副本、数据分片2的从副本,节点Bv1上存储有数据分片1的主副本、数据分片2的从副本,以及节点Cv1上存储有数据分片1的从副本、数据分片2的主副本。在初始状态中,在数据库集群中存在有写入数据分片2的主副本的数据时,节点Cv1上的数据分片2的主副本会按照V1版本的数据复制协议针对节点Bv1上存储的数据分片2的从副本以及节点Av1上存储的数据分片2的从副本进行数据同步。在数据库集群中存在有写入数据分片1的主副本的数据时,节点Bv1上的数据分片1的主副本会按照V1版本的数据复制协议针对节点Av1上存储的数据分片1的从副本以及节点Cv1上存储的数据分片1的从副本进行数据同步。
考虑正在升级第一个节点,节点NodeAv1,若节点NodeAv1上存储有分布的主副本,则节点NodeAv1上的所有主副本都会倒换到其他节点上,之后再进行升级,当节点NodeAv1升级完成,如图11所示,版本升级后称之为节点NodeAv2,重新启动后,它上面的副本都作为从副本加入数据库集群。主副本在其他老版本节点,即主副本节点NodeBv1和节点NodeCv1上,数据分片1的主副本在节点NodeBv1上,数据分片2的主副本在节点NodeCv1上,主副本对应的从副本在这个新版本节点NodeAv2上。在存在有新数据写入分片数据库集群时,数据可以从老版本节点上以V1版本的数据复制协议复制到新版本节点,由于新版本可以兼容老版本的数据复制协议,所以这样是没问题的。
在开始升级第二个节点NodeBv1之前,第二个节点NodeBv1上的所有主副本都会倒换到其他节点上,这些主副本有可能倒换到低版本节点NodeCv1上,也有可能倒换到前一个升级了的高版本节点NodeAv2上。如图12所示,当第二个节点NodeBv1上的数据分片1的主副本倒换到节点NodeAv2时。在数据库集群中存在有写入数据分片1的主副本的数据时,高版本节点NodeAv2会采用V2版本的数据复制协议进行数据同步,由于低版本的节点NodeCv1不能识别高版本节点NodeAv2的数据复制协议,数据分片1的数据复制协议中断,也就是说只有节点NodeAv2有此数据分片1的副本,数据分片1原本的3副本只剩下节点NodeAv2节点上的1副本,以及节点NodeBv2上1个正在恢复的副本,可靠性降低。
目前业内数据库集群的升级过程缺点非常明显,当集群的副本数为r时,做不兼容版本升级时,使用现有滚动升级方案,多副本可能只剩下1完整副本,1个正在恢复的副本,缺少完整的r-2个副本。此时副本数越多,可靠性降低的越大。另一种现有方案,会选择完全放弃服务的可靠性,不做滚动升级。升级过程中不对外提供服务,完全停止整个集群,所有节点都升级完成后,再启动整个集群,在这期间不对外提供查询服务、数据入库服务。
基于此,本实施例提供的数据库节点升级方法,通过定义一种数据复制策略,一种升级顺序策略,来降低、消除升级过程中的风险。本实施例提供的数据库节点升级方法仍然使用滚动升级,完全避免在升级过程中不对外提供查询服务、数据入库服务的问题,同时提升数据库集群的可靠性。在滚动升级过程中,重启节点触发分片发生主从倒换,当选择新主节点时,总是选择版本低的节点作为新主节点。其中,新主节点可以对应于切换节点。这样可以保证总是有r-1个完整的副本,另外1个正在恢复的副本,达到最高可靠性。如果由于某种原因只能选择高版本节点上的分片作为新主时,可以识别有复制关系的其他分片的从副本所在节点的版本,如果这些节点的版本更低,那么分片的主副本需要使用最低版本的数据复制协议进行数据复制。
其中,数据总是从“分片主”复制到“分片从”。那么就要求“分片从”需要能够识别“分片主”的复制协议。当进行不兼容升级时,有可能不满足这个条件。本实施例提供的数据库节点升级方法,可以按照节点NodeAv1、节点NodeBv1的顺序滚动升级。在节点NodeAv1升级到节点NodeAv2后,需要从节点NodeBv1上复制数据分片1的副本,由于高版本节点NodeAv2能够识别低版本V1的数据复制协议,数据复制能够继续下去。
其中,针对节点NodeBv1进行升级前,如果数据分片1的主副本切换到已经升级完成的节点NodeAv2,由于节点NodeCv1只识别V1版本的复制协议,无法再从节点NodeAv2处复制数据分片1的副本,导致其上“数据分片1从副本”失效的问题。如图13所示,可以在对节点NodeBv1进行升级前,分片发起新的主从切换时,总是将节点NodeBv1上分片的主副本切换到低版本节点上,也就是说在升级节点NodeBv1时,将节点NodeBv1上存储的数据分片1的主副本切换到节点NodCv1上面,数据分片1的复制仍然运行V1版本的数据复制协议。在数据库集群中存在有写入数据分片2的主副本的数据时,节点Cv1上的数据分片2的主副本会按照V1版本的数据复制协议针对节点Bv2上存储的数据分片2的从副本以及节点Av2上存储的数据分片2的从副本进行数据同步。在数据库集群中存在有写入数据分片1的主副本的数据时,节点Cv1上的数据分片1的主副本会按照V1版本的数据复制协议针对节点Av2上存储的数据分片1的从副本以及节点Bv2上存储的数据分片1的从副本进行数据同步。由于高版本的节点可以识别低版本的数据复制协议,因此,一般不会产生副本丢失的情况。分片发起新的主从切换时,总是将节点NodeBv1上分片的主副本切换到低版本节点上,以此来维持原有复制路径。目的是避免分片主被切换到高版本节点,导致低版本节点上的分片从失效。沿用前面的升级过程,已经完成节点NodeAv2的升级,正在操作节点NodeBv1的升级。如图14所示,当分片发起新的主从切换时,如果由于某种原因必须将未升级前的节点NodeBv1上的数据分片1的主副本切换到高版本节点NodeAv2上。这时可以分析此数据分片1的副本所在的所有节点的版本,即分析数据分片1的副本,找到最低版本的节点NodeCv1,当数据库集群中存在有写入数据分片1的主副本的数据时,节点NodeAv2的数据分片1的主副本可以使用最低版本的节点NodeCv1支持的V1版本的数据复制协议发起分片复制。
当分片发起新的主从切换时,如果所有数据库节点的节点版本一致了,可以将分片的主副本切换到任一个数据库节点上。如图15所示,当节点NodeAv1已经升级成节点NodeAv2,节点NodeBv1已经升级成节点NodeBv2时,在升级节点NodeCv1到节点NodeCv2后,节点NodeAv2发现当前与数据分片1相关的所有节点都是V2版本了,然后开始启用V2数据复制协议。节点NodeBv2发现当前与数据分片2相关的所有节点都是V2版本了,然后也开始启用V2数据复制协议。即当分片发起新的主从切换时,各分片的主副本均可以跑V2版本的数据复制协议。
其中,在滚动升级过程中,难免会出现需要进行数据回退的情况。当第一个节点NodeAv1升级到节点NodeAv2后,节点内文件格式也做了升级。如果这时出现问题,需要对升级做回滚操作,也就是要将节点NodeAv2回退到节点NodeAv1,但老版本的节点NodeAv1无法识别升级后的节点内文件,也就是说节点NodeAv1节点内文件会失效,需要从老版本的其他节点上复制这些数据,恢复数据的多副本。按照此描述,第一个节点升级失败是可以回滚的。如果第一个节点升级后没有及时发现问题,其中有些问题需要多个节点都被升级后才能暴露,或者需要运行一段时间才能发现问题,即在升级后续节点时才发现问题,也就是说已经升级的节点数>=2。如图16所示,节点NodeAv2和节点NodeBv2的内部数据文件已经被升级了,如果这时发现问题要做升级回滚,需回滚的节点内文件会失效,由于已升级的新版本文件不会被回滚的老版本软件识别,需要从老版本的其他节点上复制这些数据。当集群的数据为2副本,如果某个分片的2副本正好在节点NodeAv2和节点NodeBv2节点上,也就没有老版本的其他节点数据可供恢复,这部分数据就丢失了。对于存储集群来说,丢数据是一个严重的问题。
目前业内数据库集群的回滚过程缺点也非常明显,当集群的副本数为r时,最多接受r-1个节点升级失败,在这之前发起回滚操作才能保证不丢数据。为了解决此问题,另一种现有的回滚方案,会在升级前对低版本数据做备份,供回滚使用。此方案有不少限制:增加升级成本,至少多准备1个节点的空间,能够完全存放1个节点的老版本数据。当节点数据量大时,成本增加明显。增加时间成本,每滚动升级1个节点,需要大量时间复制此节点的数据。当节点数据量大时,时间成本增加明显。如果节点上的数据仍然被持续写入、持续修改的话。备份老版本数据的方案将会很复杂,甚至不可行。
造成回滚过程问题的起因是节点回滚时,只能放弃已经升级的高版本文件,如果已经升级了多个节点,也就是需要回滚多个节点,放弃它们上面的数据时,可能同时放弃了部分数据的所有副本,导致副本丢失。当数据设定为3副本时,安全的回滚边界是2节点,即当升级完第3个节点,然后决定回滚时,可能会丢失某些分片的3副本。
基于此,本实施例提供的数据库节点升级方法,通过编排升级顺序,做到至少接受(r-1)/r×m个节点的升级失败,其中m为集群节点数。此时还能够发起安全的回滚操作,不丢失数据,如此提高了安全回滚的节点数上限,能够更安全的执行不兼容的集群升级。换句话说,对于3副本的集群,现有方案最多接受2个节点的升级失败,而本实施例提供的数据库节点升级方法可以接受至少占总节点2/3的数量的节点升级失败。
其中,当考虑可靠性设置数据多副本保存时,通常每个副本保存在不同的AZ中,这样不仅能处理不同节点的故障,还能够处理整个AZ故障的场景。如图17所示,以3副本分布在可用区域1、可用区域2以及可用区域3等3AZ的数据库集群来描述方案。图17中包括节点Av1、节点Bv1、节点Cv1、节点Dv1、节点Ev1以及节点Fv1,即节点NodeAv1、节点NodeBv1、节点NodeCv1、节点NodeDv1、节点EodeEv1和节点NodeFv1。节点Av1、节点Bv1、节点Cv1、节点Dv1、节点Ev1以及节点Fv1的节点版本相同,且节点Av1、节点Bv1、节点Cv1、节点Dv1、节点Ev1以及节点Fv1上存储的分片的副本的格式都是V1格式的。节点Av1上存储有数据分片1的副本、数据分片2的副本,节点Bv1上存储有数据分片3的副本,节点Cv1上存储有数据分片1的副本,节点Dv1上存储有数据分片2的副本、数据分片3的副本,节点Ev1上存储有数据分片3的副本、数据分片2的副本,以及节点Fv1上存储有数据分片1的副本。
如果以AZ的序号为顺序升级节点,先升级可用区域1中的节点,再升级可用区域2中的节点,最后升级可用区域3中的节点。具体地,先升级节点NodeAv1、节点NodeBv1,然后升级节点NodeCv1、节点NodeDv1,最后升级节点EodeEv1和节点NodeFv1。即使升级完节点NodeAv1、节点NodeBv1、节点NodeCv1、节点NodeDv1这4个节点之后,再决定要回滚升级,即放弃节点NodeAv1、节点NodeBv1、节点NodeCv1、节点NodeDv1上的数据,也能保证所有的分片都有一份副本在节点EodeEv1和节点NodeFv1上,从图17中可知,数据分片1的副本在节点NodeFv1上,数据分片2和数据分片3的副本在节点EodeEv1上。可以安全的回滚到老版本,并复制所有的老版本分片数据。而通常的方案此时只能支持安全的回滚2个节点的升级。
如图18所示,已经升级完节点NodeAv1、节点NodeBv1、节点NodeCv1、节点NodeDv1这4个节点,此时节点NodeAv1、节点NodeBv1、节点NodeCv1、节点NodeDv1已经变成节点NodeAv2、节点NodeBv2、节点NodeCv2、节点NodeDv2,且节点NodeAv2、节点NodeBv2、节点NodeCv2、节点NodeDv2上存储的分片的副本的格式都是V2格式的。此时决定要回退,可以按照滚动升级的反方向回退,即以节点NodeDv2、节点NodeCv2、节点NodeBv2、节点NodeAv2为顺序进行回退。如图19所示,当节点NodeDv2回退到节点NodeDv1版本后,这时节点NodeDv1上的存量数据可以从NodeEv1上拷贝过来,当数据库集群中有新数据写入时,当数据分片3的主副本和数据分片2的主副本在节点NodeEv1上时,节点NodeEv1上存储的数据分片2的主副本和数据分片3的主副本可以采用V1版本的数据复制协议同步增量数据至节点NodeDv1的从副本。当数据库集群中有新数据写入时,数据分片3的主副本在节点NodeEv1时,数据分片3的主副本自然也用的V1版本的数据协议复制。当数据库集群中有新数据写入时,若数据分片3的主副本在节点NodeBv2时,为了适应低版本的节点,数据分片3的主副本也会用V1版本的数据复制协议同步增量数据。所以,节点NodeDv2回退为节点NodeDv1后,数据分片2的主副本和数据分片3的主副本可以通过V1版本的数据复制协议进行数据同步。
其次,对节点NodeCv2进行回退,如图20所示,将节点NodeCv2回退到节点NodeCv1版本后,这时节点NodeCv1上的存量数据可以从节点NodeFv1上拷贝过来。当数据库集群中有新数据写入时,当数据分片1的主副本在节点NodeFv1上时,节点NodeFv1上存储的数据分片1的主副本可以采用V1版本的数据复制协议同步增量数据至节点NodeCv1的从副本,当数据分片1的主副本在节点NodeFv1时,数据分片1的主副本自然用的V1协议复制。当数据库集群中有新数据写入时,当数据分片1的主副本在节点NodeAv2时,为了适应低版本的节点,数据分片1的主副本也会用V1版本的数据复制协议同步增量数据至节点NodeCv1的从副本。所以,节点NodeCv2回退为节点NodeCv1后,数据分片1的主副本也可以通过V1版本的数据复制协议进行数据同步。
进一步地,对节点NodeBv2进行回退,如图21所示,将节点NodeBv2回退到节点NodeBv1版本后,这时节点NodeBv1上的存量数据可以从节点NodeEv1或者节点NodeDv1上拷贝过来。当数据库集群中有新数据写入时,当数据分片3的主副本在节点NodeEv1上或者节点NodeDv1时,节点NodeEv1上存储的数据分片3的主副本或者节点NodeDv1上存储的数据分片3的主副本可以采用V1版本的数据复制协议同步增量数据至节点NodeBv1的从副本。
最后,对节点NodeAv2进行回退,对节点NodeAv2回退后的示意图可以参考图17,将节点NodeAv2回退到节点NodeAv1版本后,这时节点NodeAv1上的存量数据可以从节点NodeCv1、节点NodeDv1、节点NodeEv1以及节点NodeFv1上拷贝过来,当数据库集群中有新数据写入时,当数据分片1的主副本在节点NodeCv1或者节点NodeFv1时,节点NodeCv1上存储的数据分片1的主副本或者节点NodeFv1上存储的数据分片1的主副本可以采用V1版本的数据复制协议同步增量数据至节点NodeAv1的数据分片1的从副本。当数据分片2的主副本在节点NodeEv1或者节点NodeDv1时,节点NodeEv1上存储的数据分片2的主副本或者节点NodeDv1上存储的数据分片2的主副本可以采用V1版本的数据复制协议同步增量数据至节点NodeAv1的数据分片2的从副本。
现有方案在滚动升级过程中,当集群的副本数为r时,多副本可能只剩下1个完整副本,1个正在恢复的副本,缺少完整的r-2个副本。本实施例提供的数据库节点升级方法,在整个滚动升级过程中,一直保持r-1个完整副本,1个正在恢复的副本。可靠性更高,是现有滚动升级过程可靠性的r/2倍,副本数越多,本实施例提供的数据库节点升级方法的优势也会越明显。
现有方案在回滚过程中,缺点也非常明显,当集群的副本数为r,集群的节点数为n时。现有方案能够接受r-1个节点升级失败,执行安全的回滚。本实施例提供的数据库节点升级方法,至少可以接受(r-1)/r×n个节点的升级失败,此时还能够发起安全的回滚操作,不丢失数据。可靠性更高,是现有回滚方案可靠性的n/r倍,节点数越多,本实施例提供的数据库节点升级方法的优势越明显。
本实施例提供的数据库节点升级方法是后台分布式数据库的升级方案,提升数据库升级期间的可靠性,可应用到分布式数据存储系统中。例如:分布式kv(Key-Value,键值存储)存储系统,分布式关系数据库,分布式搜索系统等。
应该理解的是,虽然如上所述的各实施例所涉及的流程图中的各个步骤按照箭头的指示依次显示,但是这些步骤并不是必然按照箭头指示的顺序依次执行。除非本文中有明确的说明,这些步骤的执行并没有严格的顺序限制,这些步骤可以以其它的顺序执行。而且,如上所述的各实施例所涉及的流程图中的至少一部分步骤可以包括多个步骤或者多个阶段,这些步骤或者阶段并不必然是在同一时刻执行完成,而是可以在不同的时刻执行,这些步骤或者阶段的执行顺序也不必然是依次进行,而是可以与其它步骤或者其它步骤中的步骤或者阶段的至少一部分轮流或者交替地执行。
基于同样的发明构思,本申请实施例还提供了一种用于实现上述所涉及的数据库节点升级方法的数据库节点升级装置。该装置所提供的解决问题的实现方案与上述方法中所记载的实现方案相似,故下面所提供的一个或多个数据库节点升级装置实施例中的具体限定可以参见上文中对于数据库节点升级方法的限定,在此不再赘述。
在一个实施例中,如图22所示,提供了一种数据库节点升级装置2200,包括:待升级节点确定模块2202、切换节点确定模块2204和版本升级模块2206,其中:
待升级节点确定模块2202,用于确定数据库集群中的待升级节点;待升级节点中存储有数据分片的副本;数据分片,是数据库集群所存储数据经过切片得到的。
切换节点确定模块2204,用于当待升级节点中存储的数据分片的副本属于向从副本进行数据同步的主副本,从数据库集群中确定切换节点;切换节点的节点版本支持向关联节点同步切换节点中所存储的数据分片的副本;关联节点,是数据库集群中存储有数据分片的副本的数据库节点。
版本升级模块2206,用于在将数据分片的主副本由待升级节点切换到切换节点的情况下,针对待升级节点进行节点版本升级,获得升级后的节点;其中,升级后的节点中存储的数据分片的副本,是由切换节点基于所存储的数据分片的主副本针对进行数据同步的。
在一个实施例中,切换节点确定模块2204,还用于确定待升级节点中存储的数据分片的副本所属副本类型;当副本类型表示为向从副本进行数据同步的主副本,获取数据库集群中各数据库节点各自的节点信息;基于各节点信息,从数据库集群的各数据库节点中确定切换节点。
在一个实施例中,节点信息包括节点存储信息和节点版本信息;切换节点确定模块2204,还用于基于数据分片的分片信息和各数据库节点各自的节点存储信息,从各数据库节点中确定出关联节点;根据关联节点的节点版本信息确定关联节点的节点版本;根据节点版本,从关联节点中确定切换节点。
在一个实施例中,切换节点确定模块2204,还用于根据节点版本,将关联节点中的第一关联节点确定为切换节点;第一关联节点的节点版本支持增量数据同步协议,且关联节点中除第一关联节点外的第二关联节点兼容增量数据同步协议;数据库节点升级装置还包括数据增量同步模块;数据增量同步模块,用于按照切换节点的节点版本所支持的增量数据同步协议,将切换节点存储的数据分片的主副本的增量数据,向升级后的节点中存储的数据分片的副本进行增量数据同步。
在一个实施例中,切换节点确定模块2204,还用于根据节点版本,从关联节点中确定第一关联节点;第一关联节点的节点版本支持增量数据同步协议,且关联节点中除第一关联节点外的第二关联节点兼容增量数据同步协议;当第一关联节点不满足节点切换条件,从第二关联节点中确定切换节点。数据增量同步模块,还用于按照切换节点的节点版本所兼容的增量数据同步协议,将切换节点存储的数据分片的主副本的增量数据,向升级后的节点中存储的数据分片的副本进行增量数据同步。
在一个实施例中,版本升级模块2206,还用于将待升级节点存储的数据分片的副本切换为从副本,并将切换节点存储的数据分片的副本切换为主副本;针对待升级节点的数据格式以及支持的数据同步协议进行版本升级,获得升级后的节点;其中,升级后的节点存储的数据分片的副本更新为新版本数据格式,且升级后的节点支持新版本的数据同步协议进行数据同步。
在一个实施例中,待升级节点确定模块2202,还用于确定数据库集群中各数据库节点各自的存储信息;按照针对数据库集群的节点升级策略和存储信息,确定针对数据库集群的节点升级顺序;根据节点升级顺序从各数据库节点中确定待升级节点。
其中,在一个实施例中,节点升级策略包括按照不同节点区域依次进行节点升级的策略;节点区域中包括至少一个数据库节点,且每个节点区域中存储有每个数据分片的至少一个副本。
在一个实施例中,数据库节点升级装置还包括格式转换模块;格式转换模块,用于从切换节点获取数据分片的主副本的增量数据;增量数据的数据格式与关联节点可采用的增量数据同步协议相匹配;将增量数据转换成升级后的节点支持的新版本数据格式;将新版本数据格式的增量数据同步到升级后的节点所存储的数据分片的副本中。
在一个实施例中,数据库节点升级装置还包括回滚模块;回滚模块,用于确定数据库集群中经过至少一次节点版本升级后的待回滚节点;当待回滚节点中存储的数据分片的副本属于由目标主副本进行数据同步的从副本,针对待回滚节点进行节点版本降级,获得回滚后的节点;从数据库集群中确定目标主副本所在的目标节点;当目标节点与回滚后的节点属于相同的节点版本,将目标节点中存储的数据分片的目标主副本,同步到回滚后的节点中。
在一个实施例中,回滚模块,还用于当目标节点的节点版本高于回滚后的节点所属的节点版本,从数据库集群中确定存量数据恢复节点;存量数据恢复节点中存储有目标主副本关联的从副本,且存量数据恢复节点与回滚后的节点属于相同的节点版本;将存量数据恢复节点中存储的数据分片的从副本,恢复到回滚后的节点中;按照回滚后的节点所属的节点版本支持的增量数据同步协议,将目标节点中存储的目标主副本的增量数据,同步到回滚后的节点中。
在一个实施例中,回滚模块,还用于当待回滚节点所存储数据分片的副本属于目标主副本,从数据库集群中确定中间节点;中间节点存储有目标主副本关联的从副本;将目标主副本由待回滚节点切换到中间节点,并执行当待回滚节点中存储的数据分片的副本属于由目标主副本进行数据同步的从副本,针对待回滚节点进行节点版本降级,获得回滚后的节点的步骤。
在一个实施例中,回滚模块,还用于获取针对数据库集群的节点升级策略以及数据库集群中的已升级节点;已升级节点经过至少一次节点版本升级;按照节点升级策略和已升级节点确定节点回滚顺序;根据节点回滚顺序,从已升级节点中确定待回滚节点。
上述数据库节点升级装置中的各个模块可全部或部分通过软件、硬件及其组合来实现。上述各模块可以硬件形式内嵌于或独立于计算机设备中的处理器中,也可以以软件形式存储于计算机设备中的存储器中,以便于处理器调用执行以上各个模块对应的操作。
在一个实施例中,提供了一种计算机设备,该计算机设备可以是服务器或终端,其内部结构图可以如图23所示。该计算机设备包括处理器、存储器、输入/输出接口(Input/Output,简称I/O)和通信接口。其中,处理器、存储器和输入/输出接口通过系统总线连接,通信接口通过输入/输出接口连接到系统总线。其中,该计算机设备的处理器用于提供计算和控制能力。该计算机设备的存储器包括非易失性存储介质和内存储器。该非易失性存储介质存储有操作系统、计算机程序和数据库。该内存储器为非易失性存储介质中的操作系统和计算机程序的运行提供环境。该计算机设备的数据库用于存储数据库节点升级数据。该计算机设备的输入/输出接口用于处理器与外部设备之间交换信息。该计算机设备的通信接口用于与外部的终端通过网络连接通信。该计算机程序被处理器执行时以实现一种数据库节点升级方法。
本领域技术人员可以理解,图23中示出的结构,仅仅是与本申请方案相关的部分结构的框图,并不构成对本申请方案所应用于其上的计算机设备的限定,具体的计算机设备可以包括比图中所示更多或更少的部件,或者组合某些部件,或者具有不同的部件布置。
在一个实施例中,提供了一种计算机设备,包括存储器和处理器,存储器中存储有计算机程序,该处理器执行计算机程序时实现上述数据库节点升级方法的步骤。
在一个实施例中,提供了一种计算机可读存储介质,其上存储有计算机程序,计算机程序被处理器执行时实现上述数据库节点升级方法的步骤。
在一个实施例中,提供了一种计算机程序产品,包括计算机程序,该计算机程序被处理器执行时实现上述数据库节点升级方法的步骤。需要说明的是,本申请所涉及的用户信息(包括但不限于用户设备信息、用户个人信息等)和数据(包括但不限于用于分析的数据、存储的数据、展示的数据等),均为经用户授权或者经过各方充分授权的信息和数据,且相关数据的收集、使用和处理需要遵守相关国家和地区的相关法律法规和标准。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一非易失性计算机可读取存储介质中,该计算机程序在执行时,可包括如上述各方法的实施例的流程。其中,本申请所提供的各实施例中所使用的对存储器、数据库或其它介质的任何引用,均可包括非易失性和易失性存储器中的至少一种。非易失性存储器可包括只读存储器(Read-OnlyMemory,ROM)、磁带、软盘、闪存、光存储器、高密度嵌入式非易失性存储器、阻变存储器(ReRAM)、磁变存储器(Magnetoresistive Random Access Memory,MRAM)、铁电存储器(Ferroelectric Random Access Memory,FRAM)、相变存储器(Phase Change Memory,PCM)、石墨烯存储器等。易失性存储器可包括随机存取存储器(Random Access Memory,RAM)或外部高速缓冲存储器等。作为说明而非局限,RAM可以是多种形式,比如静态随机存取存储器(Static Random Access Memory,SRAM)或动态随机存取存储器(Dynamic RandomAccess Memory,DRAM)等。本申请所提供的各实施例中所涉及的数据库可包括关系型数据库和非关系型数据库中至少一种。非关系型数据库可包括基于区块链的分布式数据库等,不限于此。本申请所提供的各实施例中所涉及的处理器可为通用处理器、中央处理器、图形处理器、数字信号处理器、可编程逻辑器、基于量子计算的数据处理逻辑器等,不限于此。
以上实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。
以上所述实施例仅表达了本申请的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对本申请专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本申请构思的前提下,还可以做出若干变形和改进,这些都属于本申请的保护范围。因此,本申请的保护范围应以所附权利要求为准。

Claims (17)

1.一种数据库节点升级方法,其特征在于,所述方法包括:
确定数据库集群中的待升级节点;所述待升级节点中存储有数据分片的副本;所述数据分片,是所述数据库集群所存储数据经过切片得到的;
当所述待升级节点中存储的所述数据分片的副本属于向从副本进行数据同步的主副本,从所述数据库集群中确定切换节点;所述切换节点的节点版本支持向关联节点同步所述切换节点中所存储的所述数据分片的副本;所述关联节点,是所述数据库集群中存储有所述数据分片的副本的数据库节点;
在将所述数据分片的主副本由所述待升级节点切换到所述切换节点的情况下,针对所述待升级节点进行节点版本升级,获得升级后的节点;
其中,所述升级后的节点中存储的所述数据分片的副本,是由所述切换节点基于所存储的所述数据分片的主副本针对进行数据同步的。
2.根据权利要求1所述的方法,其特征在于,所述当所述待升级节点中存储的所述数据分片的副本属于向从副本进行数据同步的主副本,从所述数据库集群中确定切换节点,包括:
确定所述待升级节点中存储的所述数据分片的副本所属副本类型;
当所述副本类型表示为向从副本进行数据同步的主副本,获取所述数据库集群中各数据库节点各自的节点信息;
基于各所述节点信息,从所述数据库集群的各所述数据库节点中确定切换节点。
3.根据权利要求2所述的方法,其特征在于,所述节点信息包括节点存储信息和节点版本信息;所述基于各所述节点信息,从所述数据库集群的各所述数据库节点中确定切换节点,包括:
基于所述数据分片的分片信息和各所述数据库节点各自的节点存储信息,从各所述数据库节点中确定出关联节点;
根据所述关联节点的节点版本信息确定所述关联节点的节点版本;
根据所述节点版本,从所述关联节点中确定切换节点。
4.根据权利要求3所述的方法,其特征在于,所述根据所述节点版本,从所述关联节点中确定切换节点,包括:
根据所述节点版本,将所述关联节点中的第一关联节点确定为切换节点;所述第一关联节点的节点版本支持增量数据同步协议,且所述关联节点中除所述第一关联节点外的第二关联节点兼容所述增量数据同步协议;
所述方法还包括:
按照所述切换节点的节点版本所支持的所述增量数据同步协议,将所述切换节点存储的所述数据分片的主副本的增量数据,向所述升级后的节点中存储的所述数据分片的副本进行增量数据同步。
5.根据权利要求3所述的方法,其特征在于,所述根据所述节点版本,从所述关联节点中确定切换节点,包括:
根据所述节点版本,从所述关联节点中确定第一关联节点;所述第一关联节点的节点版本支持增量数据同步协议,且所述关联节点中除所述第一关联节点外的第二关联节点兼容所述增量数据同步协议;
当所述第一关联节点不满足节点切换条件,从所述第二关联节点中确定切换节点;
所述方法还包括:
按照所述切换节点的节点版本所兼容的所述增量数据同步协议,将所述切换节点存储的所述数据分片的主副本的增量数据,向所述升级后的节点中存储的所述数据分片的副本进行增量数据同步。
6.根据权利要求1所述的方法,其特征在于,所述在将所述数据分片的主副本由所述待升级节点切换到所述切换节点的情况下,针对所述待升级节点进行节点版本升级,获得升级后的节点,包括:
将所述待升级节点存储的所述数据分片的副本切换为从副本,并将所述切换节点存储的所述数据分片的副本切换为主副本;
针对所述待升级节点的数据格式以及支持的数据同步协议进行版本升级,获得升级后的节点;
其中,所述升级后的节点存储的所述数据分片的副本更新为新版本数据格式,且所述升级后的节点支持新版本的数据同步协议进行数据同步。
7.根据权利要求1所述的方法,其特征在于,所述确定数据库集群中的待升级节点,包括:
确定数据库集群中各数据库节点各自的存储信息;
按照针对所述数据库集群的节点升级策略和所述存储信息,确定针对所述数据库集群的节点升级顺序;
根据所述节点升级顺序从各所述数据库节点中确定待升级节点。
8.根据权利要求1所述的方法,其特征在于,所述方法还包括:
从所述切换节点获取所述数据分片的主副本的增量数据;所述增量数据的数据格式与所述关联节点可采用的增量数据同步协议相匹配;
将所述增量数据转换成所述升级后的节点支持的新版本数据格式;
将新版本数据格式的增量数据同步到所述升级后的节点所存储的所述数据分片的副本中。
9.根据权利要求1至8任意一项所述的方法,其特征在于,所述方法还包括:
确定所述数据库集群中经过至少一次节点版本升级后的待回滚节点;
当所述待回滚节点中存储的数据分片的副本属于由目标主副本进行数据同步的从副本,针对所述待回滚节点进行节点版本降级,获得回滚后的节点;
从所述数据库集群中确定所述目标主副本所在的目标节点;
当所述目标节点与所述回滚后的节点属于相同的节点版本,将所述目标节点中存储的数据分片的所述目标主副本,同步到所述回滚后的节点中。
10.根据权利要求9所述的方法,其特征在于,所述方法还包括:
当所述目标节点的节点版本高于所述回滚后的节点所属的节点版本,从所述数据库集群中确定存量数据恢复节点;所述存量数据恢复节点中存储有所述目标主副本关联的从副本,且所述存量数据恢复节点与所述回滚后的节点属于相同的节点版本;
将所述存量数据恢复节点中存储的数据分片的从副本,恢复到所述回滚后的节点中;
按照所述回滚后的节点所属的节点版本支持的增量数据同步协议,将所述目标节点中存储的所述目标主副本的增量数据,同步到所述回滚后的节点中。
11.根据权利要求9所述的方法,其特征在于,所述方法还包括:
当所述待回滚节点所存储数据分片的副本属于所述目标主副本,从所述数据库集群中确定中间节点;所述中间节点存储有所述目标主副本关联的从副本;
将所述目标主副本由所述待回滚节点切换到所述中间节点,并执行所述当所述待回滚节点中存储的数据分片的副本属于由目标主副本进行数据同步的从副本,针对所述待回滚节点进行节点版本降级,获得回滚后的节点的步骤。
12.根据权利要求9所述的方法,其特征在于,所述确定所述数据库集群中经过至少一次节点版本升级后的待回滚节点,包括:
获取针对所述数据库集群的节点升级策略以及所述数据库集群中的已升级节点;所述已升级节点经过至少一次节点版本升级;
按照所述节点升级策略和所述已升级节点确定节点回滚顺序;
根据所述节点回滚顺序,从所述已升级节点中确定待回滚节点。
13.根据权利要求12所述的方法,其特征在于,所述节点升级策略包括按照不同节点区域依次进行节点升级的策略;所述节点区域中包括至少一个数据库节点,且每个节点区域中存储有每个数据分片的至少一个副本。
14.一种数据库节点升级装置,其特征在于,所述装置包括:
待升级节点确定模块,用于确定数据库集群中的待升级节点;所述待升级节点中存储有数据分片的副本;所述数据分片,是所述数据库集群所存储数据经过切片得到的;
切换节点确定模块,用于当所述待升级节点中存储的所述数据分片的副本属于向从副本进行数据同步的主副本,从所述数据库集群中确定切换节点;所述切换节点的节点版本支持向关联节点同步所述切换节点中所存储的所述数据分片的副本;所述关联节点,是所述数据库集群中存储有所述数据分片的副本的数据库节点;
版本升级模块,用于在将所述数据分片的主副本由所述待升级节点切换到所述切换节点的情况下,针对所述待升级节点进行节点版本升级,获得升级后的节点;其中,所述升级后的节点中存储的所述数据分片的副本,是由所述切换节点基于所存储的所述数据分片的主副本针对进行数据同步的。
15.一种计算机设备,包括存储器和处理器,所述存储器存储有计算机程序,其特征在于,所述处理器执行所述计算机程序时实现权利要求1至13中任一项所述的方法的步骤。
16.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现权利要求1至13中任一项所述的方法的步骤。
17.一种计算机程序产品,包括计算机程序,其特征在于,该计算机程序被处理器执行时实现权利要求1至13中任一项所述的方法的步骤。
CN202310901358.0A 2023-07-21 2023-07-21 数据库节点升级方法、装置和计算机设备 Active CN116680256B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202310901358.0A CN116680256B (zh) 2023-07-21 2023-07-21 数据库节点升级方法、装置和计算机设备

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202310901358.0A CN116680256B (zh) 2023-07-21 2023-07-21 数据库节点升级方法、装置和计算机设备

Publications (2)

Publication Number Publication Date
CN116680256A true CN116680256A (zh) 2023-09-01
CN116680256B CN116680256B (zh) 2024-01-09

Family

ID=87779426

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202310901358.0A Active CN116680256B (zh) 2023-07-21 2023-07-21 数据库节点升级方法、装置和计算机设备

Country Status (1)

Country Link
CN (1) CN116680256B (zh)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN117370078A (zh) * 2023-10-31 2024-01-09 广州鼎甲计算机科技有限公司 数据库备份管理方法、装置、计算机设备和存储介质
CN117573656A (zh) * 2024-01-16 2024-02-20 浙江智臾科技有限公司 数据库升级方法、电子设备及可读存储介质

Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105610903A (zh) * 2015-12-17 2016-05-25 北京奇虎科技有限公司 分布式系统的数据节点升级方法及装置
CN110019529A (zh) * 2017-12-29 2019-07-16 华为技术有限公司 数据节点的管理方法、系统以及相关设备
CN110659158A (zh) * 2019-09-04 2020-01-07 苏州浪潮智能科技有限公司 基于双机热备环境的Influx DB数据备份方法
CN114968656A (zh) * 2021-02-20 2022-08-30 北京金山云网络技术有限公司 一种数据回滚方法、装置、设备及介质
US20220342656A1 (en) * 2021-04-22 2022-10-27 EMC IP Holding Company, LLC System and Method for Shared Volume Persistent Reservation Database for Software Upgrade
US20220404983A1 (en) * 2021-06-17 2022-12-22 Vmware, Inc. Data and configuration integrity checking post-rollback using backups in virtualized computing environments
CN115640171A (zh) * 2022-11-09 2023-01-24 北京航天自动控制研究所 一种无仲裁节点的数据库双节点热备方法与系统

Patent Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105610903A (zh) * 2015-12-17 2016-05-25 北京奇虎科技有限公司 分布式系统的数据节点升级方法及装置
CN110019529A (zh) * 2017-12-29 2019-07-16 华为技术有限公司 数据节点的管理方法、系统以及相关设备
CN110659158A (zh) * 2019-09-04 2020-01-07 苏州浪潮智能科技有限公司 基于双机热备环境的Influx DB数据备份方法
CN114968656A (zh) * 2021-02-20 2022-08-30 北京金山云网络技术有限公司 一种数据回滚方法、装置、设备及介质
US20220342656A1 (en) * 2021-04-22 2022-10-27 EMC IP Holding Company, LLC System and Method for Shared Volume Persistent Reservation Database for Software Upgrade
US20220404983A1 (en) * 2021-06-17 2022-12-22 Vmware, Inc. Data and configuration integrity checking post-rollback using backups in virtualized computing environments
CN115640171A (zh) * 2022-11-09 2023-01-24 北京航天自动控制研究所 一种无仲裁节点的数据库双节点热备方法与系统

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
朱建红 等: "数据服务多节点主备切换设计方法", 指挥信息系统与技术, vol. 3, no. 6, pages 55 - 57 *

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN117370078A (zh) * 2023-10-31 2024-01-09 广州鼎甲计算机科技有限公司 数据库备份管理方法、装置、计算机设备和存储介质
CN117573656A (zh) * 2024-01-16 2024-02-20 浙江智臾科技有限公司 数据库升级方法、电子设备及可读存储介质
CN117573656B (zh) * 2024-01-16 2024-04-12 浙江智臾科技有限公司 数据库升级方法、电子设备及可读存储介质

Also Published As

Publication number Publication date
CN116680256B (zh) 2024-01-09

Similar Documents

Publication Publication Date Title
CN116680256B (zh) 数据库节点升级方法、装置和计算机设备
US11360854B2 (en) Storage cluster configuration change method, storage cluster, and computer system
US8127174B1 (en) Method and apparatus for performing transparent in-memory checkpointing
US9535907B1 (en) System and method for managing backup operations of virtual machines
CN108416040B (zh) 一种数据库修复方法、装置、终端设备及存储介质
US7882286B1 (en) Synchronizing volumes for replication
US8060714B1 (en) Initializing volumes in a replication system
JP4461147B2 (ja) リモートデータミラーリングを用いたクラスタデータベース
US8099627B1 (en) Persistent images of distributed shared memory segments and in-memory checkpoints
US7685385B1 (en) System and method for satisfying I/O requests before a replica has been fully synchronized
EP3528431B1 (en) Paxos protocol-based methods and apparatuses for online capacity expansion of distributed consistency system
US20150213100A1 (en) Data synchronization method and system
EP2416236B1 (en) Data restore system and method
GB2484086A (en) Reliability and performance modes in a distributed storage system
CN111078667B (zh) 一种数据迁移的方法以及相关装置
JP2017504880A (ja) 分散データグリッドにおいて永続性パーティションリカバリをサポートするためのシステムおよび方法
EP3147789B1 (en) Method for re-establishing standby database, and apparatus thereof
JPWO2008129620A1 (ja) 完全二重化システム、システム制御方法およびシステム制御プログラム
CN111240901B (zh) 分布式块存储系统的节点动态扩展系统、方法及设备
CN113326251B (zh) 数据管理方法、系统、设备和存储介质
CN111352766A (zh) 一种数据库的双活实现方法及装置
CN111125060B (zh) 一种数据库管理方法、系统、设备及存储介质
CN115955488B (zh) 基于副本冗余的分布式存储副本跨机房放置方法与装置
CN116303789A (zh) 多分片多副本数据库并行同步方法、装置及可读介质
CN112231150B (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
REG Reference to a national code

Ref country code: HK

Ref legal event code: DE

Ref document number: 40094492

Country of ref document: HK