写点什么

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

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

关注

评论

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

搭乘“数字快车”!双十一华为云Flexus云服务器X实例助力轻松上云

YG科技

9大行业伙伴携手并行,1.5万余个行业应用启动鸿蒙化开发

最新动态

大模型推荐系统如何高效预训练和推理

博文视点Broadview

远程踏勘系统(源码+文档+部署+讲解)

深圳亥时科技

CDN海外加速对国际服务器的效果如何?

Ogcloud

CDN 网络加速 CDN加速 海外网络加速 CDN网络加速

NTFS Disk by Omi NTFS for mac(NTFS 磁盘管理器)

Mac相关知识分享

OmniGraffle for mac(思维导图软件)中文版

Mac相关知识分享

App Cleaner & Uninstaller:Mac 用户的必备清理卸载神器!

理理

5分钟搞懂 Golang 堆内存

俞凡

golang

国科云:SSL证书配置过程中常见问题盘点

国科云

Rust + 云原生 | Greptime 在 COSCon'24 中国开源年会上说了什么?

Greptime 格睿科技

数据库 开源 rust 云原生 活动

苹果电脑SVN管理工具:Cornerstone 4 for Mac 免激活版

你的猪会飞吗

cornerstone 4破解 cornerstone 4 破解版 cornerstone 4许可 cornerstone 4下载

ppt结尾页怎么设计?推荐12个高颜值ppt结束页模板!

职场工具箱

效率工具 职场 PPT 办公软件 AI生成PPT

ECCV2024 | 京东零售广告创意:基于人类反馈的可信赖图像生成

京东零售技术

论文解读 ECCV 2024

柔性算力、行业首创!双十一华为云Flexus云服务器X实例革新轻量云体验

YG科技

柔性算力、业界首创!双十一华为云Flexus X实例革新云服务体验

YG科技

性能越级、体验超群!双十一企业云服务首选华为云 Flexus X实例

YG科技

论云游戏的性能与性价比,ToDesk、青椒云、顺网云游戏等具体实操看这篇就够了

小喵子

云桌面 云电脑 云游戏 ToDesk

Final Cut Pro中文教程:遮罩的基本使用

理理

课程质量评估系统(源码+文档+部署+讲解)

深圳亥时科技

无代码技术怎么兴起的?它对企业数字化转型有什么用处?

积木链小链

技术分享 无代码 无代码平台

BSC链近况及解读:BSC链代币DApp开发详解

区块链软件开发推广运营

交易所开发 dapp开发 链游开发 公链开发 交易所开发代币开发

性能全面跃级,成本大幅降低!双十一企业云服务就选华为云Flexus X实例

YG科技

Java灵魂拷问13个为什么,你都会哪些?

不在线第一只蜗牛

Java Python

Python中哪个框架最适合做API?

科普小能手

API Python框架 Python开发 pyton API 接口

SEO-AI内容生成策略

Quincy

CMS SEO SEO优化 AI 基础设施

《Django 5 By Example》阅读笔记:p76-p104

codists

Python django

Project Office X Pro for Mac专业的项目管理软件

Mac相关知识分享

文心快码3.0 引领智能代码助手率先进入智能体时代

百度安全

区块链智能合约开发:全面解析与实践指南

区块链软件开发推广运营

交易所开发 dapp开发 链游开发 NFT开发 公链开发

Go中数组和切片

EquatorCoco

c++ Go 算法

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