## 任务目标
请设计 MySQL 读写分离方案,并核对各类读取的一致性要求。
交付能用于评审或后续实施的具体方案、规则与样例;未要求实施的部分不声称已经落地。
## 输入信息(选填)
两项均可留空,也可直接用一句话说明目标并附上已有资料。无需自行整理版本、配置或完整需求表;能读取的内容由执行者补齐。
读写业务链:
工程与路由资料:
## 信息不完整时
先使用本次对话中已经说明的信息;用户留空、写“暂无/不清楚”或未替换输入标记,都按缺失处理,不当作真实路径、参数或业务值。已能从资料确定的内容不重复询问,不编造文件、日志、接口、业务值或执行结果。在用户已授权的范围内读取相关工程和材料,不为补齐输入擅自扩大操作范围。
### 优先确认
- 沿写入提交到立即回读、跨请求查询和分页查询追踪连接与目标节点。
- 读取数据源选择、代理路由、事务绑定与连接复用机制。
- 查找库存、权限和状态判断使用的查询,关联业务可见性要求。
- 读取延迟、只读节点故障和主库压力的既有指标与降级代码。
### 可采用的默认处理
- 默认交付路由设计,不直接切换数据源或调整代理权重。
- 无法确定可容忍陈旧的读取保留现有路径;新候选不自动分流到只读节点。
- 延迟阈值和回流容量未测量时给观测及估算方法,不把阿里云代理规则套到其他实现。
### 必须有依据的事项
- 写后读取、权限、库存或状态决策能否容忍旧数据的业务要求不明时,不决定分流与延迟边界。
- 节点异常时允许拒绝、延迟展示还是回流主库没有业务依据时,不默认以成功空数据降级。
只有缺口会改变业务结果、权限边界或关键实现,且无法从现有资料确认时,才集中提出最多 3 个关键问题;说明影响,并继续完成不依赖答案的部分。一般命名、排版和可逆实现细节按现有约定决定,不逐项等待确认。
### 资料仍不足时的交付
- 没有实际拓扑时交付业务一致性分类、附前提的路由候选及写后读取测试设计。
- 没有可用数据库时给记录实际访问节点与可见时间的方法,故障注入仅列为隔离验证计划。
## 执行要求
适用范围:具备主库、只读实例或数据库代理的MySQL系统;阿里云代理路由规则须匹配实际版本,其他代理与应用自行路由应独立验证。
使用 RDS 代理分流读取时,核对事务、DDL 等请求的专门路由规则。
检查步骤:
1. 将查询按业务后果分类,分别记录必须看到刚写结果、可接受短暂陈旧和纯历史统计的场景,给出业务能接受的延迟边界,不能用统一延迟数字替代业务判断。
2. 绘制每条链路的连接入口和目标节点,包含事务、批任务、后台管理与故障处理;核对真实配置和调用结果,不能仅凭“只读”方法名称认定已访问从库。
3. 检查提交后立即查询、跨请求查询、分页和状态确认的行为,说明复制落后时用户可能看到什么;对状态决策、库存或权限判断列出需要的保证。
4. 比较代理路由、应用显式路由和保持主库查询的候选,明确驱动连接复用、事务绑定及路由切换的限制;不为了分担读压力把所有查询都切到只读节点。
5. 定义只读节点延迟过高、失联或容量不足时的降级,计算回流主库可能增加的压力;将限流、延迟展示和主库读取的业务影响分别说明。
6. 写入后读取、延迟注入、节点故障和恢复场景只在隔离测试环境或已明确授权的生产演练中验证,普通线上审查只采集已有指标;记录实际节点与数据可见时间;优化验收同时检查业务一致性和主库、只读节点的负载。
## 交付与验收
输出要求:输出业务一致性分级、路由表、失败处理矩阵、配置修改范围和验收用例。每条路由列出触发条件、目标节点、可见性要求及降级方式;新增数据库字段必须附详细中文注释。 只报告有证据支持的问题;区分“已验证”“推测”和“待验证”,涉及变更时给出受影响文件或对象、最小修改和复核方法。代码与操作示例使用占位符,不写入真实密码。
### 本条完成检查
- 每条路由对应触发条件、目标节点、事务限制、可见性要求和失败处理。
- 验证不只看读库负载,还核对写后可见、分页和状态决策的业务结果。
- 降级说明主库回流压力及限制,版本专属能力和未验证配置明确标注。
按本条要求组织结果,使用简洁中文和一致的编号、术语、缩进及空行;已有项目格式优先。只说明实际完成的内容,将采用的假设、未完成项和缺少的条件写在相关位置,不额外生成无关文档。未执行、无法复现或缺少证据的检查如实标注,不宣称已通过或已有性能收益。
## 参考资料与适用边界
来源(核验日期:2026-09-08):
[阿里云《RDS MySQL:什么是读写分离》](https://help.aliyun.com/zh/rds/apsaradb-rds-for-mysql/what-is-read-or-write-splitting/)
整理范围:仅依据上述公开文档的相关建议,业务场景、变量、检查流程与验收格式均为独立改写,不代表相关企业完整内部规范。