高可用实验配置指南:复制、协调与入口

区分复制持久性、DCS 或 Sentinel 仲裁、代理路由与旧主隔离,避免把连通性当作数据权威。

MySQLPostgreSQLRedis高可用

配置评审前提

本页只约定配置决策与核验方法,不提供通用一键切主模板。三种数据库的网络、数据目录、凭据与集群标识相互隔离;先核对实际版本、故障域、可恢复备份和维护授权,再编写环境配置。数据库、复制、协调和代理管理账号分离,秘密通过受控机制注入,管理 API 不暴露给普通业务客户端。

MySQL 复制与提升边界

确认节点标识唯一、GTID 模式兼容、复制方向与保留日志空间正确。复制线程无错误并不代表关键事务已应用;计划切换需在冻结全部写入后比较已知事务集。旧主不可达时无法仅凭候选副本声称没有数据丢失,需结合最后可用证据与业务目标作出裁决。代理负责连接路由,不负责数据库仲裁;任何代理或 VIP 状态都不能替代 fencing。

PostgreSQL 协调与复制

Patroni 的复制模式需明确一致性与写入可用性取舍,同步副本缺失时是否阻塞写入应由业务接受。etcd 多数仅用于协调,不能据此推断 WAL 已安全复制。为失去领导资格的节点设计已验证 watchdog 或外部隔离,覆盖进程卡死、租约失效及网络分区;HAProxy 应探测 Patroni 主角色,而非只检查数据库端口可达。

以下命令只读 etcd 状态,执行前须在受保护环境配置正确端点与 TLS 证书,并确认不是生产协调集群。输出应核对成员身份和故障域,不公开证书材料。

etcdctl endpoint status --cluster --write-out=table
etcdctl member list --write-out=table

Redis 仲裁与客户端

按独立故障域布置 Sentinel,分别审阅故障判断 quorum 和故障转移授权所需多数,两者不能混为同一个参数。客户端须支持实际版本的 Sentinel 发现与认证方式,并验证角色变化后的旧连接关闭与重新发现。Redis 异步复制可能丢失已确认写入,限制孤立主写入的机制只能缩小风险窗口,不能替代完整隔离和业务核对。

配置验收与生效范围

逐项区分文件配置、运行态和持久化状态,记录哪些修改需要重载、重启或独立窗口。写入口验收必须包括直连和现存长连接;只读入口另行考虑副本滞后。每条实验分别核对配置版本、角色、复制延迟、日志空间及客户端重连,所有尚未测试的故障组合留作明确缺口。

停止与恢复约束

无法证明旧主失去写能力、协调状态与节点角色矛盾、未知客户端仍可直连时,停止接入和自动切换准备。尚未改变角色的配置异常可按本次范围恢复原配置;已发生提升或新写入后必须先保存事务证据、确定权威,再处理旧节点,不通过降级参数或强制恢复旧入口绕过安全条件。副本重建和数据目录替换另行授权,不能视作普通配置回退。

官方参考与关联场景

DOUYA OPS ECOSYSTEM

完善文档,帮助更多运维人

把安装、配置、API 与运维方法沉淀为清晰文档,让工具和项目更容易被正确使用。