本技术涉及多活容灾,尤其涉及一种数据库多活方法、装置、存储介质及计算机设备。
背景技术:
1、随着计算机服务的业务规模的增长,数据库的读写负载也会增加。单一节点的数据库可能无法承受高并发的读写请求,导致性能下降。而数据库多活是解决数据库性能下降问题的方法之一,数据库多活是指在跨地域或跨数据中心的分布式环境中,将数据库的读写操作同时分发到多个节点进行处理,以提高系统的可用性、容错性和性能。
2、目前,在数据库集群使用过程中,由于网络延迟、节点故障等原因,数据的一致性难以保证,进而导致数据库集群的容错能力较低。
技术实现思路
1、本技术的目的旨在至少能解决上述的技术缺陷之一,特别是现有技术中在数据库集群使用过程中,由于网络延迟、节点故障等原因,数据的一致性难以保证,进而导致数据库集群的容错能力较低的技术缺陷。
2、第一方面,本技术提供了一种数据库多活方法,所述方法包括:
3、当检测到数据库集群中的主节点故障时,启动选举机制;其中,所述数据库集群中包括奇数个节点,所述数据库集群中的每个节点均存在其对应的gtid集合,所述gtid集合为其对应的节点执行成功的事务的标识号的集合;
4、在一次选举中,从所述数据库集群的从节点中确定本次选举中的提案节点;
5、根据所述提案节点的gtid集合,生成目标提案;
6、将所述数据库集群中除所述主节点和所述提案节点外的所有节点确定为目标节点,并将所述目标提案发送至各个目标节点中;
7、根据所述目标提案,生成每个目标节点的反馈信息,并根据每个目标节点的反馈信息,确定所述提案节点的得票率;
8、若所述提案节点的得票率不大于预设阈值,则进入下一次选举;
9、若所述提案节点的得票率大于所述预设阈值,则将所述提案节点确定为所述数据库集群中新的主节点。
10、在其中一个实施例中,所述从所述数据库集群的从节点中确定本次选举中的提案节点,包括:
11、在所述数据库集群的各个从节点中查找未曾确定为提案节点的节点,并将查找到的节点确定为待提案节点;
12、在各个待提案节点中随机选取一个节点作为本次选举中的提案节点。
13、在其中一个实施例中,所述生成每个目标节点的反馈信息,包括:
14、获取每个目标节点的gtid集合;
15、分别将各个目标节点的gtid集合的长度与所述目标提案中的gtid集合的长度进行比较;
16、若各个目标节点中存在gtid集合的长度小于所述目标提案中的gtid集合的长度的节点,则生成该节点对应的表征同意所述目标提案的反馈信息;
17、若各个目标节点中存在gtid集合的长度不小于所述目标提案中的gtid集合的长度的节点,则生成该节点对应的表征不同意所述目标提案的反馈信息。
18、在其中一个实施例中,所述根据每个目标节点的反馈信息,确定所述提案节点的得票率,包括:
19、统计目标数量;其中,所述目标数量为每个目标节点的反馈信息中表征同意所述目标提案的反馈信息的数量;
20、确定所述数据库集群中目标节点的数量;
21、将所述目标数量与所述数据库集群中目标节点的数量之间的比值确定为所述提案节点的得票率。
22、在其中一个实施例中,所述方法还包括:
23、当检测到发生故障的主节点恢复服务时,将所述主节点的gtid集合发送至所述新的主节点中;
24、根据所述主节点的gtid集合,在所述新的主节点的gtid集合中确定目标数据;
25、将所述目标数据同步至所述主节点中,并将所述主节点降级为从节点。
26、在其中一个实施例中,所述方法还包括:
27、当接收到运维指令时,获取所述运维指令中的运维类型和节点信息;其中,所述运维指令的运维类型包括数据备份、数据恢复和数据监控;
28、根据所述运维类型和所述节点信息,执行与所述运维类型对应的操作。
29、在其中一个实施例中,执行将所述提案节点确定为所述数据库集群中新的主节点之后,所述方法还包括:
30、获取预设的钩子列表;其中,所述钩子列表中的每条记录包括接口名称、接口地址和接口参数类型;
31、调用所述钩子列表中的每条记录对应的接口。
32、第二方面,本技术提供了一种数据库多活装置,所述装置包括:
33、选举机制启动模块,用于当检测到数据库集群中的主节点故障时,启动选举机制;其中,所述数据库集群中包括奇数个节点,所述数据库集群中的每个节点均存在其对应的gtid集合,所述gtid集合为其对应的节点执行成功的事务的标识号的集合;
34、提案节点确定模块,用于在一次选举中,从所述数据库集群的从节点中确定本次选举中的提案节点;
35、目标提案生成模块,用于根据所述提案节点的gtid集合,生成目标提案;
36、目标节点确定模块,用于将所述数据库集群中除所述主节点和所述提案节点外的所有节点确定为目标节点,并将所述目标提案发送至各个目标节点中;
37、得票率确定模块,用于根据所述目标提案,生成每个目标节点的反馈信息,并根据每个目标节点的反馈信息,确定所述提案节点的得票率;
38、第一判断模块,用于若所述提案节点的得票率不大于预设阈值,则进入下一次选举;
39、第二判断模块,用于若所述提案节点的得票率大于所述预设阈值,则将所述提案节点确定为所述数据库集群中新的主节点。
40、第三方面,本技术提供了一种存储介质,所述存储介质中存储有计算机可读指令,所述计算机可读指令被一个或多个处理器执行时,使得一个或多个处理器执行如上述任一项实施例所述数据库多活方法的步骤。
41、第四方面,本技术提供了一种计算机设备,包括:一个或多个处理器,以及存储器;
42、所述存储器中存储有计算机可读指令,所述一个或多个处理器执行时所述计算机可读指令时,执行如上述任一项实施例所述数据库多活方法的步骤。
43、从以上技术方案可以看出,本技术实施例具有以下优点:
44、本技术提供的一种数据库多活方法、装置、存储介质及计算机设备,该方法包括:当数据库集群中的主节点发生故障时,启动选举机制,在数据库集群的从节点中确定本次选举的提案节点,并根据提案节点的gtid集合,生成目标提案,并将目标提案发送至各个目标节点中,以得到每个目标节点的反馈信息,进而确定提案节点的得票率,当提案节点的得票率大于预设阈值时,将提案节点确定为新的主节点,而当提案节点的得票率不大于预设阈值时,则进入下一次选举。如此,能够在主节点故障时,通过提案节点的得票率,确定最终作为新的主节点的提案节点,在选举过程中,所有的节点最终都会达成一致的结果。而且,在保证数据一致性的同时,由于是通过得票率与预设阈值的比较来确定选举结果的,因此,即使存在部分节点故障,也能够保证选举结果的有效性,从而提高数据库集群的容错能力。