tencent cloud

智能顾问

产品动态
产品简介
产品概述
功能介绍
产品优势
应用场景
客户案例
购买指南
快速入门
使用智能顾问进行混沌演练
操作指南
智能顾问-云架构操作指南
智能顾问-云巡检操作指南
智能顾问-混沌演练操作指南
智能顾问-数字资产操作指南
权限管理
API 文档
History
Introduction
API Category
Making API Requests
Other APIs
Task APIs
Cloud Architecture Console APIs
Data Types
Error Codes
常见问题
智能顾问常见问题
智能顾问-云巡检常见问题
智能顾问-云架构常见问题
智能顾问-混沌演练常见问题
相关协议
Tencent Cloud Smart Advisor Service Level Agreement
PRIVACY POLICY MODULE CHAOTIC FAULT GENERATOR
DATA PRIVACY AND SECURITY AGREEMENT MODULE CHAOTIC FAULT GENERATOR
联系我们

MongoDB 存储节点故障模拟

PDF
聚焦模式
字号
最后更新时间: 2025-11-20 15:55:20

背景

MongoDB 数据库实例为用户提供多数据存储节点和 HA 机制,保障数据的安全性和服务的高可用性。为验证用户业务对腾讯云 MongoDB 容灾能力的利用情况,智能顾问-混沌演练提供多种故障场景实现存储节点故障模拟。

演练实施

演练准备

购买云上跨可用区 MongoDB 实例,部署本地或者云上服务端测试环境,连接 MongoDB 实例。
模拟常规客户端请求的脚本。
#!/usr/bin/python
"""
通过简单的数据读写方式,模拟十万级数据量的操作。在数据插入中途,通过混沌演练平台操作进行故障注入,观察前后变化。
本脚本只作为参考示例,真实演练时建议使用贴近生产环境的业务场景进行故障模拟。
"""
import pymongo
import random

# 演练时以实际注入故障的MongoDB实例Uri进行替换,具体可参考MongoDB [实例详情-网络配置-连接地址]
mongodbUri = 'mongodb://mongouser:thepasswordA1@ip:port/admin'
client = pymongo.MongoClient(mongodbUri)
# 数据库指定
db = client.somedb
# 数据集删除
db.user.drop()
# 自定义插入数据量。建议采用较大数据量,方便演练过程观察
element_num = 3 * 10 ** 6
for id in range(element_num):
# 插入随机文档
name = random.choice(['R9', 'caÒt', 'owen', 'lee', 'J'])
sex = random.choice(['male', 'female'])
try:
db.user.insert_one({'id': id, 'name': name, 'sex': sex})
except Exception as e:
print('error id', id)
# 查询全量文档
content = db.user.find()
for i in content:
print(i)

演练步骤

步骤1:创建演练

1. 登录 智能顾问 > 混沌演练控制台,进入演练管理页面,单击新建演练。
2. 单击跳过新建空白演练。

步骤2:添加 MongoDB 实例和动作

1. 在演练对象配置环节中,可通过批量实例 ID 输入或选择 VPC 过滤并添加期望参加演练的 MongoDB 实例。
2. 添加演练动作。
MongoDB 主节点重启:模拟 MongoDB 主节点故障重启的过程对业务的影响以及 MongoDB 的 HA 机制。
MongoDB 主从切换:模拟 MongoDB 节点主从切换过程和切换后产生节点 IP 发生变更的场景,动作支持优先同可用区切换和优先跨可用区切换两种执行模式。

步骤3:根据需求添加监控指标

步骤4:进入演练详情,执行演练

结果观测

通过脚本模拟生产环境用户行为,观察故障前,故障中,故障后三个时态下的业务响应。

主节点重启

故障前
业务表现:大批量数据持续插入数据库,MongoDB以稳定的速率处理。
实例状态:主节点、从节点、Hidden 节点均已配置并生效。
故障中
业务表现:脚本中插入失败,可通过配置驱动的重试机制进行重试,同时检测到Mongo节点异常,出现短时间的数据积压。
实例状态:从节点中选择一个节点提主,由于 Hidden 节点不参与选举,则选择原从节点作为主节点,原主节点将作为从节点被重新拉起。
故障后
业务表现:将积压的数据和当前未插入的数据同时插入,MongoDB以近两倍的速率进行处理。
实例状态:MongoDB自动恢复节点主从关系,将权重较高的节点重新选举为主节点,若权重一致,则保持不变。
结论
完成后检查数据库数据正常,故障过程业务无感知,整体情况符合预期。

主从切换

故障前
业务表现:大批量数据持续插入数据库,MongoDB以稳定的速率处理。
实例状态:主节点、从节点、Hidden 节点均已配置并生效。
故障中
业务表现:节点可用区发生切换,业务发生与节点重启类似的现象,存在短时间内的数据积压。
实例状态:根据动作模式优先从实例从节点中选择同可用区或跨可用区节点,将其提升为主节点,原主节点作为从节点被重新拉起。
故障后
业务表现:发生可用区切换,业务正常运行,数据插入动作和数据查询动作不受影响。
手动故障恢复
实例状态:执行故障恢复动作,恢复至故障开始前状态。
结论
故障过程业务无感知,数据库数据完整,整体表现正常,符合预期。


帮助和支持

本页内容是否解决了您的问题?

填写满意度调查问卷,共创更好文档体验。

文档反馈