阿里、蚂蚁、晟腾、中科加禾精彩分享 AI 基础设施洞见,现购票可享受 9 折优惠 |AICon 了解详情
写点什么

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

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

关注

评论

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

Hive SQL底层执行原理

五分钟学大数据

Hive SQL 1月月更

TDSQL | 将企业级分布式数据库做到极致

腾讯云数据库

tdsql 国产数据库

TDSQL-C for PostgreSQL 主从架构详解

腾讯云数据库

tdsql 国产数据库

2021 OceanBase 开源半年度报告 | 不忘初心,感恩同行

OceanBase 数据库

开发者 报告 OceanBase 开源 OceanBase 社区版

GIS :元宇宙未来发展的有力技术支撑

华为云开发者联盟

AI GIS 虚拟世界 数字孪生 云宇宙

1月月更|推荐学java——Spring之AOP

逆锋起笔

spring SSM框架 spring aop 依赖注入 面向切面编程

前端使用 zx 库在 Node 中编写 Shell 脚本

devpoint

node.js Shell 1月月更 zx.js

知识库进化论 | 华创资本对话 ONES & 为知笔记创始人

万事ONES

MySQL分区表简介

soap said

:MySQL 数据库

ONES CTO 冯斌|如何低成本地做出高质量决策

万事ONES

Serverless 背景下,一部分“前端工程师”会转变为“应用交付工程师”

杨成功

Serverless 架构 前端

我相信:没有解不开的难题|ONES 人物

万事ONES

我以订披萨为例,给女朋友详细讲了Java设计模式的3种工厂模式

华为云开发者联盟

Java 工厂模式 工厂方法模式 简单工厂模式 抽象工厂模式

Hadoop小文件问题产生及解决方案

五分钟学大数据

hadoop 1月月更

软件设计——依赖倒置

苏州程序大白

架构师

Chrome插件:摸鱼倒计时、每日摸鱼时间统计,奋斗逼、卷王必备,用于减少摸鱼时间和频率

OBKoro1

效率 开源 效率工具 chrome扩展 高效率

线上流量对比应用实践

得物技术

架构 数据 流量 实践 流量回放

使用php-amqplib实现RabbitMq

Owen Zhang

php RabbitMQ php-amqplib

组件通信、硬件池化,这些创新技术你get了吗?|HDC2021技术分论坛

HarmonyOS开发者

HarmonyOS

大数据开发之通过 Spark 来扩展 Presto

@零度

大数据 spark

TDSQL PG版企业级分布式数据库技术创新实践

腾讯云数据库

tdsql 国产数据库

虎符研究院深入解读Web3.0未来趋势 盘点代表性项目

区块链前沿News

Web Hoo虎符 虎符研究院 虎符平台 3.0

Jetpack—LiveData组件的缺陷以及应对策略

vivo互联网技术

android livedata JetPack 移动应用开发

前端开发之JQuery的综合应用

@零度

jquery 前端开发

Android技术分享| 自定义View实现使用更方便的SeekBar

anyRTC开发者

android 音视频 移动开发 白板 SeekBar

龙蜥社区一周动态 | 1.10-1.14

OpenAnolis小助手

Linux 开源 社群

Scrum Master需要具备哪些能力和经验

华为云开发者联盟

Scrum 敏捷 团队 教练 Scrum Master

ReactNative进阶(二十三):Javascript 严格模式详解

No Silver Bullet

React Native 1月月更

java开发之Redis的使用规范

@零度

redis JAVA开发

创业老兵李峻的新征程|ONES 人物

万事ONES

CSS 自适应内容宽度的输入框

编程江湖

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