云数据库 MySQL 只读实例组不可用

最近更新时间:2025-11-20 15:16:33

我的收藏

背景

云数据库 MySQL 实例可以配置多个只读实例组(Read Only Group,简称 RO 组),RO 组可承担主实例的只读请求,提高 MySQL 整体的读性能。智能顾问-混沌演练提供模拟 MySQL 只读实例组不可用故障场景,该场景可验证以下场景:
1. 跨可用区部署的 RO 组,当发生单 AZ 故障后,另外可用区的 RO 组能否对外提供正常服务。
2. RO 组实例故障后对业务影响(主节点能否承受读压力)。
说明:
该故障动作会进行用户安全组数量以及 MySQL 实例是否配置有只读实例的环境检测,若您的实例不满足该条件,故障注入将会失败。为 MySQL 实例创建只读实例可参见云数据库 MySQL 文档 创建只读实例

故障描述

该故障动作会将用户指定注入范围内的 RO 组实例封禁,使其对外不可用,故障相关 RO 组中实例的存量连接会被中断。

演练实施

步骤一:演练准备

一台 云数据库 MySQL 实例,并且该实例已经配置了只读实例。
一台 云服务器 CVM 实例,用于测试数据库连接。(用户可选择其他连接方式验证测试)

步骤二:演练编排

1. 登录 智能顾问控制台 > 架构治理,进入治理模式,点击混沌演练。(详细创建演练方式请参阅 使用智能顾问进行混沌演练

2. 点击新建演练,填写演练基本信息,完成后点击下一步

3. 在演练实例中,选择数据库- MySQL,选择后点击搜索添加,添加实例资源。亦可通过架构图添加方式,直接点击架构图上的 MySQL 资源,选择实例进行添加。

演示 MySQL 实例概览:



4. 完成添加实例后,点击添加动作,选择只读实例组不可用

5. 填写故障动作参数。



这里故障注入范围选择主可用区 RO 组,因此故障将会注入到所选中的 MySQL 实例的位于主实例可用区下的 RO 组实例中。
说明:
持续 kill 连接时长(s):当前动作会帮您创建持续 kill 连接任务,用来 kill 存量长连接,此参数用来指定持续 kill 任务时长,如果您的 MySQL 连接数较大,可以增大此参数,确保能在持续时间内kill完所有连接,默认时间为60s。
故障注入范围:选择注入故障的可用区。
主可用区:主实例所在可用区的 RO 组
非主可用区:其他非主实例所在的可用区的 RO 组。
全部可用区:所有可用区的 RO 组。
指定可用区:指定可用区的 RO 组。
6. 参数配置完成之后,在全局配置中选择执行方式护栏策略,及添加可观测指标。配置完成后,点击提交,即可完成演练任务创建。


步骤三:执行演练

故障前:
MySQL RO 组实例在故障前,将会依据之前步骤配置的注入范围,对选定只读实例进行故障注入。使用 CVM 实例登录当前 RO 实例,建立一个客户端连接。



进入 数据库智能管家 DBbrain 可查看到当前 CVM 建立的连接。




执行演练:

1. 进入演练详情,点击故障动作组中的执行,或下方开始演练,注入故障。

故障注入之后,可单击详情,查看执行结果信息。


此时,可观察到存量的连接已断连。


2. 点击执行恢复动作。

恢复动作执行成功之后,使用 CVM 重新连接 RO 实例。恢复之后,可重新连接到该 RO 实例,故障已被清除。