写点什么

调查报告深入揭示了 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:003192
用户头像

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

关注

评论

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

面霸是怎样练成的?“2023”带你过关斩将,手撕面试官

钟奕礼

Java 程序员 java面试 java编程

精彩回顾 | 苏州农商银行新一代云原生信息科技架构体系实践

BoCloud博云

云原生

openGauss 3.1.0的新型选择率模型大解密

多场景下 3-11 倍性能提升,Apache Doris 1.2 新版本性能揭秘!

SelectDB

数据库 数据分析 Clickhouse Doris 数仓

openGauss的SQL引擎在3.1.0版本中做了哪些优化?

元年智答|数据洞察功能介绍

元年技术洞察

人工智能 数字化转型 智能

2022年中国新能源汽车出海市场发展洞察

易观分析

新能源汽车 出海

2023跳槽一定不能错过的java面试集——前百度资深架构师整理

钟奕礼

Java 程序员 java面试 java编程

Java最常见的230道面试题,临阵磨枪,不快也光!涨薪指日可待

钟奕礼

Java 程序员 java面试 java编程

极客时间架构训练营模块八作业

李晨

架构

多云时代,如何构建配置管理数据库?

BoCloud博云

欢迎航天宏图加入社区

火山引擎VeDI推出这款产品 助力企业实现以“人”为中心的数据洞察

字节跳动数据平台

大数据 数据分析 火山引擎

应用 Serverless 化,让业务开发心无旁骛

Serverless Devs

海量数据 x 宝兰德 x openGauss Meetup成功举办,广州用户组正式成立!

偶数层PCB板为何在PCB多层板中“独领风骚”?

华秋PCB

工艺 PCB PCB设计

openGauss —— 智能优化器之基数估计

MobPush for HarmonyOS

MobTech袤博科技

国密浏览器是什么?有哪些?有什么特点?

行云管家

国密 国密浏览器

瓴羊Quick BI企业数据分析工具,公司运营实时掌控

巷子

《Python编程:从入门到实践》有奖书评活动来啦!

图灵社区

openGauss内核荣获中国首个国际CC EAL4+级别认证

W3C发布小程序技术标准白皮书

Onegun

小程序 微信小程序

小程序插件和小程序组件,有区别?

FinFish

小程序 移动开发 跨端开发 小程序插件 小程序组件

工信部领导莅临2022南京软博会诚迈科技展区参观指导

科技热闻

Go1.20 新版覆盖率方案解读

大卡尔

Go 测试覆盖率 11月月更

租便宜的云服务器能干啥?有什么好处?怎么选择?

行云管家

云计算 服务器 云服务器

大咖说·图书分享|深入浅出Node.js

大咖说

node.js

从多个角度分析顺序表和链表区别和特点

C++后台开发

数据结构 算法 链表 linux开发 C++开发

java程序员京东T3岗面试回顾:多线程+数据库+中间件+JVM+spring

钟奕礼

Java 程序员 java面试 java编程

C语言学生管理系统

我是一个茶壶

C语言 学生成绩管理系统 11月月更

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