写点什么

调查报告深入揭示了 GitLab.com 服务中断 18 小时的根本原因

  • 2017-02-28
  • 本文字数:1116 字

    阅读完需:约 4 分钟

在结束故障并清除了问题后,GitLab 给出一个帖子,总结了导致长达 18 小时服务中断的原因、他们计划如何继续发展,以及整个事故是如何发生的。

数据库的高负载在一开始被诊断为大量垃圾邮件的涌入。但是在进一步审查后,明确了是由于无事生非的家伙将一位 GitLab 员工举报为滥用,事故因此而恶化了。另一位员工在审查滥用报告时并没有意识到被举报的账号其实是团队中一位工程师的账号,因此意外地删除了该账号:

我们随后发现这一部分负载是由一个后台任务试图去移除 GitLab 员工及其相关数据所导致的。这就是他们的账号被标识为滥用并意外地被删除的结果。

根据作为当事人的工程师在故障报告中的记录,他的账号被删除是因为“我们收到来自一位用户的垃圾邮件报告,该用户是在发出垃圾邮件报告的10 分钟前创建的。这就产生了人为错误,删除了我的所有项目。”

由于数据库负载的加重,预写式日志 (WAL,Write-Ahead Log) 在得到从数据库处理之前就被主数据库清洗掉了,导致主数据库停止向从数据库复制。不幸的是,WAL 归档也并未被打开。WAL 归档会要求数据段在得到移除许可前被归档。

由于复制已经停止了,需要对从数据库做一次重建。启动复制需要一个空的数据目录,因此一位工程师手工清理干净了一个目录。但该目录并非是从数据库的数据目录,他意外地清除了主数据库的数据目录。

虽然主数据库的不幸损失应该只会让站点关闭一小段时间,但是对于GitLab 团队而言事情更糟。在努力恢复数据的过程中,团队发现自己的备份无法工作。作为备份的主要方法的 pg_dump 由于版本不匹配的问题而不能运行,因此并未备份任何东西。没有人知道存在这个失败,通知邮件因为不支持 DMARC 被服务器拒收。

其它的备份方法也因为各种原因而无法使用,团队并未对数据库使用 Azure 磁盘快照。即使使用了磁盘快照,在线取回数据也将花费很长的时间:

每个存储账号的限制大概为 30TB。恢复快照时使用同一存储账号中的主机通常会完成得很快。但是当用在不同存储账号中的主机时,完成该过程将需要数小时乃至数天。

唯一的方法是恢复事故发生之前六个小时的 LVM 快照。

团队在改进他们的修复恢复过程中碰上了 14 个问题,最终完成了快照的恢复。他们在事故发生后两个星期中实现了 WAL-E ,功能是将 WAL 数据段实时地归档到 AWS S3。对一次恢复的测试表明,这种备份类型在两个小时以内就可以恢复到指定的时间点。此外,他们正在实现一个自动测试PostgreSQL 备份恢复的系统。

查看英文原文: GitLab.com Postmortem Digs into Root Causes of 18 Hour Outage


感谢薛命灯对本文的审校。

给InfoQ 中文站投稿或者参与内容翻译工作,请邮件至 editors@cn.infoq.com 。也欢迎大家通过新浪微博( @InfoQ @丁晓昀),微信(微信号: InfoQChina )关注我们。

2017-02-28 18:003341
用户头像

发布了 227 篇内容, 共 86.1 次阅读, 收获喜欢 28 次。

关注

评论

发布
暂无评论
发现更多内容

鸿蒙NEXT之数据同步艺术之五:跨应用数据交互

最新动态

鸿蒙 NEXT 企业级应用安全认证体系构建实战

最新动态

kubelet报listen tcp [::1]:0: bind问题解决

天翼云开发者社区

容器

″催化型领导力(Catalyst Leadership)″ 敏捷领导者CAL1认证

ShineScrum

项目管理 领导力 敏捷 敏捷领导力 敏捷迭代

鸿蒙 NEXT 电商应用安全支付与密码保护实践

最新动态

“大模型”技术专栏 | 浅谈基于 Kubernetes 的 LLM 分布式推理框架架构:概览

ModelWhale

Kubernetes 分布式 大模型

欧美 VS 东南亚:海外达人营销打法有何不同?

Wolink

出海 海外社媒营销 海外推广 沃链Wolink

220万精选面试题库-Java八股面试宝典!

程序员高级码农

Java Java 面试

七牛灵矽 AI 正式发布:从“会说话”到“懂人心”的智能语音交互全新升级

七牛开发者

智能硬件 AI+ 智能语音交互

鸿蒙编程江湖:I/O 密集型任务处理及 ArkTS 的异步锁机制

最新动态

学员分享:CAL1课程心得与反思

ShineScrum

CAL

OpenTelemetry WebSocket 监控终极方案:打通最后一公里

观测云

OpenTelemetry

朗空量子与 Anolis OS 完成适配,龙蜥获得抗量子安全能力

OpenAnolis小助手

开源 操作系统 龙蜥社区 龙蜥生态

RISC-V基金会Data Center SIG 月会圆满结束,龙蜥副理事长单位成员当选副主席

OpenAnolis小助手

操作系统 risc-v 龙蜥社区 Data Center SIG

专题工作 | CCIA数安委召开反“开盒”技术工作组成立会议

百度安全

手把手教你构建基于魔搭 x OceanBase MCP 的 Agent

老纪的技术唠嗑局

OceanBase 社区版 agent MCP

实时捕捉全球声音:社交媒体监控如何服务国际舆情管理?

沃观Wovision

社交媒体 舆情监控 沃观Wovision

新时代背景下,财务团队优化情景规划的实用指南

智达方通

全面预算管理 财务管理 情景规划

inode节点扩容

天翼云开发者社区

扩容 inode

2025版《数字化转型管理参考架构》趋势白皮书

优秀

数字化转型 数字化 数字化管理 数字化架构

华为鸿蒙 AbilityStage 组件容器:Stage模型的舞台中心

最新动态

HarmonyOS蓝牙串口协议(SPP)详解:实现设备间可靠数据交换

最新动态

技术解读 | 搭建NL2SQL系统需要大模型么?

MatrixOrigin

AI 编程很高效?当心开发一时爽,升级维护火葬场!

行云创新

平台工程 #AI编程

【案例共创】在开发者空间开发MCP Server完成对GaussDB数据库的操作

华为云开发者联盟

邪修的方式找工作那真是非常快

Y11

AI 产品经理 求职 找工作

2025年中国AI算力基础设施发展趋势洞察

易观分析

Prometheus 监控 Kubernetes 最新极简教程

巴辉特

Kubernetes Prometheus

HarmonyOS NEXT 会议应用——多设备协同与应用接续(高级)

最新动态

HarmonyOS的连接艺术之三:拉起指定类型的应用,打造个性化体验

最新动态

调查报告深入揭示了GitLab.com服务中断18小时的根本原因_微软_David Iffland_InfoQ精选文章