本技术涉及大数据,尤其涉及一种节点故障的处理方法及装置。
背景技术:
1、greenplum数据库是一种高性能、可扩展的关系型数据库管理系统,专为大数据分析和处理而设计。
2、在greenplum数据库中,当集群中某个节点出现硬件故障时,由于木桶效应,整个集群的效率会出现下降,需要数据库运维人员将故障节点隔离出集群,然后由维护人员对主机进行检查并维修。由于greenplum数据库的各个节点非无状态节点,其各个节点上都存有相应的应用数据和元数据信息,待节点修复完成后,运维人员需要将集群各节点上的数据同步到修复的节点后,数据库才能恢复正常使用。如果在故障节点修复的过程中,其备用节点同时发生故障,则节点上的数据可能会丢失或损坏。
3、因此,如何在故障节点修复的过程中确保节点中数据的完整性,成为本领域亟需解决的问题。
技术实现思路
1、本技术提供了一种节点故障的处理方法及装置,目的在于在故障节点修复的过程中确保节点中数据的完整性。
2、为了实现上述目的,本技术提供了以下技术方案:
3、一种节点故障的处理方法,包括:
4、接收数据库集群中每个节点的心跳信息;所述节点包括主节点和子节点;
5、当在预设时间内未接收到所述主节点的心跳信息,或接收到所述主节点的故障信息时,确定所述主节点出现故障,并对所述主节点进行故障修复;
6、当在所述预设时间内未接收到子节点的心跳信息,或接收到所述子节点的故障信息时,检测是否在所述预设时间内接收到其他节点的故障信息;所述其他节点指示除所述子节点外的节点;
7、若在所述预设时间内接收到所述其他节点的故障信息,则对所述子节点和所述其他节点进行故障修复;
8、当所述主节点和/或所述子节点的故障修复完毕后,向所述集群发送健康检查命令,得到检查结果;
9、若所述检查结果指示所述集群中的节点数量为预设节点数量,以及在所述预设时间内接收到所述子节点和/或所述主节点的心跳信息时,则确定所述子节点和/或所述主节点的故障修复成功。
10、可选的,所述对所述主节点进行故障修复,包括:
11、调用预设接口对主机进行重启操作;
12、当所述主机重启成功时,调用预设数据库命令对数据库服务进行重启操作;
13、当所述主机未启动成功时,对所述主节点进行虚机漂移操作后,调用所述预设数据库命令对所述数据库服务进行重启操作。
14、可选的,所述对所述子节点和所述其他节点进行故障修复,包括:
15、当所述其他节点为子节点时,对数据库服务进行回滚操作;
16、当所述数据库服务回滚成功后,调用预设接口对所述子节点和所述其他节点进行销毁处理;
17、当所述子节点和所述其他节点销毁完成后,恢复所述数据库服务;
18、当所述数据库服务恢复成功后,调用所述预设接口生成与所述子节点和所述其他节点数量一致的新的子节点,并将所述新的子节点添加至所述集群中。
19、可选的,所述对所述子节点和所述其他节点进行故障修复,包括:
20、当所述其他节点为主节点时,停止运行所述数据库集群中的所有节点,并对数据库服务进行回滚操作;
21、当所述数据库服务回滚成功后,调用预设接口对所述子节点进行销毁处理,以及对所述其他节点进行虚机漂移操作,或对所述其他节点进行重启。
22、可选的,确定所述子节点和/或所述主节点的故障修复成功之后,还包括:
23、恢复数据库服务;
24、当所述数据库服务恢复成功后,生成与所述子节点数量一致的新的子节点,并将所述新的子节点添加至所述集群中。
25、可选的,还包括:
26、当在预设时间内未接收到所述主节点的心跳信息,或接收到所述主节点的故障信息,或在所述预设时间内未接收到子节点的心跳信息,或接收到所述子节点的故障信息时,基于子节点和/或主节点,和所述子节点和/或所述主节点所属的集群生成告警信息,并将所述告警信息发送给用户。
27、一种节点故障的处理装置,包括:
28、接收单元,用于接收数据库集群中每个节点的心跳信息;所述节点包括主节点和子节点;
29、第一确定单元,用于当在预设时间内未接收到所述主节点的心跳信息,或接收到所述主节点的故障信息时,确定所述主节点出现故障,并对所述主节点进行故障修复;
30、检测单元,用于当在所述预设时间内未接收到子节点的心跳信息,或接收到所述子节点的故障信息时,检测是否在所述预设时间内接收到其他节点的故障信息;所述其他节点指示除所述子节点外的节点;
31、故障修复单元,用于若在所述预设时间内接收到所述其他节点的故障信息,则对所述子节点和所述其他节点进行故障修复;
32、发送单元,用于当所述主节点和/或所述子节点的故障修复完毕后,向所述集群发送健康检查命令,得到检查结果;
33、第二确定单元,用于若所述检查结果指示所述集群中的节点数量为预设节点数量,以及在所述预设时间内接收到所述子节点和/或所述主节点的心跳信息时,则确定所述子节点和/或所述主节点的故障修复成功。
34、可选的,所述第一确定单元具体用于:
35、调用预设接口对主机进行重启操作;
36、当所述主机重启成功时,调用预设数据库命令对数据库服务进行重启操作;
37、当所述主机未启动成功时,对所述主节点进行虚机漂移操作后,调用所述预设数据库命令对所述数据库服务进行重启操作。
38、可选的,所述故障修复单元具体用于:
39、当所述其他节点为子节点时,对数据库服务进行回滚操作;
40、当所述数据库服务回滚成功后,调用预设接口对所述子节点和所述其他节点进行销毁处理;
41、当所述子节点和所述其他节点销毁完成后,恢复所述数据库服务;
42、当所述数据库服务恢复成功后,调用所述预设接口生成与所述子节点和所述其他节点数量一致的新的子节点,并将所述新的子节点添加至所述集群中。
43、可选的,所述故障修复单元具体用于:
44、当所述其他节点为主节点时,停止运行所述数据库集群中的所有节点,并对数据库服务进行回滚操作;
45、当所述数据库服务回滚成功后,调用预设接口对所述子节点进行销毁处理,以及对所述其他节点进行虚机漂移操作,或对所述其他节点进行重启。本技术提供的技术方案,接收数据库集群中每个节点的心跳信息;节点包括主节点和子节点;当在预设时间内未接收到主节点的心跳信息,或接收到主节点的故障信息时,确定主节点出现故障,并对主节点进行故障修复;当在预设时间内未接收到子节点的心跳信息,或接收到子节点的故障信息时,检测是否在预设时间内接收到其他节点的故障信息;其他节点指示除子节点外的节点;若在预设时间内接收到其他节点的故障信息,则对子节点和其他节点进行故障修复;当主节点和/或子节点的故障修复完毕后,向集群发送健康检查命令,得到检查结果;若检查结果指示集群中的节点数量为预设节点数量,以及在预设时间内接收到子节点和/或主节点的心跳信息时,则确定子节点和/或主节点的故障修复成功。在本技术中,在对节点修复的过程中,对数据库服务进行回滚操作,使得数据库回滚正在运行的事务,能够在故障节点修复过程中确保节点中数据的完整性。