一种分布式数据库故障因素的水平计算方法与流程
- 国知局
- 2024-07-31 23:10:33
本发明属于计算机,尤其是涉及一种分布式数据库故障因素的水平计算方法。
背景技术:
1、将数据库中的表数据,分成多份存储在不同的实例上,是分布式数据库存储的一个特点,每一份在实例上称为分片,而为了给用户提供高可用特性,防止某个实例出现故障导致用户不能读写表中数据的情况,在表的存储上实行备份存储,即可以给表进行最多2个备份的存储,要求相同分片的主备分片不能在同一个实例上。
2、在数据库高可用功能测试过程中,需要先模拟节点故障,然后测试发生故障后数据库的处理逻辑是否正确,原有选取故障实例的方法是只选取一个实例模拟故障,且是随机选取,选取的故障节点比较单一,这种方式自动化实现起来简单,也能够满足高可用测试要求,但是随着数据库支持部署的实例规模越来越多,表的分片可以有选择的在某些实例上存储,会出现两个问题,一个问题是会降低测试覆盖率,第二个问题是随机选取的一个实例可能不是当前测试使用的表所对应的实例,这样就会导致本次测试没有达到预期效果,需要重新选取后再次执行测试,降低测试精准度。
技术实现思路
1、有鉴于此,本发明旨在提出一种分布式数据库故障因素的水平计算方法,以期解决上述部分技术问题中的至少之一。
2、为达到上述目的,本发明的技术方案是这样实现的:
3、一种分布式数据库故障因素的水平计算方法,包括如下步骤:
4、构建并使用第一、第二、第三组件分别获取数据库的部署信息、数据库实例与物理机的映射关系、数据库表的分布关系;其中,根据部署信息、映射关系、分布关系分析得到包括故障实例所属物理机的ip的集合a;
5、构建并使用第四、第五组件分别计算数据库表的可用性、维持可用性的节点的分布组合;其中,根据可用性和分布组合得到包括潜在故障的ip的集合b;
6、将集合a与集合b的补集作为集合c,计算集合c的幂集得到覆盖度满足要求的故障节点的子集;
7、根据分片号对数据库实例的备份分片进行从小到大的顺序排序,从最大的分片号开始顺序遍历所有备份分片,将集合b及当前分片号对应的所有ip作为最小子集,比较最小子集与集合a是否一致,若不一致则记录最小子集和集合a内的ip,否则更换当前分片为下一个分片;
8、获取最小子集、集合a、故障节点的子集的并集,得到分布式数据库故障因素。
9、进一步的,所述集合a为故障ip的集合,其具体获取过程包括:
10、若当前发生的故障为节点级故障,且当前发生故障的ip内部署有多个实例,则根据表的分布关系得到数据库实例的ip,遍历映射关系得到数据库实例对应的物理机ip,若一个物理机ip对应多个数据库实例则该物理机ip仅记录一次,将多个物理机的故障ip的集合作为集合a;
11、否则第三组件的实例ip为故障ip。
12、进一步的,将备份分片进行顺序排序后,依次记录至链表l中,且当前指针指向链表l的最后一个节点;
13、所述更换当前分片为下一个分片的过程为:将指针移动至当前指针指向的链表节点的前一个节点。
14、进一步的,所述第一组件的实现过程包括:
15、根据指定的ip连接至数据库环境中,获取数据库的部署信息,通过数据库提供的接口得到数据库中所有实例的ip,返回实例ip列表。
16、进一步的,所述第二组件的实现过程包括:
17、遍历第一组件返回的实例ip列表,获取每个实例ip所处的物理机内的所有ip信息,对比物理机内的ip信息与实例ip得到每个物理机对应的所有实例ip,将物理机与实例ip的对应关系记录至二维数组中。
18、进一步的,所述第三组件的实现过程包括:执行数据库操作指令获得表的分片名称、分片所属实例、分片的可用状态。
19、进一步的,所述第四组件的实现过程包括:
20、根据第三组件返回的分布关系将表的分片划分为多组,计算每组内可用分片的数量,根据计算结果获得每个分片组的可用性;
21、其中,若当前分片组内可用分片的数量为0,则当前分片组无可用性;
22、若当前分片组内可用分片数量为1,则当前分片组可用无备份,建立可用关系列表;
23、若当前分片组内可用分片数量大于1,则当前分片组可用有备份,建立可用关系列表;
24、所述可用关系列表内记录有分片名称、可用分片对应的实例ip。
25、进一步的,所述第五组件的实现过程包括:
26、根据第四组件返回的可用关系列表建立实例ip与分片的可用性分布关系矩阵,所述可用性分布关系矩阵的行为分片、列为实例ip;
27、将可用性分布关系矩阵中的所有元素值减一得到跟踪矩阵,并对跟踪矩阵进行变更,具体为:选取跟踪矩阵中元素值为0最多的一列,将这一列为0的元素值修改为1,将与当前元素值同一行中为0的元素值修改为2;
28、重复对跟踪矩阵进行变更的操作直至变更矩阵中所有的与元素值均不为0,完成变更。
29、相对于现有技术,本发明所述的一种分布式数据库故障因素的水平计算方法具有以下有益效果:
30、提高测试覆盖度,能够充分覆盖数据库高可用的处理逻辑;
31、提高了测试用例精准度,根据被测对象的实际分布及可用情况,计算得出的故障节点再进行高可用的故障模拟,能够一次达到测试目的,避免反复多次制造异常才能达到高可用测试目的的情况。
技术特征:1.一种分布式数据库故障因素的水平计算方法,其特征在于,包括如下步骤:
2.根据权利要求1所述的一种分布式数据库故障因素的水平计算方法,其特征在于:
3.根据权利要求1所述的一种分布式数据库故障因素的水平计算方法,其特征在于:
4.根据权利要求1所述的一种分布式数据库故障因素的水平计算方法,其特征在于:
5.根据权利要求1所述的一种分布式数据库故障因素的水平计算方法,其特征在于:
6.根据权利要求1所述的一种分布式数据库故障因素的水平计算方法,其特征在于:
7.根据权利要求1所述的一种分布式数据库故障因素的水平计算方法,其特征在于:
8.根据权利要求1所述的一种分布式数据库故障因素的水平计算方法,其特征在于:
技术总结本发明提供了一种分布式数据库故障因素的水平计算方法,根据数据库表的实际分布及分片可用状态,结合需要构造的故障分类,计算可构造的故障实例或故障节点的一种方法,解决选取故障节点单一以及与测试目标匹配不精准的问题,提高测试覆盖率和测试精准度,本发明思路是从测试覆盖角度对表的高可用测试,模拟的故障实例需要覆盖故障发生后表仍然可用和表不可用的情况,提供一种计算方法,得到两大类故障集合,再根据每一个子集的故障信息,进行故障模拟,执行测试用例,完成高可用测试。技术研发人员:张娜受保护的技术使用者:天津南大通用数据技术股份有限公司技术研发日:技术公布日:2024/7/29本文地址:https://www.jishuxx.com/zhuanli/20240730/196229.html
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 YYfuon@163.com 举报,一经查实,本站将立刻删除。
下一篇
返回列表