讲师中心 微信公众号
AI工具推荐 视频效率加速

DRBD怎么排查双机由于网络中断引发的双主脑裂Split-Brain

秋辰大大_4435

秋辰大大_4435

发布时间:2026-10-25 10:20:22

|

138人浏览过

|

来源于php中文网

原创

DRBD双主(Split-Brain)可通过cat /proc/drbd或drbdadm status判断:任一节点cs为StandAlone/WFConnection且ro含Primary/Unknown,或两节点均为Primary/Primary,结合dmesg中“Split-Brain detected”日志即可确诊。

drbd怎么排查双机由于网络中断引发的双主脑裂split-brain

DRBD 出现双主(Split-Brain)时,不能直接强制恢复;必须先确认哪边数据更新、哪边已过期,否则会丢数据。

怎么一眼判断是不是 Split-Brain

执行 cat /proc/drbd 或 drbdadm status,重点看 cs(connection state)和 ro(role)字段:

  • 如果任一节点显示 cs:StandAlone 或 cs:WFConnection,且 ro:Primary/Unknown 或 ro:Primary/Secondary 中的“对方角色”是 Unknown,基本就是脑裂
  • 两个节点同时显示 ro:Primary/Primary 是极危险信号(8.4+ 版本默认禁止,但旧配置或手动提权可能触发)
  • 日志里搜 dmesg | grep "Split-Brain",出现 Split-Brain detected, dropping connection! 就是确诊

网络中断后如何确认哪边数据新

不能只看谁是“原 Primary”,要查实际写入时间。最可靠方式是比对底层文件系统最后修改时间或应用层日志:

  • 在两台机器上分别运行:stat -c "%y %n" /mnt/drbd-mount-point/any-recent-file(比如数据库的 binlog、MFS 的 chunk 文件)
  • 若挂载点不可读(ds:Inconsistent 或 DUnknown),改查 DRBD 元数据时间戳:drbdadm dump data | grep -E "(disk|meta)",再对比 /var/lib/drbd/drbd-{minor}.meta 的 mtime
  • 注意:如果用了 on-io-error detach 策略,某节点可能已变成 diskless,此时它一定不是数据源
  • 千万别依赖 drbdadm get-gi 输出的 generation ID —— 网络断开期间双方都可能自增,无法反映真实写入顺序

修复时必须分清主次,命令不能颠倒

假设确认 node1 数据更新(应保留),node2 数据陈旧(需丢弃):

  • 在 node2(旧数据端)执行三步(顺序不能错):drbdadm secondary data → drbdadm disconnect data → drbdadm -- --discard-my-data connect data
  • 在 node1(新数据端)只执行:drbdadm connect data(不是 primary,它本来就是 Primary)
  • 执行完立刻检查:cat /proc/drbd 中 node1 应为 cs:Connected ro:Primary/Secondary,node2 应为 cs:SyncTarget ro:Secondary/Primary 并开始同步
  • 常见错误:在 node2 上漏掉 -- --discard-my-data,只用 connect,结果 DRBD 拒绝连接并报 Refusing to connect: missing data

为什么 wfc-timeout 和 after-sb-0pri 不能救急

这些是预防配置,不是修复手段。脑裂发生后它们已失效:

  • wfc-timeout 0 会让节点无限等待重连,但 Split-Brain 触发后连接已被主动断开,等待无意义
  • after-sb-0pri discard-zero-changes 只在“双方都是 Secondary 时重新提主”场景生效,而 Split-Brain 下至少有一方是 Primary
  • 真正起作用的是人工决策 + --discard-my-data 或 --recover(后者极少用,要求双方都有完整变更日志)
  • 修复完成后务必检查 drbdadm verify data 是否有块校验失败 —— 网络中断期间 IO 可能已损坏部分扇区

最易被忽略的一点:修复后不要立刻启动上层服务(如 MySQL、MFS)。先等 ds:UpToDate/UpToDate 出现,再 mount -o ro 挂载验证文件可读,最后才切回读写模式。同步未完成就挂载,轻则 IO hang,重则触发二次脑裂。

热门AI工具

更多
切问学术

切问学术是一款AI论文写作工具,复旦大学NLP团队推出的AI学术智能体。

DeepSeek

DeepSeek是一款面向对话、写作、编程和推理场景的AI大模型工具。

火山引擎

火山引擎是一款面向企业的云计算与AI服务平台。

Atoms
Atoms Hot

Atoms是一款AI智能体工具,第一支自动构建真实业务的 AI 团队。

VibeKnow
VibeKnow Hot

一款AI视频创作工具,主要用于全球首个AI知识视频创作平台,文档、文章、网页,一键生成视频,适合需要提升相关任务效率的用户。

WorkBuddy

一款AI办公效率工具,主要用于腾讯云推出的AI原生桌面智能体工作台,适合需要提升相关任务效率的用户。

蛙蛙写作

一款AI论文写作工具,主要用于超级AI智能写作助手,适合需要提升相关任务效率的用户。

PixTV
PixTV Hot

PixTV是一款面向AIGC内容创作的AI视频生成工具。

豆包大模型

豆包大模型是一款由字节跳动推出的企业级大语言模型服务平台。

相关专题

更多
Gradle插件开发入门教程
Gradle插件开发入门教程

本专题介绍Gradle插件开发的基本流程,涵盖插件类编写、自定义任务注册、扩展参数设计和插件应用方法,帮助你理解插件如何组织构建逻辑,减少多个项目之间的重复配置。

40

2026.10.22

Gradle Wrapper配置教程
Gradle Wrapper配置教程

本专题介绍Gradle Wrapper的基本作用,涵盖文件组成、生成方法、版本配置和任务调用,帮助你理解项目如何使用指定的Gradle版本,减少不同开发环境带来的构建差异。

20

2026.10.22

Golangci-lint检查器使用教程
Golangci-lint检查器使用教程

本专题整理Golangci-lint常用Linters的用途与配置方法,覆盖错误处理、无效代码、安全、复杂度、命名和依赖检查,帮助项目合理选规则。

20

2026.10.22

Gradle怎么构建Java项目
Gradle怎么构建Java项目

本专题介绍Gradle Java项目构建方法,涵盖Java插件配置、依赖声明、源码编译、测试执行和打包检查,帮助你理解各阶段的任务关系,逐步完成项目构建。

0

2026.10.22

PHP时间戳漏洞修复教程
PHP时间戳漏洞修复教程

本专题汇总PHP常见时间戳漏洞,包括2038年溢出、时区漂移、时间戳伪造、重放攻击、时间盲注与日志审计失效等,并给出升级64位环境、使用 DateTimeImmutable、统一UTC、严格超时校验、预处理绑定、hash_equals 比对等修复方案,帮助开发者快速排查和加固时间相关代码。

20

2026.10.22

Golangci-lint配置文件与规则设置
Golangci-lint配置文件与规则设置

本专题聚焦Golangci-lint YAML配置文件,讲清运行参数、规则启停、目录排除、问题过滤及严重级别设置,便于团队统一检查标准。

20

2026.10.22

Golangci-lint安装与入门教程
Golangci-lint安装与入门教程

本专题讲解Golangci-lint的安装、初始化、基础命令和首次代码检查,覆盖本地环境、Docker及多平台用法,帮助Go开发者快速上手。

20

2026.10.22

PHP2Shell高危漏洞修复教程
PHP2Shell高危漏洞修复教程

PHP2Shell漏洞是什么,哪些PHP版本和运行环境会受到影响,服务器应该如何检测与修复?本专题提供版本自查脚本、Linux与Docker升级命令、PHP-FPM和Apache排查步骤,以及修复验证、临时缓解和应急响应方案。

140

2026.10.22

剧云人物设定与关系管理教程
剧云人物设定与关系管理教程

本专题介绍剧云人物设定与关系管理,讲解角色小传、性格职业、人物目标、背景资料和关系网络的创建及维护方法。

20

2026.10.22

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
光速学会docker容器
光速学会docker容器

共33课时 | 3万人学习

Docker 17 中文开发手册
Docker 17 中文开发手册

共0课时 | 0人学习

Docker 教程
Docker 教程

共19课时 | 29.5万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn