掌桥专利:专业的专利平台
掌桥专利
首页

数据库集群切换方法、装置、电子设备及可读存储介质

文献发布时间:2024-04-18 19:58:30


数据库集群切换方法、装置、电子设备及可读存储介质

技术领域

本申请涉及计算机技术领域,尤其涉及一种数据库集群切换方法、装置、电子设备及可读存储介质。

背景技术

随着计算机的不断发展,各行各业都在逐步走向数字化和信息化,而在此过程中产生的数据通常通过数据库进行存储,以供后续进行分析及处理,其中,越来越多的场景会采用数据库集群的方式进行数据的存储。

在数据库集群使用的过程中,一旦集群中某一数据库出现异常,则数据库集群整体均无法对外提供服务,因此,为提升数据库的高可用性,通常会为集群内的数据库设置备用数据库,例如MySQL的主从设置及MGR(MySQL Group Replication,MySQL组复制)等,但是,由于增加备用数据库不仅未消除集群数据库之间的影响,反而会进一步加大数据库集群的资源压力,进而易出现因某一数据库使用不当而导致整个数据库集群异常的情况,所以,当前数据库集群的可用性差。

发明内容

本申请的主要目的在于提供一种数据库集群切换方法、装置、电子设备及可读存储介质,旨在解决现有技术中数据库集群的可用性差的技术问题。

为实现上述目的,本申请提供一种数据库集群切换方法,所述数据库集群切换方法包括:

获取目标应用实例集,并确定所述目标应用实例集对应的数据库集群状态;

若确定所述数据库集群状态为数据库集群异常,则对所述目标应用实例集当前连接的待切换数据库集群和对应的目标数据库集群之间的数据同步结果进行检测;

在检测到所述数据同步结果为数据同步成功结果时,将所述待切换数据库集群切换至所述目标数据库集群,以通过所述目标数据库集群向所述目标应用实例集提供服务。

可选地,所述确定所述目标应用实例集对应的数据库集群状态的步骤包括:

获取向所述目标应用实例集提供服务的至少一个服务数据库,其中,所述目标应用实例集包括至少一个目标应用实例,一所述服务数据库对应一所述目标应用实例;

根据所述目标应用实例集,提取各所述服务数据库共同组成的服务数据库集的状态探测结果;

根据所述状态探测结果,确定所述目标应用实例集对应的数据库集群状态。

可选地,所述根据所述目标应用实例集,提取各所述服务数据库共同组成的服务数据库集的状态探测结果的步骤包括:

对于任一所述目标应用实例,检测所述目标应用实例和对应的服务数据库之间是否连接正常;

若是,则根据所述服务数据库的数据库节点,在对应的目标数据库中提取所述目标应用实例的数据库状态探测结果;

若否,则生成针对于所述目标应用实例的探测请求,以及根据所述探测请求拉取所述目标应用实例的数据库状态探测结果;

在检测到各服务数据库均检测完毕后,得到所述服务数据库集的状态探测结果。

可选地,所述状态探测结果包括各所述目标应用实例的数据库状态探测结果,所述根据所述状态探测结果,确定所述目标应用实例共同对应的数据库集群状态的步骤包括:

若各所述目标应用实例的数据库状态探测结果均为数据库状态异常,则确定所述数据库集群状态为数据库集群异常;

若各所述目标应用实例的数据库状态探测结果均为数据库状态正常,则确定所述数据库集群状态为数据库集群正常。

可选地,所述对所述目标应用实例当前连接的待切换数据库集群和对应的目标数据库集群之间的数据同步结果进行检测的步骤包括:

获取所述待切换数据库集群和对应的目标数据库集群之间的数据同步进度;

若所述数据同步进度为同步未完成,则向所述目标应用实例当前连接的待切换数据库集群发送第一降级指令;

在基于所述第一降级指令对所述待切换数据库集群进行降级处理后,则根据所述待切换数据库集群和对应的目标数据库集群之间的同步进度表,检测所述待切换数据库集群和对应的目标数据库集群之间的数据同步结果;

若所述数据同步进度为同步完成,则根据所述待切换数据库集群和对应的目标数据库集群之间的同步进度表,检测所述待切换数据库集群和对应的目标数据库集群之间的数据同步结果。

可选地,所述根据所述待切换数据库集群和对应的目标数据库集群之间的同步进度表,检测所述待切换数据库集群和对应的目标数据库集群之间的数据同步结果的步骤包括:

根据所述同步进度表记录的待切换数据库集群和对应的目标数据库集群分别对应的同步数据量,检测所述待切换数据库集群和对应的目标数据库集群之间的数据同步结果;或者,

根据所述同步进度表中的更新数据,检测所述待切换数据库集群和对应的目标数据库集群之间的数据同步结果。

可选地,在所述在检测到所述数据同步结果为数据同步成功结果时,将所述待切换数据库集群切换至所述目标数据库集群的步骤之后,所述数据库集群切换方法还包括:

在确定所述待切换数据库集群的数据库集群状态为数据库集群正常时,向所述目标数据库集群发送第二降级指令;

在基于所述第二降级指令对所述目标数据库集群进行降级处理后,将所述目标数据库集群回切至所述待切换数据库集群,以通过所述待切换数据库集群向所述目标应用实例提供服务。

为实现上述目的,本申请提供一种数据库集群切换装置,所述数据库集群切换装置包括:

获取模块,用于获取目标应用实例集,并确定所述目标应用实例集对应的数据库集群状态;

检测模块,用于若确定所述数据库集群状态为数据库集群异常,则对所述目标应用实例集当前连接的待切换数据库集群和对应的目标数据库集群之间的数据同步结果进行检测;

切换模块,用于在检测到所述数据同步结果为数据同步成功结果时,将所述待切换数据库集群切换至所述目标数据库集群,以通过所述目标数据库集群向所述目标应用实例集提供服务。

可选地,所述获取模块还用于:

获取向所述目标应用实例集提供服务的至少一个服务数据库,其中,所述目标应用实例集包括至少一个目标应用实例,一所述服务数据库对应一所述目标应用实例;

根据所述目标应用实例集,提取各所述服务数据库共同组成的服务数据库集的状态探测结果;

根据所述状态探测结果,确定所述目标应用实例集对应的数据库集群状态。

可选地,所述获取模块还用于:

对于任一所述目标应用实例,检测所述目标应用实例和对应的服务数据库之间是否连接正常;

若是,则根据所述服务数据库的数据库节点,在对应的目标数据库中提取所述目标应用实例的数据库状态探测结果;

若否,则生成针对于所述目标应用实例的探测请求,以及根据所述探测请求拉取所述目标应用实例的数据库状态探测结果;

在检测到各服务数据库均检测完毕后,得到所述服务数据库集的状态探测结果。

可选地,所述状态探测结果包括各所述目标应用实例的数据库状态探测结果,所述获取模块还用于:

若各所述目标应用实例的数据库状态探测结果均为数据库状态异常,则确定所述数据库集群状态为数据库集群异常;

若各所述目标应用实例的数据库状态探测结果均为数据库状态正常,则确定所述数据库集群状态为数据库集群正常。

可选地,所述检测模块还用于:

获取所述待切换数据库集群和对应的目标数据库集群之间的数据同步进度;

若所述数据同步进度为同步未完成,则向所述目标应用实例当前连接的待切换数据库集群发送第一降级指令;

在基于所述第一降级指令对所述待切换数据库集群进行降级处理后,则根据所述待切换数据库集群和对应的目标数据库集群之间的同步进度表,检测所述待切换数据库集群和对应的目标数据库集群之间的数据同步结果;

若所述数据同步进度为同步完成,则根据所述待切换数据库集群和对应的目标数据库集群之间的同步进度表,检测所述待切换数据库集群和对应的目标数据库集群之间的数据同步结果。

可选地,所述检测模块还用于:

根据所述同步进度表记录的待切换数据库集群和对应的目标数据库集群分别对应的同步数据量,检测所述待切换数据库集群和对应的目标数据库集群之间的数据同步结果;或者,

根据所述同步进度表中的更新数据,检测所述待切换数据库集群和对应的目标数据库集群之间的数据同步结果。

可选地,所述数据库集群切换装置还用于:

在确定所述待切换数据库集群的数据库集群状态为数据库集群正常时,向所述目标数据库集群发送第二降级指令;

在基于所述第二降级指令对所述目标数据库集群进行降级处理后,将所述目标数据库集群回切至所述待切换数据库集群,以通过所述待切换数据库集群向所述目标应用实例提供服务。

本申请还提供一种电子设备,所述电子设备包括:存储器、处理器以及存储在所述存储器上并可在所述处理器上运行的所述数据库集群切换方法的程序,所述数据库集群切换方法的程序被处理器执行时可实现如上述的数据库集群切换方法的步骤。

本申请还提供一种计算机可读存储介质,所述计算机可读存储介质上存储有实现数据库集群切换方法的程序,所述数据库集群切换方法的程序被处理器执行时实现如上述的数据库集群切换方法的步骤。

本申请还提供一种计算机程序产品,包括计算机程序,所述计算机程序被处理器执行时实现如上述的数据库集群切换方法的步骤。

本申请提供了一种数据库集群切换方法、装置、电子设备及可读存储介质,也即,获取目标应用实例集,并确定所述目标应用实例集对应的数据库集群状态;若确定所述数据库集群状态为数据库集群异常,则对所述目标应用实例集当前连接的待切换数据库集群和对应的目标数据库集群之间的数据同步结果进行检测;在检测到所述数据同步结果为数据同步成功结果时,将所述待切换数据库集群切换至所述目标数据库集群,以通过所述目标数据库集群向所述目标应用实例集提供服务。本申请首先获取为目标应用实例集提供服务的数据库集群状态,进而倘若确定数据库集群状态为数据库集群异常,则检测目标应用实例集当前连接的待切换数据库集群和对应的目标数据库集群之间的数据同步结果,并在检测到数据同步结果为数据同步成功结果时,将待切换数据库集群切换至目标数据库集群,从而通过目标数据库集群向目标应用实例集提供服务,实现了在为目标应用实例集提供服务的待切换数据库集群出现异常时,通过将待切换数据库集群切换至目标数据库集群,以继续为目标应用实例集提供服务的目的,也即,将数据库集群从单集群部署方式调整为多集群部署方式,由于数据库集群出现异常时即可自主进行数据库集群的切换,从而能够快速的转移异常。而非只能通过增加备用数据库的方式提升数据库集群的可用性。所以,克服了由于增加备用数据库不仅未消除集群数据库之间的影响,反而会进一步加大数据库集群的资源压力,进而易出现因某一数据库使用不当而导致整个数据库集群异常的情况的技术缺陷,所以,提升了数据库集群的可用性。

附图说明

此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本申请的实施例,并与说明书一起用于解释本申请的原理。

为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,对于本领域普通技术人员而言,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。

图1为本申请实施例一提供的数据库集群切换方法的流程示意图;

图2为本申请实施例一提供的数据库集群切换方法的数据库集群切换系统的结构示意图;

图3为本申请实施例一提供的数据库集群切换方法的数据库集群切换的场景流程图;

图4为本申请实施例二提供的数据库集群切换方法的流程示意图;

图5为本申请实施例三提供的数据库集群切换装置的结构示意图;

图6为本申请实施例四提供的电子设备的结构示意图。

本申请目的实现、功能特点及优点将结合实施例,参照附图做进一步说明。

具体实施方式

为使本发明的上述目的、特征和优点能够更加明显易懂,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述。显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动的前提下所获得的所有其它实施例,均属于本发明保护的范围。

在本申请实施例一中,首先,应当理解的是,当前为提升单集群部署方式下的数据库集群的高可用性,通常通过为数据库集群中的数据库设计备用数据库,以当前相对主流的MySQL MGR组复制架构方案为例:MGR由若干节点共同组成一个复制组,一个事务的提交,必须经过组内大多数节点(N/2+1)决议并通过,才能得以提交,以三个节点组成一个复制组为例,Consensus层为一致性协议层,在事务提交过程中,发生组间通讯,由两个节点决议(certify)通过这个事务,事务最终才能够得以提交并响应,其中,引入组复制主要是为了解决传统异步复制和半同步复制可能产生数据不一致的问题,组复制依靠分布式一致性协议(Paxos协议的变体),实现了分布式下数据的最终一致性,提供了真正的数据高可用方案。但是,上述现有技术大都并未脱离数据库单集群模式,而该模式下带来的问题是,倘若某一数据库发生故障,由于系统不具备感知和切换能力,将导致出现系统在长时间内不可用的情况,一旦数据库集群故障的恢复时间较长,将使得故障期间系统应用高可用得不到有效的保障,所以,目前亟需一种能够实质上提升数据库集群高可用性的方法。

本申请实施例一提供一种数据库集群切换方法,在本申请数据库集群切换方法的实施例一中,参照图1,所述数据库集群切换方法包括:

步骤S10,获取目标应用实例集,并确定所述目标应用实例集对应的数据库集群状态;

步骤S20,若确定所述数据库集群状态为数据库集群异常,则对所述目标应用实例集当前连接的待切换数据库集群和对应的目标数据库集群之间的数据同步结果进行检测;

步骤S30,在检测到所述数据同步结果为数据同步成功结果时,将所述待切换数据库集群切换至所述目标数据库集群,以通过所述目标数据库集群向所述目标应用实例集提供服务。

在本实施例中,需要说明的是,数据库集群切换方法应用于数据库集群切换系统,数据库集群切换系统将提供系统感知能力和切换能力。数据库集群切换系统中设置有多个数据库集群,其中,数据库集群用于为应用实例提供服务,即,为后端应用服务提供数据支持,不同数据库集群之间在环境及资源等方面均相互隔离且互不影响。例如,在一种可实施的方式中,数据库集群切换系统设置有数据库主集群和数据库备集群,两者之间互相隔离,任一数据库集群中均可包括至少一个数据库主节点和若干数据库从节点,其中,在数据库主集群和数据库备集群均处于正常状态下时,由数据库主集群提供数据支持与服务,而在提供服务的过程中数据库主集群也会产生一定的增量数据。例如数据的查询日志等,数据库主集群和数据库备集群会实时进行数据同步,进而可确保通过数据备集群提升数据库主集群的高可用性,其中,进行同步的数据既包括数据库主集群中存储的数据,也包括数据库主集群在使用过程中的增量数据,在数据库主集群出现异常后,可将数据库主集群切换成数据库备集群,从而继续为应用实例提供服务,以保证系统业务不受数据库集群状态影响,且数据库主集群和数据库备集群之间的数据一致性保证,也为业务系统的数据一致性提供了保障。

另外地,需要说明的是,数据库集群切换系统的系统整体架构可以分为探活模块、数据同步中心、应用层和监控中心。参照图2为数据库集群切换系统的结构示意图,其中,探活模块11主要可包括数据库配置单元和数据库探活单元,主要负责对数据库的探活,具体可包括数据库连接层面的探活和数据库业务层面的探活,为应用层代理提供数据源切换的依据,数据同步中心12主要可包括数据同步单元和同步结果监听推送单元,主要负责数据同步及数据同步结果的监听推送,其中,数据同步的方式具体可以为通过FlinkCDC采取数据进行同步的方式,数据同步的过程包括数据的解析、数据的写入以及数据同步结果的存储,并且还会对外提供查询数据同步结果的接口,监控中心13主要包括异常告警通知单元和人工干预单元,主要负责数据库异常时的告警通知,以及数据库的健康,数据同步查看和人工干预切换的功能,应用代理层14主要包括探测结果监听单元、数据源切换单元和日志拦截单元,主要功能是获取探活及数据同步结果,以判定是否需要进行数据源的切换,即,提供数据源切换的功能,A、B和C为中间件13不同数据库形式。例如,在一种可实施的方式中,A可以为redis,B可以为mysql,C可以为MQ,其中,FlinkCDC是Flink社区开发的组件,可以直接从MySQL、PostgreSQL等数据库直接读取全量数据和增量变更数据的组件。

另外地,需要说明的是,目标应用实例集为目标应用实例的集合,目标应用实例用于表征参与数据库集群状态探测的应用实例,一目标应用实例对应连接一个为其提供服务的数据库,其中,目标应用实例集中的所有目标应用实例所连接的数据库均隶属于数据库集群切换系统下的同一数据库集群,数据库集群状态用于表征数据库集群健康与否。在数据库集群健康时,目标应用实例集连接的数据库集群为目标应用实例集中的所有目标应用实例提供服务,在数据库集群异常时,需要对目标应用实例集连接的数据库集群进行切换,在进行数据库集群状态检测时,可通过数据库集群切换系统的探活中心进行数据库探测,其中,探测时可由用户提前配置探活规则,探活规则包括探活周期、探活方式(连接探测以及通过模拟业务DML操作)及探活次数等内容的设置,探活次数设置是为预防网络抖动带来的误判。例如,在一种可实施的方式中,假设数据库集群切换系统为zookeeper提供服务,探活中心会将探测能力下沉到业务组件,探测单元提供一个拦截器,在检测到有数据库连接类异常时,开启主备探测,业务组件的每个目标应用实例在连续探测N次失败之后,将推送一个失败状态至zookeeper的目标应用实例对应的数据库节点,即,将探活结果推送到zookeeper中目标应用实例当前连接的数据库节点,进而通知到各目标应用实例,与此同时,在数据库集群进行切换前,还将会进行数据库集群之间的数据同步结果的检测。例如,在一种可实施的方式中,假设数据库集群切换系统包括数据库主集群和数据库备集群,则在数据库主集群切换至数据库备集群时,需要确保数据库主集群和数据库备集群之间已经完成数据同步,即数据同步结果为数据同步成功结果,倘若数据同步结果为数据同步失败结果(数据库备集群未与数据库主集群之间完成数据同步),则不进行后续将数据库主集群切换至数据库备集群的切换过程。

另外地,需要说明的是,待切换数据库集群用于表征等待进行切换的数据库集群,在目标应用实例集对应的数据库集群状态为数据库集群异常时,则将为目标应用实例集提供服务的数据库集群作为待切换数据库集群,目标数据库集群用于表征继续为目标应用实例集提供服务的数据库集群,具体可以为数据库集群切换系统中除待切换数据库集群之外的任一数据库集群。在一种可实施的方式中,应用代理层在首先得到数据库探活结果标识的数据库集群状态为数据库集群异常后,再获取数据同步结果,并在数据同步结果为数据同步成功结果时,进行数据源切换,其中,假设数据库集群切换系统包括数据库主集群和数据库备集群,则功能设计执行逻辑如下:程序会实时监听探活结果,根据探活结果判断目标应用实例集当前连接的数据库是否健康,如果数据库健康,则按原有逻辑继续执行,如果检查到数据库不健康,则进一步判断主备集群库之间的数据是否同步完成(同步结果由数据同步中心提供)如果数据同步完成,自动切换数据源。

作为一种示例,步骤S10至步骤S30包括:获取至少一个目标应用实例,将各所述目标应用实例组合为目标应用实例集,并通过探活中心探测所述目标应用实例集中的各目标应用实例与各自连接的服务数据库是否连接正常,若探活中心的探测结果表征各目标应用实例与各自连接的服务数据库未均连接正常,则将所述目标应用实例集对应的数据库集群状态标记为数据库集群异常;若确定所述数据库集群状态为数据库集群异常,则通过数据同步通信获取所述目标应用实例集当前连接的待切换数据库集群的和对应的目标数据库集群之间的数据库同步结果,通过数据同步结果检测所述待切换数据库集群和所述目标数据库集群之间是否数据同步完成情况;若检测到所述待切换数据库集群和所述目标数据库集群之间数据同步完成,则确定所述数据同步结果为数据同步成功结果,并将所述带切换数据集群切换至所述目标数据库集群,以通过所述目标数据库集群向所述目标应用实例集提供服务。

在一种可实施的方式中,参照图3为数据库集群切换的场景流程图,首先数据库集群切换系统会监听探活中心的探测结果,其中,(a)为探测结果流程示意图,探测结果包括主库探测任务的探测结果和备库探测任务的探测结果,进而根据探测结果判定是否具备切换条件,即,判定是否进行切换准备工作(检测是否进行主备数据库集群的数据同步情况检测),在检测数据同步情况时可通过数据同步中心读取同步配置(指定库及表),进而采用FinkCDC拉取数据并进行数据解析写入,进而存储数据元信息,最终定时检查同步的结果并存储,即实现数据库主集群和数据库备集群之间的CDC数据同步,在检测到数据同步完成时可进行数据库切换(由待切换数据库集群切换至目标数据库集群),在检测到数据同步未完成时则可通过降级进行快速报错响应。

本申请实施例通过探活中心和数据同步中心分别对进行数据库集群切换的前置条件“数据库集群状态”和“数据库集群之间的数据同步情况”进行判定,进而在满足数据库集群异常及数据库集群之间的数据同步成功的前置条件后,进行数据库集群之间的切换,所以,实现了通过设置多集群部署方式在数据库集群出现异常时即可自主进行数据集群的切换的目的,从而能够快速转移故障异常,所以,实现了在为目标应用实例集提供服务的待切换数据库集群出现异常时,通过将待切换数据库集群切换至目标数据库集群,以继续为目标应用实例集提供服务的目的,所以,提升了数据库集群的可用性。

其中,所述确定所述目标应用实例集对应的数据库集群状态的步骤包括:

步骤A10,获取向所述目标应用实例集提供服务的至少一个服务数据库,其中,所述目标应用实例集包括至少一个目标应用实例,一所述服务数据库对应一所述目标应用实例;

步骤A20,根据所述目标应用实例集,提取各所述服务数据库共同组成的服务数据库集的状态探测结果;

步骤A30,根据所述状态探测结果,确定所述目标应用实例集对应的数据库集群状态。

在本实施例中,需要说明的是,在数据库集群为目标应用实例集提供服务时,目标应用实例集中难免会出现目标应用实例和服务数据库之间数据传输异常的情况。例如网络波动或者网络阻塞等,所以,仅凭借目标应用实例集中存在与所连接的服务器数据库之间的探活结果为探活失败结果时,就认定整个数据库集群是处于异常的,是缺乏全面性的。所以,本申请实施例提出一种数据库集群状态的确定方法,即,通过所有服务数据库去对数据库集群状态进行判定。例如,在一种可实施的方式中,假设目标应用实例集中有10个目标应用实例,当存在8个目标应用实例和所连接的服务数据库之间无法正常连接时,则确定目标应用实例集对应数据库集群状态标识为的数据库集群异常。

作为一种示例,步骤A10步骤A30包括:获取向所述目标的应用实例集提供服务的至少一个服务数据库,其中,所述目标应用实例集包括至少一个目标应用实例,一所述服务数据库对应一所述目标应用实例;通过探活中心获取各所述目标应用实例和各自对应的服务数据库是否连接正常的探活子结果,通过统计各所述探活子结果得到目标应用实例和所连接的服务数据库未正常连接的探活失败量,获取探活失败量和探活总量之间的比值,根据比值和预设比值阈值之间的大小关系,确定各所述服务数据库共同组成的服务数据库集的状态探测结果;根据所述状态探测结果,确定所述目标应用实例集对应的数据库集群状态。

其中,所述根据所述状态探测结果,确定所述目标应用实例集对应的数据库集群状态的步骤包括:

步骤B10,对于任一所述目标应用实例,检测所述目标应用实例和对应的服务数据库之间是否连接正常;

步骤B20,若是,则根据所述服务数据库的数据库节点,在对应的目标数据库中提取所述目标应用实例的数据库状态探测结果;

步骤B30,若否,则生成针对于所述目标应用实例的探测请求,以及根据所述探测请求拉取所述目标应用实例的数据库状态探测结果;

步骤B40,在检测到各服务数据库均检测完毕后,得到所述服务数据库集的状态探测结果。

在本实施例中,需要说明的是,通常情况下,数据库集群切换系统可直接拉取探活中心的探活结果,但在一些特定情况下,数据库集群切换系统未接收到探活中心推送的结果,则需要主动进行探活结果的拉取,以判定数据库集群状态。目标数据库用于表征将探活结果推送至数据库集群切换系统的数据库,具体可以为目标应用实例所连接的数据库,也可以为备份数据库。例如,在一种可实施的方式中,探活中心会主动将探活结果推送到zookeeper中对应的数据库节点,通知到目标应用实例集中的所有实例,但为了防止zookeeper故障情况,会同步将探活结果写入mysql和redis缓存中。与此同时,为了避免无法连接到zookeeper服务的情况,可通过生成探测请求,向探活中心主动拉取目标应用实例的数据库状态探测结果。

作为一种示例,步骤B10至步骤B30包括:对于任一所述目标应用实例,检测所述目标应用实例和对应的服务数据库之间是否连接正常;若检测到所述目标应用实例和对应的服务数据库之间连接正常,则以所述服务数据库的数据库节点为索引,查询对应的目标数据库,并在所述目标数据库中提取所述目标应用实例的数据库状态探测结果;若检测到所述目标应用实例和对应的服务数据库之间连接异常,则生成针对于所述目标应用实例的探测请求,并将所述探测请求发送至探活中心,以及所述探活中心根据所述探测请求反馈的所述目标应用实例的数据库状态探测结果;在检测到各服务数据库均检测完毕后,得到所述服务数据库集的状态探测结果。

其中,所述状态探测结果包括各所述目标应用实例的数据库状态探测结果,所述根据所述状态探测结果,确定所述目标应用实例共同对应的数据库集群状态的步骤包括:

步骤C10,若各所述目标应用实例的数据库状态探测结果均为数据库状态异常,则确定所述数据库集群状态为数据库集群异常;

步骤C20,若各所述目标应用实例的数据库状态探测结果均为数据库状态正常,则确定所述数据库集群状态为数据库集群正常。

作为一种示例,步骤C10至步骤C20包括:获取数据同步中心下发的针对于各所述目标应用实例的数据库状态结果,若所述各所述目标应用实例的数据库状态探测结果均为数据库状态异常,则确定所述数据库集群状态为数据库集群异常;获取数据同步中心下发的针对于各所述目标应用实例的数据库状态探测结果均为数据库状态正常,则确定所述数据库集群状态为数据库集群正常。

其中,所述对所述目标应用实例当前连接的待切换数据库集群和对应的目标数据库集群之间的数据同步结果进行检测的步骤包括:

步骤D10,获取所述待切换数据库集群和对应的目标数据库集群之间的数据同步进度;

步骤D20,若所述数据同步进度为同步未完成,则向所述目标应用实例当前连接的待切换数据库集群发送第一降级指令;

步骤D30,在基于所述第一降级指令对所述待切换数据库集群进行降级处理后,则根据所述待切换数据库集群和对应的目标数据库集群之间的同步进度表,检测所述待切换数据库集群和对应的目标数据库集群之间的数据同步结果;

步骤D40,若所述数据同步进度为同步完成,则根据所述待切换数据库集群和对应的目标数据库集群之间的同步进度表,检测所述待切换数据库集群和对应的目标数据库集群之间的数据同步结果。

在本实施例中,需要说明的是,数据同步主要提供的功能是数据库集群之间的数据同步,提供数据同步检测以及数据同步结果查询功能。具体可通过FinkCDC对数据进行抽取、数据解析及数据入库,其功能设计具体如下:数据同步中心首先是利用finkCDC基于binlog对数据库指定的数据进行抽取,抽取基于配置,配置指定的库及表,同时也支持多库多表的配置。然后对抽取的数据进行解析,最后写入到备集群,反向同步时写入到主集群,写入的同时记录当前数据的元信息,包含数据库名(source.db)、数据库表名(source.table)、事务发生时间(source.ts_ms)、binlog文件名(source.file)、binlog游标(source.pos)、事务操作类型(op)、Flink CDC消费数据时间(ts_ms)等元信息,可以为同步进度判断、binlog重抽定位等功能提供支持,其中,flinkcdc是基于数据库binlog日志文件的抽取,source端提供了基于库或者表的灵活配置,可以按需来配置需要同步的库或者表;sink同步通过http协议调用数据同步中心应用提供的数据入库接口,数据入库接口解析flinkcdc抽取到的binlog数据,拼接SQL,然后通过jdbc的方式入库。在此期间,无论source端或者是sink端还是数据同步中心任何一个地方出现异常,由于在整个链路上都记录了binlog元数据信息,包含binlog文件名,偏移量,gtid全局事务,事务发生时间等以及基于flink集群的checkpoint检查机制,均可以实现异常数据的重放;最后是数据同步结果检查,进而通过上述步骤可判定数据库集群之间同步是否完成,可通过同步进度表中记录的数据,对数据同步进度进行实时监测,从而采用不同处理方式,对待切换数据库集群和对应的目标数据库集群之间的数据同步结果进行检测。

作为一种示例,步骤D10至步骤D40包括:获取所述待切换数据库集群和对应的目标数据库集群之间的数据同步进度;若所述数据同步进度为同步未完成,则向所述目标应用实例当前连接的待切换数据库集群发送第一降级指令;根据所述第一降级指令,对所述待切换数据库集群进行降级处理,在降级处理后通过所述待切换数据库集群和对应的目标数据库集群之间的同步进度表,检测所述待切换数据库集群和对应的目标数据库集群之间的数据同步结果;若所述数据同步进度为同步完成,则通过所述待切换数据库集群和对应的目标数据库集群之间的同步进度表,检测所述待切换数据库集群和对应的目标数据库集群之间的数据同步结果。

其中,所述根据所述待切换数据库集群和对应的目标数据库集群之间的同步进度表,检测所述待切换数据库集群和对应的目标数据库集群之间的数据同步结果的步骤包括:

步骤E10,根据所述同步进度表记录的待切换数据库集群和对应的目标数据库集群分别对应的同步数据量,检测所述待切换数据库集群和对应的目标数据库集群之间的数据同步结果;或者,

步骤E20,根据所述同步进度表中的更新数据,检测所述待切换数据库集群和对应的目标数据库集群之间的数据同步结果。

在本实施例中,需要说明的是,同步进度表记录有待切换数据库集群和对应的目标数据库集群之间的同步数据,具体内容如上所述,同步数据量是指已经同步的数据的数量,更新数据用于表征数据库集群之间进行实时同步的数据,具体可以通过数据字段的时间戳进行判定某一数据是否为更新数据,更新数据具体可以为同步进步表中的最后一条数据。

作为一种示例,步骤E10至步骤E20包括:比对所述同步进度表记录的待切换数据集群的同步数据量和所述待切换数据库集群对应的目标数据库集群的同步数据量是否一致,若一致,则确定所述待切换数据库集群和对应的目标数据库集群之间的数据同步结果为数据同步成功结果,若不一致,则确定所述待切换数据库集群和对应的目标数据库集群之间的数据同步结果为数据同步失败结果;或者,

比对所述同步进度表记录的待切换数据集群的最后一条数据和所述待切换数据库集群对应的目标数据库集群的最后一条数据是否相同,若相同,则所述数据同步结果为数据同步成功结果,若不相同,则所述数据同步结果为数据同步失败结果。

本申请实施例提供了一种数据库集群切换方法,也即,获取目标应用实例集,并确定所述目标应用实例集对应的数据库集群状态;若确定所述数据库集群状态为数据库集群异常,则对所述目标应用实例集当前连接的待切换数据库集群和对应的目标数据库集群之间的数据同步结果进行检测;在检测到所述数据同步结果为数据同步成功结果时,将所述待切换数据库集群切换至所述目标数据库集群,以通过所述目标数据库集群向所述目标应用实例集提供服务。本申请首先获取为目标应用实例集提供服务的数据库集群状态,进而倘若确定数据库集群状态为数据库集群异常,则检测目标应用实例集当前连接的待切换数据库集群和对应的目标数据库集群之间的数据同步结果,并在检测到数据同步结果为数据同步成功结果时,将待切换数据库集群切换至目标数据库集群,从而通过目标数据库集群向目标应用实例集提供服务,实现了在为目标应用实例集提供服务的待切换数据库集群出现异常时,通过将待切换数据库集群切换至目标数据库集群,以继续为目标应用实例集提供服务的目的,也即,将数据库集群从单集群部署方式调整为多集群部署方式,由于数据库集群出现异常时即可自主进行数据库集群的切换,从而能够快速的转移异常。而非只能通过增加备用数据库的方式提升数据库集群的可用性。所以,克服了由于增加备用数据库不仅未消除集群数据库之间的影响,反而会进一步加大数据库集群的资源压力,进而易出现因某一数据库使用不当而导致整个数据库集群异常的情况的技术缺陷,所以,提升了数据库集群的可用性。

进一步地,参照图4,在本申请实施例二中,与上述实施例一相同或相似的内容,可以参考上文介绍,后续不再赘述。在此基础上,在所述在检测到所述数据同步结果为数据同步成功结果时,将所述待切换数据库集群切换至所述目标数据库集群的步骤之后,所述数据库集群切换方法还包括:

步骤F10,在确定所述待切换数据库集群的数据库集群状态为数据库集群正常时,向所述目标数据库集群发送第二降级指令;

步骤F20,在基于所述第二降级指令对所述目标数据库集群进行降级处理后,将所述目标数据库集群回切至所述待切换数据库集群,以通过所述待切换数据库集群向所述目标应用实例提供服务。

在本实施例中,需要说明的是,待切换数据库集群可通过人工修复或者自动修复。在待切换数据库集群修复成功后,为提升数据库集群可用性,可将目标数据库集群切换为待切换数据库集群,进而目标数据库集群可继续保持为数据库集群切换系统提供可用性保障,其中,在进行数据库集群回切时所进行的回切前置条件判定可参照数据库集群切换时的前置条件。与此同时,由于目标数据库集群回切至待切换数据库集群时,目标数据库集群处于正常状态,仍存在数据出入,进而需要在进行回切的过程中进行降级处理,即在一定时间段内防止流量流入,以确保数据的一致性。

作为一种示例,步骤F10至步骤F20包括:在确定所述待切换数据库集群的数据库集群状态为数据库集群正常时,向所述目标数据库集群发送第二降级指令;在基于所述第二降级指令对所述目标数据库集群进行降级处理后,将所述目标数据库集群回切至所述待切换数据库集群,以通过所述待切换数据库集群向所述目标应用实例提供服务。

本申请实施例提供了一种数据库集群切换方法。也即,在确定所述待切换数据库集群的数据库集群状态为数据库集群正常时,向所述目标数据库集群发送第二降级指令;在基于所述第二降级指令对所述目标数据库集群进行降级处理后,将所述目标数据库集群回切至所述待切换数据库集群,以通过所述待切换数据库集群向所述目标应用实例提供服务。本申请实施例在进行目标数据库集群切换至待切换数据库集群时,首先确定待切换数据库集群满足回切条件,进而对正常状态下的目标数据库集群进行降级处理,从而防止在切换过程中目标数据库集群持续存在流量出入,并在两者之间完成数据同步之后,将目标数据库集群切换为待切换数据库集群,从而在保证切换前后数据一致性的前提下,提升了数据库集群的可用性。

本申请实施例三还提供一种数据库集群切换装置,参照图5,所述数据库集群切换装置包括:

获取模块101,用于获取目标应用实例集,并确定所述目标应用实例集对应的数据库集群状态;

检测模块102,用于若确定所述数据库集群状态为数据库集群异常,则对所述目标应用实例集当前连接的待切换数据库集群和对应的目标数据库集群之间的数据同步结果进行检测;

切换模块103,用于在检测到所述数据同步结果为数据同步成功结果时,将所述待切换数据库集群切换至所述目标数据库集群,以通过所述目标数据库集群向所述目标应用实例集提供服务。

可选地,所述获取模块101还用于:

获取向所述目标应用实例集提供服务的至少一个服务数据库,其中,所述目标应用实例集包括至少一个目标应用实例,一所述服务数据库对应一所述目标应用实例;

根据所述目标应用实例集,提取各所述服务数据库共同组成的服务数据库集的状态探测结果;

根据所述状态探测结果,确定所述目标应用实例集对应的数据库集群状态。

可选地,所述获取模块101还用于:

对于任一所述目标应用实例,检测所述目标应用实例和对应的服务数据库之间是否连接正常;

若是,则根据所述服务数据库的数据库节点,在对应的目标数据库中提取所述目标应用实例的数据库状态探测结果;

若否,则生成针对于所述目标应用实例的探测请求,以及根据所述探测请求拉取所述目标应用实例的数据库状态探测结果;

在检测到各服务数据库均检测完毕后,得到所述服务数据库集的状态探测结果。

可选地,所述状态探测结果包括各所述目标应用实例的数据库状态探测结果,所述获取模块101还用于:

若各所述目标应用实例的数据库状态探测结果均为数据库状态异常,则确定所述数据库集群状态为数据库集群异常;

若各所述目标应用实例的数据库状态探测结果均为数据库状态正常,则确定所述数据库集群状态为数据库集群正常。

可选地,所述检测模块102还用于:

获取所述待切换数据库集群和对应的目标数据库集群之间的数据同步进度;

若所述数据同步进度为同步未完成,则向所述目标应用实例当前连接的待切换数据库集群发送第一降级指令;

在基于所述第一降级指令对所述待切换数据库集群进行降级处理后,则根据所述待切换数据库集群和对应的目标数据库集群之间的同步进度表,检测所述待切换数据库集群和对应的目标数据库集群之间的数据同步结果;

若所述数据同步进度为同步完成,则根据所述待切换数据库集群和对应的目标数据库集群之间的同步进度表,检测所述待切换数据库集群和对应的目标数据库集群之间的数据同步结果。

可选地,所述检测模块102还用于:

根据所述同步进度表记录的待切换数据库集群和对应的目标数据库集群分别对应的同步数据量,检测所述待切换数据库集群和对应的目标数据库集群之间的数据同步结果;或者,

根据所述同步进度表中的更新数据,检测所述待切换数据库集群和对应的目标数据库集群之间的数据同步结果。

可选地,所述数据库集群切换装置还用于:

在确定所述待切换数据库集群的数据库集群状态为数据库集群正常时,向所述目标数据库集群发送第二降级指令;

在基于所述第二降级指令对所述目标数据库集群进行降级处理后,将所述目标数据库集群回切至所述待切换数据库集群,以通过所述待切换数据库集群向所述目标应用实例提供服务。

本发明提供的数据库集群切换装置,采用上述实施例中的数据库集群切换方法,解决了数据库集群的可用性差的技术问题。与现有技术相比,本发明实施例提供的数据库集群切换装置的有益效果与上述实施例提供的数据库集群切换方法的有益效果相同,且该数据库集群切换装置中的其他技术特征与上述实施例方法公开的特征相同,在此不做赘述。

本发明实施例四提供一种电子设备,电子设备包括:至少一个处理器;以及,与至少一个处理器通信连接的存储器;其中,存储器存储有可被至少一个处理器执行的指令,指令被至少一个处理器执行,以使至少一个处理器能够执行上述实施例的数据库集群切换方法。

下面参考图6,其示出了适于用来实现本公开实施例的电子设备的结构示意图。本公开实施例中的电子设备可以包括但不限于诸如移动电话、笔记本电脑、数字广播接收器、PDA(个人数字助理)、PAD(平板电脑)、PMP(便携式多媒体播放器)、车载终端(例如车载导航终端)等等的移动终端以及诸如数字TV、台式计算机等等的固定终端。图6示出的电子设备仅仅是一个示例,不应对本公开实施例的功能和使用范围带来任何限制。

如图6所示,电子设备可以包括处理装置1001(例如中央处理器、图形处理器等),其可以根据存储在只读存储器(ROM)1002中的程序或者从存储装置1003加载到随机访问存储器(RAM)1004中的程序而执行各种适当的动作和处理。在RAM1004中,还存储有电子设备操作所需的各种程序和数据。处理装置1001、ROM1002以及RAM1004通过总线1005彼此相连。输入/输出(I/O)接口1006也连接至总线。

通常,以下系统可以连接至I/O接口1006:包括例如触摸屏、触摸板、键盘、鼠标、图像传感器、麦克风、加速度计、陀螺仪等的输入装置1007;包括例如液晶显示器(LCD)、扬声器、振动器等的输出装置1008;包括例如磁带、硬盘等的存储装置1003;以及通信装置1009。通信装置可以允许电子设备与其他设备进行无线或有线通信以交换数据。虽然图中示出了具有各种系统的电子设备,但是应理解的是,并不要求实施或具备所有示出的系统。可以替代地实施或具备更多或更少的系统。

特别地,根据本公开的实施例,上文参考流程图描述的过程可以被实现为计算机软件程序。例如,本公开的实施例包括一种计算机程序产品,其包括承载在计算机可读介质上的计算机程序,该计算机程序包含用于执行流程图所示的方法的程序代码。在这样的实施例中,该计算机程序可以通过通信装置1009从网络上被下载和安装,或者从存储装置1003被安装,或者从ROM1002被安装。在该计算机程序被处理装置1001执行时,执行本公开实施例的方法中限定的上述功能。

本发明提供的电子设备,采用上述实施例中的数据库集群切换方法,解决了数据库集群的可用性差的技术问题。与现有技术相比,本发明实施例提供的电子设备的有益效果与上述实施例提供的数据库集群切换方法的有益效果相同,且该电子设备中的其他技术特征与上述实施例方法公开的特征相同,在此不做赘述。

应当理解,本公开的各部分可以用硬件、软件、固件或它们的组合来实现。在上述实施方式的描述中,具体特征、结构、材料或者特点可以在任何的一个或多个实施例或示例中以合适的方式结合。

以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以所述权利要求的保护范围为准。

本实施例五提供一种计算机可读存储介质,具有存储在其上的计算机可读程序指令,计算机可读程序指令用于执行上述实施例中的数据库集群切换方法。

本发明实施例提供的计算机可读存储介质例如可以是U盘,但不限于电、磁、光、电磁、红外线、或半导体的系统、系统或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子可以包括但不限于:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机访问存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑磁盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本实施例中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、系统或者器件使用或者与其结合使用。计算机可读存储介质上包含的程序代码可以用任何适当的介质传输,包括但不限于:电线、光缆、RF(射频)等等,或者上述的任意合适的组合。

上述计算机可读存储介质可以是电子设备中所包含的;也可以是单独存在,而未装配入电子设备中。

上述计算机可读存储介质承载有一个或者多个程序,当上述一个或者多个程序被电子设备执行时,使得电子设备:获取目标应用实例集,并确定所述目标应用实例集对应的数据库集群状态;若确定所述数据库集群状态为数据库集群异常,则对所述目标应用实例集当前连接的待切换数据库集群和对应的目标数据库集群之间的数据同步结果进行检测;在检测到所述数据同步结果为数据同步成功结果时,将所述待切换数据库集群切换至所述目标数据库集群,以通过所述目标数据库集群向所述目标应用实例集提供服务。

可以以一种或多种程序设计语言或其组合来编写用于执行本公开的操作的计算机程序代码,上述程序设计语言包括面向对象的程序设计语言—诸如Java、Smalltalk、C++,还包括常规的过程式程序设计语言—诸如“C”语言或类似的程序设计语言。程序代码可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络——包括局域网(LAN)或广域网(WAN)—连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。

附图中的流程图和框图,图示了按照本发明各种实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段、或代码的一部分,该模块、程序段、或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个接连地表示的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。

描述于本公开实施例中所涉及到的模块可以通过软件的方式实现,也可以通过硬件的方式来实现。其中,模块的名称在某种情况下并不构成对该单元本身的限定。

本发明提供的计算机可读存储介质,存储有用于执行上述数据库集群切换方法的计算机可读程序指令,解决了数据库集群的可用性差的技术问题。与现有技术相比,本发明实施例提供的计算机可读存储介质的有益效果与上述实施例提供的数据库集群切换方法的有益效果相同,在此不做赘述。

本申请实施例六还提供一种计算机程序产品,包括计算机程序,所述计算机程序被处理器执行时实现如上述的数据库集群切换方法的步骤。

本申请提供的计算机程序产品解决了数据库集群的可用性差的技术问题。与现有技术相比,本发明实施例提供的计算机程序产品的有益效果与上述实施例提供的数据库集群切换方法的有益效果相同,在此不做赘述。

以上仅为本申请的优选实施例,并非因此限制本申请的专利范围,凡是利用本申请说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,均同理包括在本申请的专利处理范围内。

相关技术
  • 一种浴室加热装置和用于控制浴室加热装置的方法、设备、电子设备及计算机可读存储介质
  • 快速切换装置的防误起动方法、装置与机器可读存储介质
  • 模态框构建方法、装置、电子设备、计算机可读存储介质
  • 日志信息处理方法、装置、电子设备及可读存储介质
  • 电子设备、音量调节方法及装置、计算机可读存储介质
  • 集群切换方法、集群切换装置、电子设备及可读存储介质
  • 页面切换方法、页面切换装置、电子设备和可读存储介质
技术分类

06120116505126