高可用实验快速开始:独立拓扑与实验准备
分别界定 MySQL、PostgreSQL 和 Redis 实验环境,准备恢复目标、凭据、隔离能力与只读状态基线。
当前状态与目标
本项目是数据库高可用实验档案,没有独立部署制品或已完成的演练记录。目标是为三类数据库分别建立可审阅的恢复实验,回答“谁可写、谁拥有可信数据、客户端如何恢复”。所有 RPO、RTO 和数据核对结果都必须在目标测试环境实测,本页不承诺零丢失或固定恢复时间。
三条独立拓扑
- MySQL:单写主库与至少一个 GTID 副本,明确人工或已验证编排的提升责任,应用入口与旧主隔离单独设计。
- PostgreSQL:数据节点与 Patroni 配合,etcd 提供协调状态,HAProxy 按主角色选择写后端;协调多数与复制一致性分别检查。
- Redis:主从复制配合跨故障域 Sentinel,客户端通过 Sentinel 发现主节点;不把该拓扑混称为 Redis Cluster。
各实验使用独立网络、标识、凭据和测试数据,按需逐条建设,不同时混合故障注入。拓扑清单标出所有直连、代理、连接池和定时任务写入路径。
环境与恢复前提
沿用场景中的版本参考后,仍须核对实际数据库、客户端和组件组合的兼容性。预留完整副本、日志峰值、备份与重建空间,故障域不能只看虚拟机数量。使用脱敏测试数据,预先完成独立环境备份恢复;确认隔离旧主的技术手段、操作授权和恢复通道均可用。
指定数据库、应用、网络和中止负责人,事先填写允许丢失量、写中断阈值、观察时长及事务核对规则。没有恢复证据或无法阻断旧主写入时,不进入切换实验。
凭据与只读基线
检查账号按最小权限分离,口令通过受保护客户端配置或凭据系统提供,不放到命令参数、文档和截图。以下 SQL 仅用于已确认身份的 MySQL 测试节点,分别读取角色与 GTID;不要在 PostgreSQL 或 Redis 连接中执行。
SELECT VERSION(), @@server_uuid, @@gtid_mode;
SELECT @@read_only, @@super_read_only, @@GLOBAL.gtid_executed;保存节点地址、采样时间与输出,另行核对客户端实际写入源。只读标志和复制进度是证据之一,不能单独证明旧主已被可靠隔离。
首轮交付与验收
首轮应形成三份拓扑清单、复制模式决策、业务流水核对方法和故障计划。先验证正常流量与独立恢复,再选择一种健康节点间计划切换。用测试流水区分已确认提交、明确失败和结果不明的请求,记录应用重连与恢复冗余所需的不同时间,避免只统计代理探测耗时。
停止与恢复边界
出现双主迹象、恢复目标超限或角色与事务证据冲突时,停止故障注入并控制受影响写入口,保存两侧日志和测试流水。由授权负责人判断唯一权威。新主接收写入后,恢复旧主服务或旧入口不等于回退;旧主必须按权威数据重同步或重建,验证为副本后再考虑后续计划切换。