数据库高可用实现方法、装置、数据库架构、设备和产品与流程

未命名 09-22 阅读:63 评论:0


1.本技术涉及数据库技术领域,尤其涉及一种数据库高可用实现方法、装置、数据库架构、设备和产品。


背景技术:

2.在通用的mysql高可用架构中,一般使用keepalived+mysql+mha的部署方式,在这种数据库架构中,keepalived部署在mysql的主机上,以提供vip功能;同时keepalived配置脚本,去检测mysql的服务状态,当mysql出现异常宕机时,keepalived会将vip切换到mysql的从库,mha去实现mysql的主从切换,以实现mysql数据库的高可用。
3.然而,mysql主机cpu异常、内存异常、磁盘读写异常等情况,并不会触发mysql的主从切换,只有当mysql主机宕机或进程不可用时,才会触发主从切换;同时,现有技术中的数据库架构依赖keepalived的自动检测机制,一旦keepalived之间的心跳链接出现异常,那么会导致无法执行mysql切换脚本;keepalived出现异常,但mysql数据库正常时,也会触发vip的漂移以及mysql数据库的切换。综上,现有的数据库高可用实现方法的准确率不高,且容错率也不高。


技术实现要素:

4.本技术提供一种数据库高可用实现方法、装置、电子设备和计算机程序产品,用以实现高准确率和高容错率的数据库高可用方法。
5.本技术提供一种数据库高可用实现方法,应用于数据库架构,所述数据库架构包括主节点集群和从节点集群,所述主节点集群包括主节点、备份主节点、第一主代理节点和第一备份代理节点,所述从节点集群包括多个从节点、第二主代理节点和第二备份代理节点,所述方法包括:
6.获取所述数据库架构中各节点的状态信息;
7.对所述状态信息进行异常分析,得到异常分析结果;
8.基于所述异常分析结果,对所述数据库架构进行节点切换,所述节点切换的处理流程包括主节点的主备切换、主节点的主从切换、从节点集群内的切换、代理节点的主备切换和无节点切换中的至少一种。
9.根据本技术提供的一种数据库高可用实现方法,若所述异常分析结果为主节点发生异常,所述对所述数据库架构进行节点切换,包括:
10.获取所述主节点和所述备份主节点的数据同步状态;
11.基于所述数据同步状态,对所述主节点进行节点切换。
12.根据本技术提供的一种数据库高可用实现方法,若所述数据同步状态为数据完全同步,所述对所述主节点进行节点切换,包括:
13.将所述主节点切换至所述备份主节点,并重新生成所述备份主节点到所述从节点集群的主从关系;
14.将所述第一主代理节点的负载指向所述备份主节点,并将所述主节点从所述主节点集群中踢出;
15.若所述数据同步状态为数据不同步,所述对所述主节点进行节点切换,包括:
16.停止所述主节点和所述备份主节点的主从关系,并对所述备份主节点和所述主节点进行一致性处理,以使所述备份主节点与所述主节点的数据同步;
17.将所述主节点切换至所述备份主节点,并重新生成所述备份主节点到所述从节点集群的主从关系;
18.将所述第一主代理节点的负载指向所述备份主节点,并将所述主节点从所述主节点集群中踢出;
19.若所述数据同步状态为数据同步存在问题,所述对所述主节点进行节点切换,包括:
20.在所述从节点集群中确定出与所述主节点数据同步状态最接近的目标从节点;
21.对所述目标从节点和所述主节点进行一致性处理,以使所述目标从节点与所述主节点的数据同步;
22.将所述主节点切换至所述目标从节点,并重新生成所述目标从节点到所述从节点集群的主从关系;
23.将所述第一主代理节点的负载指向所述目标从节点,并将所述主节点和所述备份主节点从所述主节点集群中踢出。
24.根据本技术提供的一种数据库高可用实现方法,若所述异常分析结果为从节点发生异常,所述对所述数据库架构进行节点切换,包括:
25.将发生异常的从节点从所述从节点集群中踢出,并将所述发生异常的从节点从所述第二主代理节点和所述第二备份代理节点的负载配置中删除。
26.根据本技术提供的一种数据库高可用实现方法,若所述异常分析结果为主代理节点发生异常,所述对所述数据库架构进行节点切换,包括:
27.将发生异常的主代理节点进行停止处理,并清除所述发生异常的主代理节点所绑定的虚拟ip;
28.将所述虚拟ip配置到所述发生异常的主代理节点对应的备份代理节点。
29.根据本技术提供的一种数据库高可用实现方法,所述数据库架构中各节点均部署有agent模块;
30.所述获取所述数据库架构中各节点的状态信息,包括:
31.通过各agent模块,采集所述数据库架构中各节点的状态信息。
32.本技术还提供一种数据库高可用实现装置,部署于数据库架构,所述数据库架构包括主节点集群和从节点集群,所述主节点集群包括主节点、备份主节点、第一主代理节点和第一备份代理节点,所述从节点集群包括多个从节点、第二主代理节点和第二备份代理节点,所述装置包括:
33.获取模块,用于获取所述数据库架构中各节点的状态信息;
34.分析模块,用于对所述状态信息进行异常分析,得到异常分析结果;
35.切换模块,用于基于所述异常分析结果,对所述数据库架构进行节点切换,所述节点切换的处理流程包括主节点的主备切换、主节点的主从切换、从节点集群内的切换、代理
节点的主备切换和无节点切换中的至少一种。
36.本技术还提供一种数据库架构,所述数据库架构包括主节点集群、从节点集群和数据库高可用实现装置,所述主节点集群包括主节点、备份主节点、第一主代理节点和第一备份代理节点,所述从节点集群包括多个从节点、第二主代理节点和第二备份代理节点;
37.所述数据库高可用实现装置包括:
38.获取模块,用于获取所述数据库架构中各节点的状态信息;
39.分析模块,用于对所述状态信息进行异常分析,得到异常分析结果;
40.切换模块,用于基于所述异常分析结果,对所述数据库架构进行节点切换,所述节点切换的处理流程包括主节点的主备切换、主节点的主从切换、从节点集群内的切换、代理节点的主备切换和无节点切换中的至少一种。
41.本技术还提供一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现如上述任一种所述数据库高可用实现方法。
42.本技术还提供一种计算机程序产品,包括计算机程序,所述计算机程序被处理器执行时实现如上述任一种所述数据库高可用实现方法。
43.本技术提供的数据库高可用实现方法、装置、数据库架构、设备和产品,该方法应用于数据库架构,数据库架构包括主节点集群和从节点集群,主节点集群包括主节点、备份主节点、第一主代理节点和第一备份代理节点,从节点集群包括多个从节点、第二主代理节点和第二备份代理节点,基于此,在数据库架构中引入备份主节点,以及在主节点集群和从节点集群中均引入代理节点,从而在弃用keepalived的情况下,仍可以实现vip功能,进而实现keepalived与数据库的分离,以用来解决数据库与vip之间的耦合关系,最终提高数据库高可用实现方法的准确率,且各集群中代理节点均采用主备方式部署,从而提高数据库高可用实现方法的容错率;通过获取数据库架构中各节点的状态信息,并对状态信息进行异常分析,得到异常分析结果,从而可以对数据库架构进行全面的异常分析,相比只对主节点的服务状态进行异常分析,本技术可以进一步提高数据库高可用实现方法的准确率和容错率;此外,节点切换的处理流程包括主节点的主备切换、主节点的主从切换、从节点集群内的切换、代理节点的主备切换和无节点切换中的至少一种,相对只对主节点进行主从切换,本技术可以进一步提高数据库高可用实现方法的准确率和容错率。综上,本技术可以实现高准确率和高容错率的数据库高可用方法。
附图说明
44.为了更清楚地说明本技术或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本技术的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
45.图1为本技术提供的数据库高可用实现方法的流程示意图之一;
46.图2为本技术提供的数据库高可用实现方法的流程示意图之二;
47.图3为本技术提供的数据库高可用实现方法的流程示意图之三;
48.图4为本技术提供的数据库高可用实现方法的流程示意图之四;
49.图5为本技术提供的数据库高可用实现装置的结构示意图;
50.图6为本技术提供的数据库架构的结构示意图;
51.图7为本技术提供的电子设备的结构示意图。
具体实施方式
52.为使本技术的目的、技术方案和优点更加清楚,下面将结合本技术中的附图,对本技术中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本技术一部分实施例,而不是全部的实施例。基于本技术中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本技术保护的范围。
53.现有技术中,在通用的mysql高可用架构中,一般使用keepalived+mysql+mha的部署方式,在这种数据库架构中,keepalived部署在mysql的主机上,以提供vip功能;同时keepalived配置脚本,去检测mysql的服务状态,当mysql出现异常宕机时,keepalived会将vip切换到mysql的从库,mha去实现mysql的主从切换,以实现mysql数据库的高可用。
54.然而,mysql主机cpu异常、内存异常、磁盘读写异常等情况,并不会触发mysql的主从切换,只有当mysql主机宕机或进程不可用时,才会触发主从切换;同时,现有技术中的数据库架构依赖keepalived的自动检测机制,一旦keepalived之间的心跳链接出现异常,那么会导致无法执行mysql切换脚本;keepalived出现异常,但mysql数据库正常时,也会触发vip的漂移以及mysql数据库的切换。综上,现有的数据库高可用实现方法的准确率不高,且容错率也不高。
55.综上,如何提高数据库高可用实现方法的准确率和容错率,是目前亟需解决的问题。
56.针对上述问题,本技术提供了一种数据库高可用实现方法,该方法应用于数据库架构,所述数据库架构包括主节点集群和从节点集群,所述主节点集群包括主节点、备份主节点、第一主代理节点和第一备份代理节点,所述从节点集群包括多个从节点、第二主代理节点和第二备份代理节点。
57.此处,主节点为数据库集群中的主机节点,即为数据库集群中的主库;备份主节点为数据库集群中备份的主机节点,即为数据库集群中备份的主库。
58.此处,代理节点为数据库集群中的代理服务器,其可以实现vip(虚拟ip)功能。具体地,在代理服务器上,直接以命令形式(例如,ifconfig eth0:0 192.168.1.56netmask 255.255.252.0)在eth0网卡上绑定多个ip,以实现vip的功能。
59.在一实施例中,代理节点可以为nginx代理服务器。当然,也可以为其他代理服务器,本技术实施例对此不作具体限定。
60.可以理解的是,在数据库架构中,引入备份主节点和代理节点,就可以实现vip功能,从而可以弃用keepalived,进而避免keepalived之间的心跳链接出现异常,那么会导致无法执行数据库的切换,且避免keepalived出现异常,但数据库正常时,也会触发vip的漂移以及数据库的切换。因此,实现keepalived与数据库分离,可以用来解决数据库与vip之间的耦合关系,从而提高数据库高可用实现方法的准确率。
61.此处,第一备份代理节点为第一主代理节点的备份节点。第二备份代理节点为第二主代理节点的备份节点。
62.此处,从节点为数据库集群中的从机节点,即为数据库集群中的从库;多个从节点的数量可以根据实际需求进行设定,本技术实施例对此不作限定。
63.为便于理解,在本实施例及以下各实施例,数据库架构以mysql架构为例进行说明,主节点以mysql master为例进行说明,备份主节点以mysql master backup为例进行说明,第一主代理节点以nginx1为例进行说明,第一备份代理节点以nginx2为例进行说明,各从节点以mysql slave为例进行说明,第二主代理节点以slave nginx1为例进行说明,第二备份代理节点以slave nginx2为例进行说明。
64.图1为本技术提供的数据库高可用实现方法的流程示意图之一,如图1所示,本技术提供的数据库高可用实现方法,包括:
65.步骤110,获取所述数据库架构中各节点的状态信息。
66.此处,各节点包括主节点、备份主节点、第一主代理节点、第一备份代理节点、多个从节点、第二主代理节点和第二备份代理节点。在一具体实施例中,各节点包括主节点、第一主代理节点、多个从节点和第二主代理节点即可。
67.此处,状态信息包括节点的各项信息。在一具体实施例中,状态信息包括服务状态信息和主机状态信息。
68.具体地,状态信息可以包括主机状态信息,例如cpu利用率、内存使用情况、磁盘信息、磁盘利用率、进程名称、进程占用cpu、进程占用内存、磁盘读写速度、cpu iowait time等信息。状态还可以服务状态信息,例如数据库的执行失败数、访问失败数、访问超时数、版本信息、连接信息、慢查询速率、读取/写入速率、更新速率、缓存线程数量、运行线程数量、执行速率、打开的连接数、客户端接收/发送的数据大小、内存/cpu使用情况、数据库锁、deadlock等信息。状态信息还可以包括网卡ip,以供检测ip是否可用。状态信息还包括代理节点的进程状态,以供对代理节点进行异常检测。状态信息还包括数据库主从之间状态,包括主从关系图谱、主从同步复制状态、主从复制延迟时间、主从数据一致性信息等。状态信息还包括数据库的二进制日志,以供将二进制日志中记录的执行语句,以及对应语句的position值,全部进行保存和备份,从而防止丢失数据。
69.此外,实时监测数据库的二进制日志,还原二进制日志中记录的数据库语句,并记录对应语句的position值、执行时间、日志文件等信息,将信息全部记录并传输统一位置进行保存。
70.此外,在上述步骤110之前,该第一主代理节点的负载指向主节点,且其临时绑定有vip;该第二主代理节点的负载指向从节点集群中各从节点,且其临时绑定有vip。
71.步骤120,对所述状态信息进行异常分析,得到异常分析结果。
72.具体地,对各节点的状态信息进行异常分析,确定各节点是否发生异常;若发生异常,则确定发生异常的异常节点,并根据异常节点确定异常分析结果;若未发生异常,则确定异常分析结果为未发生异常。
73.更为具体地,对所述状态信息中的服务状态信息进行异常分析,若某一节点的服务状态异常时,则确定异常分析结果为该某一节点出现异常;或者,对所述状态信息中的主机状态信息进行异常分析,若某一节点的主机发生异常,则根据主机的异常状态产生告警,若告警中没有出现收敛,则确定异常分析结果为该某一节点出现异常。
74.更为具体地,根据采集到的状态信息,基于运维大数据,对网络、主机、数据库等多
维指标进行关联分析,通过对大量指标、日志数据进行多维、实时、动态的智能分析,进行实时的异常检测。
75.在一具体实施例中,将所述状态信息输入至异常检测模型,得到所述异常检测模型输出的异常分析结果。
76.其中,可以基于arima、holt-winter、lstm等时序算法分析指标序列的周期、趋势等特征,从而拟合时序曲线并预测;基于gbdt、xgboost、lightgbm等决策树算法,训练得到指标劣化导致各类故障事故关联概率模型,从而基于预测得到的劣化指标预测故障事件。
77.进一步地,可以针对不同类型的监控点,基于历史性能数据的数据特征适配不同算法,挖掘数据波动趋势,离线训练并构建该异常检测模型,通过异常检测模型实时检测监控点的数据异常,协助快速发现数据库架构的异常。
78.进一步地,结合阈值的设置,精准识别异常的能力,依据系统可用性、性能情况等指标对数据库架构中的每个节点进行健康状态预测,进而得到异常分析结果。
79.步骤130,基于所述异常分析结果,对所述数据库架构进行节点切换,所述节点切换的处理流程包括主节点的主备切换、主节点的主从切换、从节点集群内的切换、代理节点的主备切换和无节点切换中的至少一种。
80.具体地,若异常分析结果为主节点发生异常,则对主节点进行主备切换或主从切换;若异常分析结果为从节点发生异常,则对发生异常的从节点在从节点集群内进行切换;若异常分析结果为主代理节点发生异常,则对主代理节点进行主备切换;若异常分析结果为未发生异常,则无节点切换。
81.此处,主节点的主备切换为将主节点集群中的主节点与备份主节点进行切换。主节点的主从切换为将主节点集群中的主节点与从节点集群中的从节点进行切换。从节点集群内的切换为将发生异常的从节点从从节点集群内踢出。代理节点的主备切换为将主代理节点切换为对应的备份代理节点。无节点切换为各节点未发生异常,无需做任何处理。
82.本技术实施例提供的数据库高可用实现方法,应用于数据库架构,数据库架构包括主节点集群和从节点集群,主节点集群包括主节点、备份主节点、第一主代理节点和第一备份代理节点,从节点集群包括多个从节点、第二主代理节点和第二备份代理节点,基于此,在数据库架构中引入备份主节点,以及在主节点集群和从节点集群中均引入代理节点,从而在弃用keepalived的情况下,仍可以实现vip功能,进而实现keepalived与数据库的分离,以用来解决数据库与vip之间的耦合关系,最终提高数据库高可用实现方法的准确率,且各集群中代理节点均采用主备方式部署,从而提高数据库高可用实现方法的容错率;通过获取数据库架构中各节点的状态信息,并对状态信息进行异常分析,得到异常分析结果,从而可以对数据库架构进行全面的异常分析,相比只对主节点的服务状态进行异常分析,本技术实施例可以进一步提高数据库高可用实现方法的准确率和容错率;此外,节点切换的处理流程包括主节点的主备切换、主节点的主从切换、从节点集群内的切换、代理节点的主备切换和无节点切换中的至少一种,相对只对主节点进行主从切换,本技术实施例可以进一步提高数据库高可用实现方法的准确率和容错率。综上,本技术实施例可以实现高准确率和高容错率的数据库高可用方法。
83.基于上述实施例,图2为本技术提供的数据库高可用实现方法的流程示意图之二,如图2所示,若所述异常分析结果为主节点发生异常,上述步骤130中,对所述数据库架构进
行节点切换,包括:
84.步骤131,获取所述主节点和所述备份主节点的数据同步状态。
85.此处,若异常分析结果为主节点发生异常,则主节点的异常状态可以包括:主节点的cpu、内存、磁盘读写速度等主机状态信息异常,根据主机状态信息产生告警信息,且告警持续不能收敛,和/或,主节点服务状态异常,不能正常提供服务,和/或,主节点存在大量死锁,不能正常提供业务,当然,还包括其他异常状态,此处不再一一赘述。
86.例如,主节点的cpu、内存、磁盘io、网络信息状态信息、数据库锁信息等,与性能指标中设置的预设性能指标进行对比,结合阈值设置,进行综合判定主节点的健康状态,如果性能指标超出阈值,则认为主节点出现异常,产生告警,若告警没有出现收敛,如cpu长时间使用率达到90%以上、内存消耗殆尽、磁盘读写异常、数据库瞬间流量过大、主节点出现大量死锁等,可以判定主节点发生异常。
87.此处,数据同步状态可以包括但不限于:数据完全同步、数据不同步、数据同步存在问题等等。
88.其中,数据完全同步表示主节点可以与备份主节点马上实现切换;数据不同步表示备份主节点可以在短时间与主节点实现数据同步;数据同步存在问题表示备份主节点与主节点无法实现数据同步或短时间无法实现数据同步。
89.步骤132,基于所述数据同步状态,对所述主节点进行节点切换。
90.具体地,不同的数据同步状态,对主节点进行节点切换的步骤不一样。
91.本技术实施例提供的方法,获取主节点和备份主节点的数据同步状态,从而基于数据同步状态确定主节点的节点切换步骤,相对主节点发生异常后,直接以一种节点切换方式进行切换,本技术实施例的节点切换方式更为准确,从而进一步地提高数据库高可用实现方法的准确率和容错率。
92.基于上述任一实施例,若数据同步状态为数据完全同步,在上述步骤132中,对所述主节点进行节点切换,包括:
93.将所述主节点切换至所述备份主节点,并重新生成所述备份主节点到所述从节点集群的主从关系;
94.将所述第一主代理节点的负载指向所述备份主节点,并将所述主节点从所述主节点集群中踢出。
95.需要说明的是,将主节点切换至备份主节点,则备份主节点被确定为数据库的主节点,此时,应该生成备份主节点到从节点集群的主从关系,即备份主节点作为从节点集群中各从节点对应的数据库主节点。可以理解的是,此时主节点已不是从节点集群中各从节点对应的数据库主节点。
96.此外,还需要说明的是,将第一主代理节点的负载指向备份主节点,从而实现vip的切换功能。由于主节点发生异常,因此,将主节点从主节点集群中踢出。
97.进一步地,在将主节点从主节点集群中踢出后,产生告警信息,并将告警信息进行输出,以提示运维人员,从而使运维人员对主节点进行维护。
98.进一步地,在主节点维护后,且主节点正常后,可以将主节点重新加入主节点集群。
99.基于上述任一实施例,若所述数据同步状态为数据不同步,在上述步骤132中,对
所述主节点进行节点切换,包括:
100.停止所述主节点和所述备份主节点的主从关系,并对所述备份主节点和所述主节点进行一致性处理,以使所述备份主节点与所述主节点的数据同步;
101.将所述主节点切换至所述备份主节点,并重新生成所述备份主节点到所述从节点集群的主从关系;
102.将所述第一主代理节点的负载指向所述备份主节点,并将所述主节点从所述主节点集群中踢出。
103.需要说明的是,停止主节点和备份主节点的主从关系,可以防止数据不同步的两节点,继续进行同步。
104.此处,对备份主节点和主节点进行一致性处理的具体步骤为:对比主节点和备份主节点的数据同步情况,从而基于数据同步情况查询记录的数据库语句执行信息,进而将二者的数据追加到一致。
105.此外,还需要说明的是,将主节点切换至备份主节点,则备份主节点被确定为数据库的主节点,此时,应该生成备份主节点到从节点集群的主从关系,即备份主节点作为从节点集群中各从节点对应的数据库主节点。可以理解的是,此时主节点已不是从节点集群中各从节点对应的数据库主节点。
106.此外,还需要说明的是,将第一主代理节点的负载指向备份主节点,从而实现vip的切换功能。由于主节点发生异常,因此,将主节点从主节点集群中踢出。
107.进一步地,在将主节点从主节点集群中踢出后,产生告警信息,并将告警信息进行输出,以提示运维人员,从而使运维人员对主节点进行维护。
108.进一步地,在主节点维护后,且主节点正常后,可以将主节点重新加入主节点集群。
109.基于上述任一实施例,若所述数据同步状态为数据同步存在问题,在上述步骤132中,对所述主节点进行节点切换,包括:
110.在所述从节点集群中确定出与所述主节点数据同步状态最接近的目标从节点;
111.对所述目标从节点和所述主节点进行一致性处理,以使所述目标从节点与所述主节点的数据同步;
112.将所述主节点切换至所述目标从节点,并重新生成所述目标从节点到所述从节点集群的主从关系;
113.将所述第一主代理节点的负载指向所述目标从节点,并将所述主节点和所述备份主节点从所述主节点集群中踢出。
114.此处,数据同步存在问题表示备份主节点与主节点无法实现数据同步或无法短时间实现数据同步等等。例如,超过30分钟没有实现数据同步,或者需要追加执行的语句过多,如需要追加执行的语句超过50条。
115.需要说明的是,在从节点集群中确定出与主节点数据同步状态最接近的目标从节点,可以减少后续一致性处理的时间。
116.此处,对目标从节点和主节点进行一致性处理的具体步骤为:对比主节点和目标从节点的数据同步情况,从而基于数据同步情况查询记录的数据库语句执行信息,进而将二者的数据追加到一致。
117.此外,还需要说明的是,将主节点切换至目标从节点,则目标从节点被确定为数据库的主节点,此时,应该生成目标从节点到从节点集群的主从关系,即目标从节点作为从节点集群中各从节点对应的数据库主节点。可以理解的是,此时主节点已不是从节点集群中各从节点对应的数据库主节点。
118.此外,还需要说明的是,将第一主代理节点的负载指向目标从节点,从而实现vip的切换功能。由于主节点发生异常,因此,将主节点从主节点集群中踢出,同时,由于备份主节点的数据同步存在问题,因此,也将备份主节点从主节点集群中踢出。
119.进一步地,在将主节点和备份主节点从主节点集群中踢出后,产生告警信息,并将告警信息进行输出,以提示运维人员,从而使运维人员对主节点和备份主节点进行维护。
120.进一步地,在主节点维护后,且主节点正常后,可以将主节点重新加入主节点集群。在备份主节点维护后,且备份主节点正常后,可以将备份主节点重新加入主节点集群。
121.本技术实施例提供的方法,对于不同的数据同步状态,有不同的节点切换方式,因此,本技术实施例的节点切换方式更为准确,从而进一步地提高数据库高可用实现方法的准确率和容错率。此外,在不同的节点切换方式中,均将主节点切换至正常的节点,从而保证数据库的高可用。
122.基于上述任一实施例,图3为本技术提供的数据库高可用实现方法的流程示意图之三,如图3所示,若所述异常分析结果为从节点发生异常,上述步骤130中,对所述数据库架构进行节点切换,包括:
123.步骤133,将发生异常的从节点从所述从节点集群中踢出,并将所述发生异常的从节点从所述第二主代理节点和所述第二备份代理节点的负载配置中删除。
124.此处,若异常分析结果为从节点发生异常,则从节点的异常状态可以包括:从节点的cpu、内存、磁盘读写速度等主机状态信息异常,根据主机状态信息产生告警信息,且告警持续不能收敛,和/或,从节点出现主从同步延迟严重、同步状态异常,和/或,从节点出现宕机,和/或,服务不可用;当然,还包括其他异常状态,此处不再一一赘述。
125.需要说明的是,由于从节点发生异常,因此,将发生异常的从节点从从节点集群中踢出。
126.此外,还需要说明的是,将发生异常的从节点从第二主代理节点和第二备份代理节点的负载配置中删除,以使业务不会再分到该发生异常的从节点。
127.进一步地,在将发生异常的从节点从从节点集群中踢出后,产生告警信息,并将告警信息进行输出,以提示运维人员,从而使运维人员对发生异常的从节点进行维护。
128.进一步地,在发生异常的从节点维护后,且该从节点正常后,可以将该从节点重新加入从节点集群。具体地,从节点恢复正常并检测通过后,将该从节点重新加入到第二主代理节点和第二备份代理节点的负载配置中。
129.进一步地,在将从节点重新加入到第二主代理节点和第二备份代理节点的负载配置后,产生告警信息,并将告警信息进行输出,以提示运维人员已重新加入。
130.可以理解的是,在从节点发生异常时,不需要改变主从关系,仅在从节点集群中进行智能切换即可。
131.本技术实施例提供的方法,在从节点发生异常后,可以对从节点进行切换,相对只对主节点进行切换,本技术实施例可以进一步提高数据库高可用实现方法的准确率和容错
率。同时,在从节点发生异常时,不需要改变主从关系,只需将发生异常的从节点从代理节点的负载配置中删除,从而提高切换效率。
132.基于上述任一实施例,图4为本技术提供的数据库高可用实现方法的流程示意图之四,如图4所示,若所述异常分析结果为主代理节点发生异常,上述步骤130中,对所述数据库架构进行节点切换,包括:
133.步骤134,将发生异常的主代理节点进行停止处理,并清除所述发生异常的主代理节点所绑定的虚拟ip;
134.步骤135,将所述虚拟ip配置到所述发生异常的主代理节点对应的备份代理节点。
135.此处,若异常分析结果为主代理节点发生异常,则主代理节点的异常状态可以包括:代理节点的cpu、内存、磁盘io、网络流量、处理用户请求延迟过高、单位分钟内出现大量错误码、瞬时流量多大等主机状态信息异常,根据主机状态信息产生告警信息,且告警持续不能收敛,和/或,出现ip、vip、端口任意一点出现异常;当然,还包括其他异常状态,此处不再一一赘述。
136.例如,判断代理节点的健康状态,及健康发展趋势,如果出现cpu使用率持续上升、内存使用持续高位、磁盘io读写异常、网络流量异常、代理节点的处理用户请求延迟过高、代理节点单位分钟内出现大量错误码,代理节点瞬时流量过大等问题,结合阈值设置,进行综合判定,如果出现如cpu使用率90%以上,或代理节点单位分钟内出现大量的5xx的错误码,则可以预判定代理节点异常,产生告警,若告警没有出现收敛,则可以判定代理节点发生异常。
137.需要说明的是,由于主代理节点发生异常,因此,将发生异常的主代理节点进行停止处理。此处,发生异常的主代理节点可以为第一主代理节点或第二主代理节点。
138.此外,还需要说明的是,在上述步骤110之前,主代理节点绑定有虚拟ip(vip)。因此,在主代理节点发生异常时,需要清除发生异常的主代理节点所绑定的虚拟ip,例如,清除eth0上临时绑定的vip。
139.此外,还需要说明的是,将虚拟ip配置到发生异常的主代理节点对应的备份代理节点,以使备份代理节点开始接替主代理节点进行工作,此时,若发生异常的主代理节点为第一主代理节点,则此时第一备份代理节点负载指向主节点。
140.本技术实施例提供的方法,在主代理节点发生异常后,可以对主代理节点进行切换,相对只对主节点进行切换,本技术实施例可以进一步提高数据库高可用实现方法的准确率和容错率。
141.基于上述任一实施例,所述数据库架构中各节点均部署有agent模块;上述步骤110包括:
142.通过各agent模块,采集所述数据库架构中各节点的状态信息。
143.此处,agent模块用于采集节点的各项信息。具体地,agent模块用于采集以下信息:主机状态信息,例如cpu利用率、内存使用情况、磁盘信息、磁盘利用率、进程名称、进程占用cpu、进程占用内存、磁盘读写速度、cpu iowait time等信息;服务状态信息,例如数据库的执行失败数、访问失败数、访问超时数、版本信息、连接信息、慢查询速率、读取/写入速率、更新速率、缓存线程数量、运行线程数量、执行速率、打开的连接数、客户端接收/发送的数据大小、内存/cpu使用情况、数据库锁、deadlock等信息;网卡ip,以供检测ip是否可用;
代理节点的进程状态,以供对代理节点进行异常检测;数据库主从之间状态,包括主从关系图谱、主从同步复制状态、主从复制延迟时间、主从数据一致性信息等;数据库的二进制日志,以供将二进制日志中记录的执行语句,以及对应语句的position值,全部进行保存和备份,从而防止丢失数据。
144.此外,可以通过agent模块,实时监测数据库的二进制日志,还原二进制日志中记录的数据库语句,并记录对应语句的position值、执行时间、日志文件等信息,将信息全部记录并传输统一位置进行保存。
145.本技术实施例提供的方法,通过agent模块,获取数据库架构中各节点的状态信息,从而可以更全面地获取各节点的各项信息,进而可以进一步提高数据库高可用实现方法的准确率和容错率。
146.下面对本技术提供的数据库高可用实现装置进行描述,下文描述的数据库高可用实现装置与上文描述的数据库高可用实现方法可相互对应参照。
147.该装置部署于数据库架构,所述数据库架构包括主节点集群和从节点集群,所述主节点集群包括主节点、备份主节点、第一主代理节点和第一备份代理节点,所述从节点集群包括多个从节点、第二主代理节点和第二备份代理节点,图5为本技术提供的数据库高可用实现装置的结构示意图,如图5所示,该装置包括:
148.获取模块510,用于获取所述数据库架构中各节点的状态信息;
149.分析模块520,用于对所述状态信息进行异常分析,得到异常分析结果;
150.切换模块530,用于基于所述异常分析结果,对所述数据库架构进行节点切换,所述节点切换的处理流程包括主节点的主备切换、主节点的主从切换、从节点集群内的切换、代理节点的主备切换和无节点切换中的至少一种。
151.基于上述任一实施例,若所述异常分析结果为主节点发生异常,切换模块530还用于:
152.获取所述主节点和所述备份主节点的数据同步状态;
153.基于所述数据同步状态,对所述主节点进行节点切换。
154.基于上述任一实施例,若所述数据同步状态为数据完全同步,切换模块530还用于:
155.将所述主节点切换至所述备份主节点,并重新生成所述备份主节点到所述从节点集群的主从关系;
156.将所述第一主代理节点的负载指向所述备份主节点,并将所述主节点从所述主节点集群中踢出;
157.若所述数据同步状态为数据不同步,切换模块530还用于:
158.停止所述主节点和所述备份主节点的主从关系,并对所述备份主节点和所述主节点进行一致性处理,以使所述备份主节点与所述主节点的数据同步;
159.将所述主节点切换至所述备份主节点,并重新生成所述备份主节点到所述从节点集群的主从关系;
160.将所述第一主代理节点的负载指向所述备份主节点,并将所述主节点从所述主节点集群中踢出;
161.若所述数据同步状态为数据同步存在问题,切换模块530还用于:
162.在所述从节点集群中确定出与所述主节点数据同步状态最接近的目标从节点;
163.对所述目标从节点和所述主节点进行一致性处理,以使所述目标从节点与所述主节点的数据同步;
164.将所述主节点切换至所述目标从节点,并重新生成所述目标从节点到所述从节点集群的主从关系;
165.将所述第一主代理节点的负载指向所述目标从节点,并将所述主节点和所述备份主节点从所述主节点集群中踢出。
166.基于上述任一实施例,若所述异常分析结果为从节点发生异常,切换模块530还用于:
167.将发生异常的从节点从所述从节点集群中踢出,并将所述发生异常的从节点从所述第二主代理节点和所述第二备份代理节点的负载配置中删除。
168.基于上述任一实施例,若所述异常分析结果为主代理节点发生异常,切换模块530还用于:
169.将发生异常的主代理节点进行停止处理,并清除所述发生异常的主代理节点所绑定的虚拟ip;
170.将所述虚拟ip配置到所述发生异常的主代理节点对应的备份代理节点。
171.基于上述任一实施例,所述数据库架构中各节点均部署有agent模块;
172.获取模块510还用于:
173.通过各agent模块,采集所述数据库架构中各节点的状态信息。
174.下面对本技术提供的数据库架构进行描述,下文描述的数据库架构与上文描述的数据库高可用实现方法可相互对应参照。
175.图6为本技术提供的数据库架构的结构示意图,如图6所示,该数据库架构包括:主节点集群、从节点集群和数据库高可用实现装置,所述主节点集群包括主节点、备份主节点、第一主代理节点和第一备份代理节点,所述从节点集群包括多个从节点、第二主代理节点和第二备份代理节点;
176.所述数据库高可用实现装置包括:
177.获取模块,用于获取所述数据库架构中各节点的状态信息;
178.分析模块,用于对所述状态信息进行异常分析,得到异常分析结果;
179.切换模块,用于基于所述异常分析结果,对所述数据库架构进行节点切换,所述节点切换的处理流程包括主节点的主备切换、主节点的主从切换、从节点集群内的切换、代理节点的主备切换和无节点切换中的至少一种。
180.此处,数据库高可用实现装置与上文描述的数据库高可用实现装置可相互对应参照,此处不再一一赘述。
181.图7示例了一种电子设备的实体结构示意图,如图7所示,该电子设备可以包括:处理器(processor)710、通信接口(communications interface)720、存储器(memory)730和通信总线740,其中,处理器710,通信接口720,存储器730通过通信总线740完成相互间的通信。处理器710可以调用存储器730中的逻辑指令,以执行数据库高可用实现方法,该方法应用于数据库架构,所述数据库架构包括主节点集群和从节点集群,所述主节点集群包括主节点、备份主节点、第一主代理节点和第一备份代理节点,所述从节点集群包括多个从节
点、第二主代理节点和第二备份代理节点,该方法包括:接收搜索请求,并基于所述搜索请求搜索数据得到搜索结果;基于当前分页列表的条目数量,从所述搜索结果中筛选出分页结果;从其他端中获取所述分页结果对应的第一实时状态数据;基于所述第一实时状态数据,确定所述当前分页列表的分页数据,并将所述分页数据进行缓存。
182.此外,上述的存储器730中的逻辑指令可以通过软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本技术的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本技术各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:u盘、移动硬盘、只读存储器(rom,read-only memory)、随机存取存储器(ram,random access memory)、磁碟或者光盘等各种可以存储程序代码的介质。
183.另一方面,本技术还提供一种计算机程序产品,所述计算机程序产品包括计算机程序,计算机程序可存储在非暂态计算机可读存储介质上,所述计算机程序被处理器执行时,计算机能够执行上述各方法所提供的数据库高可用实现方法,该方法应用于数据库架构,所述数据库架构包括主节点集群和从节点集群,所述主节点集群包括主节点、备份主节点、第一主代理节点和第一备份代理节点,所述从节点集群包括多个从节点、第二主代理节点和第二备份代理节点,该方法包括:接收搜索请求,并基于所述搜索请求搜索数据得到搜索结果;基于当前分页列表的条目数量,从所述搜索结果中筛选出分页结果;从其他端中获取所述分页结果对应的第一实时状态数据;基于所述第一实时状态数据,确定所述当前分页列表的分页数据,并将所述分页数据进行缓存。
184.又一方面,本技术还提供一种非暂态计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现以执行上述各方法提供的数据库高可用实现方法,该方法应用于数据库架构,所述数据库架构包括主节点集群和从节点集群,所述主节点集群包括主节点、备份主节点、第一主代理节点和第一备份代理节点,所述从节点集群包括多个从节点、第二主代理节点和第二备份代理节点,该方法包括:接收搜索请求,并基于所述搜索请求搜索数据得到搜索结果;基于当前分页列表的条目数量,从所述搜索结果中筛选出分页结果;从其他端中获取所述分页结果对应的第一实时状态数据;基于所述第一实时状态数据,确定所述当前分页列表的分页数据,并将所述分页数据进行缓存。
185.以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性的劳动的情况下,即可以理解并实施。
186.通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到各实施方式可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件。基于这样的理解,上述技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在计算机可读存储介质中,如rom/ram、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行各个实施
例或者实施例的某些部分所述的方法。
187.最后应说明的是:以上实施例仅用以说明本技术的技术方案,而非对其限制;尽管参照前述实施例对本技术进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本技术各实施例技术方案的精神和范围。

技术特征:
1.一种数据库高可用实现方法,其特征在于,应用于数据库架构,所述数据库架构包括主节点集群和从节点集群,所述主节点集群包括主节点、备份主节点、第一主代理节点和第一备份代理节点,所述从节点集群包括多个从节点、第二主代理节点和第二备份代理节点,所述方法包括:获取所述数据库架构中各节点的状态信息;对所述状态信息进行异常分析,得到异常分析结果;基于所述异常分析结果,对所述数据库架构进行节点切换,所述节点切换的处理流程包括主节点的主备切换、主节点的主从切换、从节点集群内的切换、代理节点的主备切换和无节点切换中的至少一种。2.根据权利要求1所述的数据库高可用实现方法,其特征在于,若所述异常分析结果为主节点发生异常,所述对所述数据库架构进行节点切换,包括:获取所述主节点和所述备份主节点的数据同步状态;基于所述数据同步状态,对所述主节点进行节点切换。3.根据权利要求2所述的数据库高可用实现方法,其特征在于,若所述数据同步状态为数据完全同步,所述对所述主节点进行节点切换,包括:将所述主节点切换至所述备份主节点,并重新生成所述备份主节点到所述从节点集群的主从关系;将所述第一主代理节点的负载指向所述备份主节点,并将所述主节点从所述主节点集群中踢出;若所述数据同步状态为数据不同步,所述对所述主节点进行节点切换,包括:停止所述主节点和所述备份主节点的主从关系,并对所述备份主节点和所述主节点进行一致性处理,以使所述备份主节点与所述主节点的数据同步;将所述主节点切换至所述备份主节点,并重新生成所述备份主节点到所述从节点集群的主从关系;将所述第一主代理节点的负载指向所述备份主节点,并将所述主节点从所述主节点集群中踢出;若所述数据同步状态为数据同步存在问题,所述对所述主节点进行节点切换,包括:在所述从节点集群中确定出与所述主节点数据同步状态最接近的目标从节点;对所述目标从节点和所述主节点进行一致性处理,以使所述目标从节点与所述主节点的数据同步;将所述主节点切换至所述目标从节点,并重新生成所述目标从节点到所述从节点集群的主从关系;将所述第一主代理节点的负载指向所述目标从节点,并将所述主节点和所述备份主节点从所述主节点集群中踢出。4.根据权利要求1所述的数据库高可用实现方法,其特征在于,若所述异常分析结果为从节点发生异常,所述对所述数据库架构进行节点切换,包括:将发生异常的从节点从所述从节点集群中踢出,并将所述发生异常的从节点从所述第二主代理节点和所述第二备份代理节点的负载配置中删除。5.根据权利要求1所述的数据库高可用实现方法,其特征在于,若所述异常分析结果为
主代理节点发生异常,所述对所述数据库架构进行节点切换,包括:将发生异常的主代理节点进行停止处理,并清除所述发生异常的主代理节点所绑定的虚拟ip;将所述虚拟ip配置到所述发生异常的主代理节点对应的备份代理节点。6.根据权利要求1至5中任一项所述的数据库高可用实现方法,其特征在于,所述数据库架构中各节点均部署有agent模块;所述获取所述数据库架构中各节点的状态信息,包括:通过各agent模块,采集所述数据库架构中各节点的状态信息。7.一种数据库高可用实现装置,其特征在于,部署于数据库架构,所述数据库架构包括主节点集群和从节点集群,所述主节点集群包括主节点、备份主节点、第一主代理节点和第一备份代理节点,所述从节点集群包括多个从节点、第二主代理节点和第二备份代理节点,所述装置包括:获取模块,用于获取所述数据库架构中各节点的状态信息;分析模块,用于对所述状态信息进行异常分析,得到异常分析结果;切换模块,用于基于所述异常分析结果,对所述数据库架构进行节点切换,所述节点切换的处理流程包括主节点的主备切换、主节点的主从切换、从节点集群内的切换、代理节点的主备切换和无节点切换中的至少一种。8.一种数据库架构,其特征在于,所述数据库架构包括主节点集群、从节点集群和数据库高可用实现装置,所述主节点集群包括主节点、备份主节点、第一主代理节点和第一备份代理节点,所述从节点集群包括多个从节点、第二主代理节点和第二备份代理节点;所述数据库高可用实现装置包括:获取模块,用于获取所述数据库架构中各节点的状态信息;分析模块,用于对所述状态信息进行异常分析,得到异常分析结果;切换模块,用于基于所述异常分析结果,对所述数据库架构进行节点切换,所述节点切换的处理流程包括主节点的主备切换、主节点的主从切换、从节点集群内的切换、代理节点的主备切换和无节点切换中的至少一种。9.一种电子设备,包括存储器、处理器及存储在所述存储器上并可在所述处理器上运行的计算机程序,其特征在于,所述处理器执行所述程序时实现如权利要求1至6任一项所述数据库高可用实现方法。10.一种计算机程序产品,包括计算机程序,其特征在于,所述计算机程序被处理器执行时实现如权利要求1至6任一项所述数据库高可用实现方法。

技术总结
本申请提供一种数据库高可用实现方法、装置、数据库架构、设备和产品,该方法应用于数据库架构,所述数据库架构包括主节点集群和从节点集群,所述主节点集群包括主节点、备份主节点、第一主代理节点和第一备份代理节点,所述从节点集群包括多个从节点、第二主代理节点和第二备份代理节点,该方法包括:获取所述数据库架构中各节点的状态信息;对所述状态信息进行异常分析,得到异常分析结果;基于所述异常分析结果,对所述数据库架构进行节点切换,所述节点切换的处理流程包括主节点的主备切换、主节点的主从切换、从节点集群内的切换、代理节点的主备切换和无节点切换中的至少一种。本申请可以实现高准确率和高容错率的数据库高可用方法。可用方法。可用方法。


技术研发人员:王鑫 李奇书 田国良
受保护的技术使用者:中国移动通信集团有限公司
技术研发日:2022.03.09
技术公布日:2023/9/20
版权声明

本文仅代表作者观点,不代表航家之家立场。
本文系作者授权航家号发表,未经原创作者书面授权,任何单位或个人不得引用、复制、转载、摘编、链接或以其他任何方式复制发表。任何单位或个人在获得书面授权使用航空之家内容时,须注明作者及来源 “航空之家”。如非法使用航空之家的部分或全部内容的,航空之家将依法追究其法律责任。(航空之家官方QQ:2926969996)

航空之家 https://www.aerohome.com.cn/

航空商城 https://mall.aerohome.com.cn/

航空资讯 https://news.aerohome.com.cn/

分享:

扫一扫在手机阅读、分享本文

评论

相关推荐