写点什么

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

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

关注

评论

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

云上办公时代,华为云桌面表现如何?

平平无奇爱好科技

🔥年中技术盘点暨7月主题征文活动开始啦!

InfoQ写作社区官方

热门活动 年中技术盘点

华为云CodeArts IDE Online:让你随时随地畅享云端编码乐趣

华为云PaaS服务小智

云计算 软件开发 华为云 华为开发者大会2023

研发质量指标大 PK:MTTR vs MTBF,谁是靠谱王?

LigaAI

高可用性 研发效能度量 MTTR 研发效能管理 企业号 7 月 PK 榜

软件测试/测试开发丨Selenium的常用元素定位方法

测试人

Python 软件测试 自动化测试 测试开发 selenium

休闲类匹配竞技游戏公司为何需要华为云游戏云端部署方案?

平平无奇爱好科技

推荐书单:个人成长的一些方法

老张

个人成长 书单

prometheus描点原理

蓝胖子的编程梦

Docker 云原生 Grafana Prometheus #k8s

PoseiSwap 治理通证POSE登录PancakeSwap,开盘涨幅超2100%

西柚子

HDC开发者盛典 | 破解创业老板高效制果汁奥秘挑战!赢取代金券、按摩枕、收纳袋等礼品~

华为云PaaS服务小智

云计算 软件开发 华为云 华为开发者大会2023

Python案例分析|井字棋(Tic Tac Toe)游戏 | 社区征文

TiAmo

Python 年中技术盘点 井字棋游戏

图+AI 生成未来|悦数图数据库亮相 2023 世界人工智能大会

悦数图数据库

AI 图数据库 大模型 AIGC

语音直播源码知识分享:探索新的沟通方式

山东布谷科技

软件开发 语音 源码搭建 直播源码 语音直播源码

2023年CCF-百度松果基金课题申报持续进行中,截至7月24日

飞桨PaddlePaddle

人工智能 百度 paddle 飞桨 百度飞桨

ABAQUS有限元分析软件吃CPU还是GPU比较多?

思茂信息

gpu cpu 显卡 ANAQUS 有限元分析

不能不知道的LED显示屏产业机遇

Dylan

机遇 产业 LED显示屏 led显示屏厂家

在 7 月 4 日,PoseiSwap 治理通证 $POSE 上线了 BNB Chain 上的头部

鳄鱼视界

关于Java已死,看看国外开发者怎么说的

越长大越悲伤

Java 后端

华为云游戏云端部署方案:如何为游戏厂商降本增效

平平无奇爱好科技

华为云函数工作流FunctionGraph新手操作指南

华为云PaaS服务小智

云计算 Serverless 华为云 华为开发者大会2023

货拉拉论文入选中国市场营销国际学术年会CMIC

科技热闻

聆心智能上榜“北京市通用人工智能大模型行业应用典型场景案例”

硬科技星球

认知负担的挑战与平台工程的机遇

SEAL安全

DevOps 平台工程 认知负担

火山引擎DataLeap数据质量解决方案和最佳实践(三):最佳实践

字节跳动数据平台

利用小程序技术,构建数字警务体系

没有用户名丶

MySQL的match函数在sp中使用的BUG解析

GreatSQL

数据库 greatsql

​山东大学高校专区入驻飞桨AI Studio,优质教育资源等你来学!

飞桨PaddlePaddle

人工智能 百度 paddle 百度飞桨

爽游做得好,游戏部署方案必不可少,华为云游戏云端部署方案愈发吃香了

平平无奇爱好科技

MatrixOne 0.8.0 开放公测啦!

MatrixOrigin

云原生 超融合 #数据库 MatrixOne

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