故障测试_1|学习笔记

简介: 快速学习故障测试_1

开发者学堂课程【MongoDB精讲课程(下)故障测试_1学习笔记与课程紧密联系,让用户快速学习知识

课程地址https://developer.aliyun.com/learning/course/727/detail/12978


故障测试_1

 

主节点的选取原则

第一要获得票数最高,获得票数最高之后还得获得大多数成员的一个统一,才能去成为这个主节点。

根据刚刚了解到的选举原则,来测试一下,比如说一些节点挂,或者主节点挂了之后是什么样情况,当前的这个副本,首先来模拟一下这个副本节点故障,比如说现在把这个副本节点挂了。

让它当机,当机完之后,再来查看一下整个副本级的一些状态,它的主它的仲裁节点会不会有受影响,主要去观察一下这方面的内容,首先搞一个窗口,主要是去模拟当机场景

把这个 clean 一下这样先查看一下,查看一下当前的这个 mongo ,启动的这些 mongo 服务

image.png

首先,现在这块是六个服务,这前面这三个是客户端,就是在前面启动的这三个客户端。

主要看这个三个启动的 mongo 服务27017 27018 27019 这三个服务

第一步,模拟一下副本节点故障,副本节点,是这个 27018 是这个服务。

image.png

先把它挂掉,直接找到这个进程给它挂掉,挂掉之后,这时候这个副本节点挂掉,副本节点挂掉了之后,看一下主节点,主节点来执行一下这个查询的命令 db.comment.find 。

这时主节点,是不受任何影响的查看是没问题的模拟再去一下数据。再来翻译一下,这时候有两条数据了,两条数据,再找到的这个副本节点,这个副本节点是 second 的,再来一下回车,按回车的时候会发现,这时候已经挂掉了,不能做任何操作,这个主节点,会发现它主节点不受任何影响,插入和查询都没有任何问题。

如果说再把这个副本节点给重启起来,再让起来

image.png

去找一下刚刚的这个启动命令,可以把这个副本节点再给起来。

执行一下,再把这个补起来,这的副本节点又起来了,起来了之后再来看一下 Comment.find ,发现了有意思的现象,就是这时候当副本节点再起来的时候,再去查看的时候,有两条数据。

说白了就是当副本节点,刚才模拟了一下 dbc 完之后,再去查询它的时候,它是会自动的去同步主节点的数据,副本节点它的数据还是会和这个主节点保持一致,这就是这个 mongo db的副本集的一个好处,数据的一个高可用,包括通过数据融于的方式,它会自动去同步主节点的数据,模拟副本节点挂了整个副本集是不受任何影响的,如果说主节点挂了实际上想要触发的是不是它的第二次选举。

重新选举,这时可以模拟一下,把这个主节点给它挂掉,同样先查看一下这个服务,现在还是一样是三个服务。

可以把主节点27017挂掉,找到这个主节点挂掉,找到这个主节点,再来看内容,发现这主节点也贵了,再来看这个副本节点,这是副本节点,副本节点重新退出一下,给它重连一下会发现这时候它就不是主节点27018。

image.png

这打开的是刚刚27018的这个窗口,27018它会自动的把它升级为主节点。

如果说刚才没有像这样操作的话,它还是从节点的时候才能找到这个,如果它还是副本节点的时候,直接按回车,大概过个十秒钟的时候,心跳同步的时候,它会自动的把它推举为主节点,这时候其实刚刚就是完整的演示了一下它的选取的规则,但是什么规则,最开始搭建的这个图:

 image.png

现在有三个这个服务节点:一主一副一仲裁,当主节点挂掉了之后,它变成了当前有两个服务存在,它会主节点挂了之后会突发这个重新的选举,首先第一点,这个仲裁节点是不具备选举权的,因为它是零,它的这个优先级是零,就算给它投票也没用。

这时这个副本节点,它自己给自己投了一票,然后仲裁节点又给它投了一票,一加一就变成了两票,它获得了两票,两票它代表两个成员同意它,整个副本集现在是三,整个副本集是三之后,这个二代表的是大多数,大多数同样满足这个成员大多数。

第二它获得的票数也是最高的,它一共拿到的是两票,这个副本集呢,它是没有权利,就算它有选举权,因为它的这个优先级是零,是零,然后它再加上这个 secondary 给它的一票也最多也就是得到票数之一,它还是少于它的这个票数。

所以说,唯一的这个主节点挂了之后,唯一的选择实际上就是这个副本节点,会自动的升级成这个主节点。

相关文章
|
Web App开发 JavaScript 前端开发
NB-loT 之通过 Iwm2m 服务器测试 Coap 协议报文 | 学习笔记
快速学习 NB-loT 之通过 Iwm2m 服务器测试 Coap 协议报文
NB-loT 之通过 Iwm2m 服务器测试 Coap 协议报文 | 学习笔记
|
2月前
|
测试技术
自动化测试项目学习笔记(五):Pytest结合allure生成测试报告以及重构项目
本文介绍了如何使用Pytest和Allure生成自动化测试报告。通过安装allure-pytest和配置环境,可以生成包含用例描述、步骤、等级等详细信息的美观报告。文章还提供了代码示例和运行指南,以及重构项目时的注意事项。
276 1
自动化测试项目学习笔记(五):Pytest结合allure生成测试报告以及重构项目
|
2月前
|
测试技术 Python
自动化测试项目学习笔记(四):Pytest介绍和使用
本文是关于自动化测试框架Pytest的介绍和使用。Pytest是一个功能丰富的Python测试工具,支持参数化、多种测试类型,并拥有众多第三方插件。文章讲解了Pytest的编写规则、命令行参数、执行测试、参数化处理以及如何使用fixture实现测试用例间的调用。此外,还提供了pytest.ini配置文件示例。
53 2
|
2月前
|
测试技术 Python
自动化测试项目学习笔记(二):学习各种setup、tearDown、断言方法
本文主要介绍了自动化测试中setup、teardown、断言方法的使用,以及unittest框架中setUp、tearDown、setUpClass和tearDownClass的区别和应用。
80 0
自动化测试项目学习笔记(二):学习各种setup、tearDown、断言方法
|
4月前
|
安全 数据库连接 数据库
可靠性测试-故障注入工具
【7月更文挑战第19天】可靠性测试中的故障注入工具对评估系统容错性与稳定性至关重要。常见工具如 **FaultInjector** (模拟多类故障)、**Xception** (针对特定组件注入错误) 和 **Chaos Monkey** (验证云环境下系统弹性) 帮助开发者提前发现潜在问题, 优化系统设计, 如电商公司通过测试确保促销期稳定, 金融机构降低交易风险。选择合适工具并结合业务场景测试对提升可靠性至关重要。
163 0
|
7月前
|
Java 测试技术 编译器
JMM测试利器-JCStress学习笔记
JMM测试利器-JCStress学习笔记
|
Kubernetes jenkins 测试技术
【Kubernetes的DevOps自动化,Jenkins上的Pipeline实现自动化构建、测试、部署、发布以及Bookinginfo实例的部署灰度发布故障注入流量】
【Kubernetes的DevOps自动化,Jenkins上的Pipeline实现自动化构建、测试、部署、发布以及Bookinginfo实例的部署灰度发布故障注入流量】
281 1
java202303java学习笔记第四十六天-请求-postman接口测试
java202303java学习笔记第四十六天-请求-postman接口测试
82 0
|
测试技术
java202304java学习笔记第六十天-ssm-spring配置文件-完善测试环境
java202304java学习笔记第六十天-ssm-spring配置文件-完善测试环境
80 0
|
存储 Kubernetes 监控
PolarDB-X 混沌测试系统搭建赛题解析 | 学习笔记
快速学习 PolarDB-X 混沌测试系统搭建赛题解析
PolarDB-X 混沌测试系统搭建赛题解析 | 学习笔记