【金仓数据库征文】自动故障转移如何避免脑裂:仲裁与隔离在高可用集群中的实践
文章目录每日一句正能量摘要摘要1. 背景与问题1.1 为什么自动切换会产生脑裂1.2 自动故障转移的安全目标2. 环境与数据2.1 脱敏实验拓扑2.2 演练业务数据3. 复现过程3.1 基线验证3.2 场景一仅切断主备通信3.3 场景二主库自身网络故障3.4 场景三仲裁节点不可用3.5 场景四旧主假死3.6 场景五网络抖动4. 方案实施4.1 仲裁用多数派决定写入资格4.2 隔离先确保旧主不能写4.3 候选备库选择4.4 访问层切换4.5 旧主恢复5. 结果对比5.1 RTO 实测5.2 RPO 实测6. 风险与复盘6.1 仲裁节点自身成为单点6.2 隔离脚本失效6.3 超时设置导致误切换6.4 同步模式与 RPO 的权衡6.5 检查清单总结每日一句正能量“当你能将生命的一切经历都视为成长的养分便终于获得了内在的、不可动摇的从容。”不筛选、不抗拒连痛苦、失败、失去都被纳入“养分”的范畴。不依赖外部境遇的好坏来决定内心的稳定。不再与生活对抗而是与一切遭遇合作。摘要本文以生产级高可用集群为背景讨论自动故障转移中最危险的异常之一——脑裂。文中给出可落地的仲裁、隔离、故障注入、RTO/RPO 实测和检查清单。摘要自动故障转移的目标并不是“尽快把备库升为主库”而是在故障、网络分区和监控误判同时出现时仍能证明集群中只有一个节点具备写入资格。没有仲裁与隔离的自动切换本质上只是把人工风险改成自动化风险切换速度可能更快但一旦旧主仍在对外写入就会形成两个主库各自产生业务流水后续很难通过普通增量同步无损合并。本文以一个两数据节点加独立仲裁节点的高可用集群为例设计主备互联中断、主库外网中断、仲裁节点故障、旧主假死和网络抖动五类故障注入。实施方案遵循三个原则多数派决定写入资格、提升新主之前先隔离旧主、无法确认安全时宁可停写而不是冒险双写。演练结果通过业务写探针、复制位置、订单流水、摘要校验和时间线记录分别计算 RTO 与 RPO并验证故障恢复后旧主只能以备库身份重新加入。1. 背景与问题1.1 为什么自动切换会产生脑裂正常状态下主库承担写入备库持续接收并回放日志。守护进程通过数据库连接、心跳和环境检查判断节点是否健康。当主库实例真正停止时备库提升通常没有争议困难出现在“看不见对方”而不是“对方已死亡”的场景。例如主库与备库之间的复制网络断开但主库仍能接受应用连接备库侧守护进程发现主库不可达误以为主库失效并触发提升。此时原主库仍在机房 A 接收新订单新主库在机房 B 接收另一部分订单两边都认为自己是合法主库主键、账户余额、库存和流水开始分叉。这就是脑裂。它不是简单的“复制延迟”而是产生了两个不可自动合并的写入历史。对订单、支付和账务系统而言脑裂造成的损失往往高于短时间停机。1.2 自动故障转移的安全目标本次方案把安全目标写成可验收的约束而不是模糊描述任一时刻集群中可接受业务写入的数据库节点数量不超过一个。新主提升前必须确认旧主已经停止服务、失去网络或被 FENCE。无法获得仲裁多数派时节点不得自行提升。故障恢复后的旧主不得直接以主库身份启动。每次切换必须能计算 RTO、RPO并留下完整时间线。2. 环境与数据2.1 脱敏实验拓扑角色节点位置说明数据库节点db-a数据中心 A初始主库数据库节点db-b数据中心 B同步或优选同步备库仲裁节点arb-c独立故障域 C只参与投票不承载业务数据访问入口db-vip / 代理双中心将写流量指向唯一主库监控系统monitor独立管理区记录心跳、切换与业务恢复时间KingbaseES 高可用集群由主库、备库与守护进程组成守护进程负责状态检查和故障处理官方资料还说明网络故障容易造成脑裂集群可通过信任网关等方式辅助判断本机网络是否异常。正式部署时应以当前版本手册和实际组件能力为准。2.2 演练业务数据为了测量 RPO不能只看数据库进程是否启动而要持续写入带序号的业务流水。本文使用ha_drill_order表记录连续订单号演练批次号提交时间实际写入节点业务载荷摘要。压测程序每秒写入 100500 条发生故障时继续请求记录成功、失败和重试结果。这样可在切换后检查订单号缺口、重复写入及两个节点是否曾经同时成功写入。3. 复现过程3.1 基线验证演练前先确认主库可写备库只读复制状态正常回放延迟在阈值内仲裁节点与两个数据库节点均可达访问入口只指向当前主库FENCE、远程停库或网络隔离脚本已在维护窗口验证业务写探针、对账脚本和时间同步均正常。基线不健康时禁止故障注入。否则演练结果无法区分是方案问题还是既有故障。3.2 场景一仅切断主备通信阻断 db-a 与 db-b 之间的复制和心跳端口但保留两边到应用网络及仲裁节点的连接。这个场景最能暴露“仅靠节点互相心跳”的风险。错误实现会出现db-a 继续写db-b 因看不到 db-a 而提升形成双主。正确实现应由仲裁多数派决定哪一侧继续服务少数派主动停止数据库写入或退出服务入口。3.3 场景二主库自身网络故障隔离 db-a 到信任网关、应用网络和仲裁节点的连接但 db-a 本机数据库进程仍在运行。此时 db-a 应判断是“本机网络异常”而不是错误地认为其他节点全部故障。保护动作包括停止对外服务、关闭写入口或执行节点隔离。3.4 场景三仲裁节点不可用停止 arb-c 后再模拟数据库节点间网络异常。由于无法形成可靠多数派系统应进入保护模式保持当前已确认主库或停止自动提升不能让两个节点分别自选为主。3.5 场景四旧主假死模拟数据库进程无响应、磁盘长时间阻塞或操作系统卡顿但节点电源仍开、网络时断时续。仅执行“提升备库”是不够的新主提升前必须确认旧主已被停库、断网、断电或由 FENCE/STONITH 隔离。3.6 场景五网络抖动持续注入延迟、丢包和短时断连。若超时阈值过低集群会频繁切换若过高RTO 又会被拉长。因此应通过多轮实验确定心跳间隔、连续失败次数、切换冷却时间和回切抑制时间。4. 方案实施4.1 仲裁用多数派决定写入资格两节点集群最大的问题是出现网络分区时双方票数相同。增加独立仲裁节点后形成奇数票db-a 与 arb-c 可达db-a 获得多数派db-b 与 arb-c 可达db-b 获得多数派db-a 与 db-b 可达但仲裁不可达维持既有主从不随意提升单个数据库节点与其他节点均隔离该节点失去写入资格。仲裁节点应部署在独立故障域不能与任一数据库节点共享同一台主机、同一交换机或同一电源故障点。仲裁服务也要监控否则“有仲裁配置”不等于“仲裁真实可用”。4.2 隔离先确保旧主不能写仲裁解决“谁应该成为主库”隔离解决“旧主是否真的失去写能力”。常见隔离方式包括远程停止数据库服务将旧主从业务 VLAN 或负载均衡中摘除通过 IPMI、云主机 API 或电源控制执行 FENCE共享存储场景使用 STONITH 保障资源唯一所有者撤销旧主的写入 VIP、路由或代理注册。安全顺序应是确认故障与仲裁结果执行旧主隔离验证旧主写探针失败选择回放位置最优且健康的备库提升新主更新访问入口验证业务恢复。任何“先提升、后慢慢隔离”的流程都扩大了双写窗口。4.3 候选备库选择多备库环境不能只按节点名称固定提升。应综合判断WAL 接收和回放位置当前复制状态复制延迟数据目录、磁盘和文件系统健康是否具备多数派是否能够被应用访问是否存在长时间恢复或损坏告警。在同步复制模式下RPO 可以接近零异步复制下仍需根据故障瞬间的发送、接收和回放差距计算实际数据窗口。不能把“自动切换成功”直接等同于“零数据丢失”。4.4 访问层切换数据库提升完成不代表业务已经恢复。还需处理VIP 漂移DNS 缓存数据库代理主节点刷新连接池失效连接清理事务重试与幂等控制只读/读写路由更新。应用重试必须有上限并具备幂等键否则切换期间的超时重试可能造成重复订单。业务恢复时间点应以真实接口成功为准而不是以数据库提升命令返回为准。4.5 旧主恢复旧主重新联网后不允许直接恢复成主库。标准步骤是保持业务入口隔离确认时间线和分叉点判断是否需要重新构建以备库身份从新主同步对账通过后加入集群观察稳定窗口后才恢复读流量。若脑裂已经发生应冻结两边写入按业务流水确定权威数据源并制定专项合并方案不能直接让两端互相覆盖。5. 结果对比本文以三轮脱敏实验展示记录方式数值仅为示例。方案故障发现旧主隔离新主提升与路由业务 RTO实测 RPO脑裂结果仅心跳、无仲裁15 秒未完成35 秒50 秒无法可信计算出现双写有仲裁、无强隔离15 秒45 秒25 秒85 秒02 秒存在短暂风险仲裁 FENCE 路由门禁12 秒8 秒18 秒38 秒01 秒未发生脑裂对比说明一个容易忽略的事实最短 RTO 不一定是最安全方案。若为了追求几秒切换而省略旧主隔离可能用极短停机换来不可逆的数据分叉。更合理的目标是先保证写入唯一性再持续压缩检测、隔离、提升和应用恢复时间。5.1 RTO 实测RTO 按下列时间线计算T0故障注入T1监控告警T2旧主隔离完成T3新主提升完成T4应用首个关键写接口成功T5业务对账完成。严格的业务 RTO 取T4 - T0。若业务要求“对账通过才算恢复”则采用T5 - T0。报告中必须说明口径避免只统计数据库提升时间。5.2 RPO 实测RPO 至少使用两种方式交叉验证时间窗口比较故障前最后确认提交时间与新主最后连续可见时间流水缺口检查连续订单号、消息偏移量或业务版本号摘要对账比较数量、金额、状态分布和逐批摘要客户端确认核对已向客户端返回成功但新主不存在的交易。只有数据库行数相等并不能证明 RPO 为零重复提交、状态回退和跨表不一致也必须检查。6. 风险与复盘6.1 仲裁节点自身成为单点仲裁节点不承载业务数据但其故障会影响自动切换决策。应至少保证独立故障域服务自动拉起容量和磁盘告警时间同步多路径网络或清晰的降级策略定期验证投票状态。6.2 隔离脚本失效FENCE 设备、云 API 凭证、IPMI 密码或远程命令可能长期未使用而失效。建议每季度在维护窗口验证一次并将“隔离成功”作为自动提升的前置条件而不是仅记录告警后继续切换。6.3 超时设置导致误切换超时阈值应依据真实网络 RTT、抖动、磁盘延迟和数据库恢复时间设定。过低会误切换过高会增加 RTO。建议使用历史监控的 P99 延迟加安全余量并设置连续失败次数与冷却时间。6.4 同步模式与 RPO 的权衡实时同步有助于降低 RPO但会增加提交路径对网络和备库性能的依赖。异步模式可保持主库写入吞吐却无法承诺故障时零丢失。应按业务等级分别配置不应把所有系统套用同一模式。6.5 检查清单部署前仲裁节点位于独立故障域数据库节点、仲裁节点和信任网关地址正确FENCE/停库/断网方式至少一种可验证主备时间同步和证书、密钥有效应用连接串、代理和 VIP 具备切换能力写接口具备幂等键。演练前复制状态健康延迟低于门槛备份与回退方案可用业务写探针和时间线表已启动明确暂停条件和人工接管人记录主备位置、连接数和业务基线。演练中逐项记录 T0T5确认旧主隔离后再提升验证同一时间仅一个节点写入成功检查新主读写、序列、任务和权限监控连接池重连、错误率和重试量。演练后计算并复核 RTO、RPO完成数量、金额、状态和流水对账旧主以备库方式重建清理临时规则与测试数据更新阈值、脚本和应急预案保存日志、截图与个人复盘。总结自动故障转移避免脑裂的核心不是某一条切换命令而是一条不可绕过的安全链健康检查发现异常仲裁确认多数派隔离剥夺旧主写权限再提升新主并切换业务入口。其中任何一步缺失都可能让“高可用”变成“双主高风险”。真正可信的高可用方案必须通过故障注入证明主备互联中断、主库网络故障、仲裁失效、旧主假死和网络抖动时集群仍然最多只有一个写主还必须用业务流水实测 RTO 与 RPO而不是只引用产品能力值。高可用演练的目标不是追求一次漂亮的秒级切换而是形成可重复、可审计、可回退的生产保障流程。转载自https://blog.csdn.net/u014727709/article/details/163271002欢迎 点赞✍评论⭐收藏欢迎指正

相关新闻

Arduino串口通信进阶:深入理解数字与模拟信号处理

Arduino串口通信进阶:深入理解数字与模拟信号处理

1. 从“会亮灯”到“会思考”:为什么串口是Arduino进阶的必经之路 如果你已经玩过Arduino,点亮过LED,控制过舵机,甚至用上了超声波传感器,那么恭喜你,你已经成功迈入了物理计算的大门。但不知道你有没有过这…

2026/7/29 14:42:44 阅读更多 →
创客教育实践指南:从智能硬件到跨学科融合的创新能力培养

创客教育实践指南:从智能硬件到跨学科融合的创新能力培养

1. 赛事背景与核心价值:为什么“创客”教育在今天如此重要?如果你是一位家长、老师,或者只是关注教育领域动态的从业者,最近可能被一条消息刷屏了:全国中小学生创客邀请赛在常州举行了。这听起来像是一场普通的竞赛&am…

2026/7/29 14:42:44 阅读更多 →
Unix时间戳原理与C语言时间计算实战:从1970纪元到18岁生日天数

Unix时间戳原理与C语言时间计算实战:从1970纪元到18岁生日天数

1. 项目概述:从“1970年秒数”到时间计算的本质 最近在论坛上看到一个挺有意思的讨论,起因是一个看似简单的编程题:“计算当前时间距离1970年的秒数”。很多新手朋友第一反应就是调用 time(NULL) 或者 time.time() ,然后打印结…

2026/7/29 14:42:44 阅读更多 →

最新新闻

手机提醒与PC记录对不上:用事件编号合并多端状态

手机提醒与PC记录对不上:用事件编号合并多端状态

手机显示15:01收到提醒,PC记录却写15:00,先确认两端是否指向同一事件。个人量化投资者常用软件比较多端体验时,牛股王股票适合通过调仓消息、策略记录和处理结果复盘;聚宽研究端便于生成带编号的信号;PTrade券商侧任务…

2026/7/29 14:52:51 阅读更多 →
Arduino舵机控制入门:从原理到实践,打造智能招财猫

Arduino舵机控制入门:从原理到实践,打造智能招财猫

1. 项目概述:从“Hello World”到“招财猫”的跨越 玩Arduino的朋友,估计都经历过点亮第一个LED灯时的兴奋,那感觉就像打开了新世界的大门。但当你把基础的数字输入输出、传感器读取都玩过一遍后,心里难免会痒痒:能不能…

2026/7/29 14:52:51 阅读更多 →
Ubuntu远程连接Windows:RDP、VNC与SSH隧道方案详解

Ubuntu远程连接Windows:RDP、VNC与SSH隧道方案详解

1. 跨系统远程连接:从需求到方案选型在混合开发环境或日常运维中,我们经常会遇到一个场景:主力开发机是Ubuntu,但需要操作或访问另一台Windows机器上的某个应用、文件或者进行临时维护。直接切换物理设备显然效率低下,…

2026/7/29 14:52:51 阅读更多 →
如何用Sharp-dumpkey在3分钟内获取微信数据库密钥:你的数据备份终极指南

如何用Sharp-dumpkey在3分钟内获取微信数据库密钥:你的数据备份终极指南

如何用Sharp-dumpkey在3分钟内获取微信数据库密钥:你的数据备份终极指南 【免费下载链接】Sharp-dumpkey 基于C#实现的获取微信数据库密钥的小工具 项目地址: https://gitcode.com/gh_mirrors/sh/Sharp-dumpkey 在数字化生活中,微信聊天记录承载着…

2026/7/29 14:52:51 阅读更多 →
Python逆向分析实战:从pyc文件反编译到算法逆向与CTF解题

Python逆向分析实战:从pyc文件反编译到算法逆向与CTF解题

1. 题目背景与核心挑战最近在复盘一些经典的CTF逆向题目,正好又看到了这道“[GWCTF 2019]pyre”。这道题在当年算是Python逆向的一个典型代表,它巧妙地将Python字节码(.pyc)文件作为核心考点,考察选手对Python程序执行…

2026/7/29 14:52:51 阅读更多 →
AI剧情生成已进入“可信度临界点”:2024年全球17款上线游戏实测对比,仅3款通过叙事一致性Turing Test

AI剧情生成已进入“可信度临界点”:2024年全球17款上线游戏实测对比,仅3款通过叙事一致性Turing Test

更多请点击: https://codechina.net 第一章:AI剧情生成已进入“可信度临界点”:2024年全球17款上线游戏实测对比,仅3款通过叙事一致性Turing Test 2024年,AI驱动的剧情生成系统在商业游戏中首次大规模落地。我们对全球…

2026/7/29 14:51:51 阅读更多 →

日新闻

【RT-DETR多模态创新改进】CVPR 2025 | 独家特征融合创新改进篇 | 引入RLAB残差线性注意力模块,有效融合并强调多尺度特征,多种改进点,适合红外与可见光融合目标检测任务,有效涨点

【RT-DETR多模态创新改进】CVPR 2025 | 独家特征融合创新改进篇 | 引入RLAB残差线性注意力模块,有效融合并强调多尺度特征,多种改进点,适合红外与可见光融合目标检测任务,有效涨点

一、本文介绍 🔥本文在RT-DETR多模态融合目标检测中引入RLAB残差线性注意力模块,可在不同模态特征交互阶段进行多次残差细化,使可见光、红外等特征在尺度、语义和空间位置上更好对齐;随后将细化特征与解码器输出拼接并生成Q、K、V,通过线性注意力自适应强化关键通道、目…

2026/7/29 0:00:23 阅读更多 →
AI编程系列02:合并知识功能,给 AI 问数和 RAG 场景打基础

AI编程系列02:合并知识功能,给 AI 问数和 RAG 场景打基础

AI编程系列02:合并知识功能,给 AI 问数和 RAG 场景打基础 在上一期「AI编程系列」中,我们学习了如何构建一个基础的 AI 问答系统,通过简单的输入输出让模型回应问题。但现实世界中的 AI 应用往往需要处理更复杂的场景:…

2026/7/29 0:00:23 阅读更多 →
AI智能体开发实战:从工具调用到企业级部署

AI智能体开发实战:从工具调用到企业级部署

1. 从被动问答到主动执行:AI Agent的范式转变过去两年,大语言模型最显著的应用形态是聊天机器人——用户提问,AI回答。但真正的生产力革命发生在2023年下半年:当AI学会主动调用工具完成任务时,生产力工具的历史被彻底改…

2026/7/29 0:00:23 阅读更多 →

周新闻

深度学习道路桥梁裂缝检测系统 道路桥梁裂缝检测数据集 道路桥梁病害识别检测数据集

深度学习道路桥梁裂缝检测系统 道路桥梁裂缝检测数据集 道路桥梁病害识别检测数据集

深度学习道路桥梁裂缝检测系统 数据集6000张 完整源码已标注数据集训练好的模型环境配置教程程序运行说明文档,可以直接使用!系统支持图片、视频、摄像头等多种方式检测裂缝,功能强大实用。 1数据集6000张 8各类别

2026/7/28 12:04:22 阅读更多 →
深度学习YOLO模型如何训练 PUBG 绝地求生目标检测数据集

深度学习YOLO模型如何训练 PUBG 绝地求生目标检测数据集

pubg数据集 精选原图1.42万数据 1.49万标签 无任何重复、算法增强或冗余图像! pubg绝地求生目标检测数据集 1分类:e_body,14905个标签,txt格式 共计14244张图,99%为640*640尺寸图像 适合yolo目标检测、AI训练关键词&am…

2026/7/29 14:34:28 阅读更多 →
Apex英雄目标检测数据集 深度学习框架YOLO如何训练APEX数据集

Apex英雄目标检测数据集 深度学习框架YOLO如何训练APEX数据集

Apex检测数据集数据集详情检测类别: allies enemy tag图片总量:7247张训练集:5139张验证集:1425张测试集:683张标注状态:全部已标注,即拿即用数据格式:支持YOLO格式及其他格式&#…

2026/7/28 5:03:42 阅读更多 →

月新闻