当事人复盘 GitLab 史上最严重的数据库故障
故事来源于当事人最近发表的回忆录相关节选。
GitLab 官网上还有当年这次事故的纪录,事件发生在 2018 年 2 月 1 日。
误删库原因
GitLab.com 使用的是 PostgreSQL,一主一备两个集群,分别是 db1.cluster.gitlab.com 和 db2.cluster.gitlab.com。当事人 发现 db2 集群无法从 db1 同步数据过来,再尝试了几种方法都不奏效后,就决定尝试重置 db2,也就是清空 db2 的数据目录。只是当事人操作在了主集群 db1 上,当他意识到问题时,300 GB 的数据只剩下 4.5 GB 了。
主库被误删,GitLab.com 只能立马下线了。
恢复过程
GitLab 官方提到有好几道防线,所以最后还是恢复了过来。不过就像一开始当事人回忆里提到的,差一点点就完蛋了。事实上 GitLab 设置的所有防线其实都被击穿了:
- 每天的自动备份不奏效,因为备份所用的 pg_dump 版本和 GitLab 的 PG 版本不一致,所以每次备份只产生了几个 bytes 的数据。
- 在 Azure 上的磁盘备份没有在数据库服务器上启用。
- 到 S3 的备份也是坏的,目录为空。
所幸的是,当事人在操作前的 6 小时,因为知道要处理数据库负载均衡问题,所以做了一个手工备份。所以最后 GitLab.com 花了 24 个小时,把这个手工备份恢复了出来,但是 6 小时的数据是完全没了。
复盘
- 备份恢复需要定期演练。不演练还不如不要备份。这点其实也从侧面体现了云数据库服务商的优势。因为他们能够保障备份的有效性,也提供了 Point-in-time-recovery (PITR) 这样的闪回能力。GitLab 是自己在云主机上搭了数据库服务,手搓一套备份/恢复的方案,结果完全不可用。
- 不要在疲劳时操作数据库。当事人本来已经因为时间很晚,准备休息了。但因为突然出现的同步问题,继续熬夜。
- 尽可能通过工具而不是人肉操作。GitLab 的这个故障应该是当事人直接登上服务器,进行命令行操作的。这里至少有 2 个卡点可以引入工具,一个是登陆服务器,一个是登陆后在服务器上执行命令。如果通过工具操作的话,工具界面会提示正在操作生产库,并且进一步可以设置审批流程。
- 危险操作事前先备份。这个故障可以挽回在于当事人还是一个老手,所以做了事前手工备份,否则后果不堪设想。
前段时间 Linear 误用 TRUNCATE 也造成了其史上最大故障。对生产环境,尤其是数据库上的操作永远要心怀敬畏。操作时应该尽量通过工具自动化。万不得已需要手动挡,始终也要确保有可用备份兜底。
💡 更多资讯,请关注 Bytebase 公号:Bytebase

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
Sora背后团队大揭秘!天才00后?
现在世界上最受关注的技术团队是哪一支? Sora 团队,已经来到聚光灯中心。 不仅项目负责人评论区被挤爆,成了𝕏最火“景点”。 当 OpenAI 出手发布 Sora 之后,给人一种降维打击的感觉—— 效果和之前的技术相比高出了几个档次。这就难免会让人好奇,到底是什么样的人才能做出这样炸裂的工具的呢?今天我们就来盘点一下Sora背后的团队成员。 这些参与者中,已知的核心成员包括研发负责人:Tim Brooks、Bill Peebles、系统负责人: Connor Holmes 等。这些成员的信息也成为了众人关注的焦点。 重点来介绍一下Sora的几位主要负责人,包括 Tim 和 Bill 在内,Sora 的主要负责人一共有三名(以下排名不分先后) Sora的总负责人Tim Brooks,博士毕业于 UC Berkeley 的「伯克利人工智能研究所」BAIR,导师为 Alyosha Efros。 Tim 本科就读于卡内基梅隆大学,主修逻辑与计算,辅修计算机科学,其间在 Facebook 软件工程部门实习了四个月。 2017 年,本科毕业的 Tim 先到 Google 工作了近两年,...
- 下一篇
掌握云容器网络:何为ipvs
本文分享自华为云社区《【理解云容器网络】2-基础篇-ipvs介绍》,作者: 可以交个朋友。 IPVS简介 ipvs是工作在Linux内核态的4层负载均衡;和用户态的负载均衡软件(如nginx、haproxy)功能类似:作为客户端访问的统一入口并将访问请求根据调度算法转给后端真实的服务器。相比于用户态负载均衡,ipvs为Linux内核子模块性能更强,但ipvs仅工作在4层无法处理7层数据(比如SSL证书、修改HTTP请求头)。 IPVS调度算法 IPVS是如何决策应该把请求调度到哪个后端RS(Real Server)上的呢?这是由负载均衡调度算法决定的。IPVS常用的调度算法有: 轮询(Round Robin):IPVS认为集群内每台RS都是相同的,会轮流进行调度分发。从数据统计上看,RR模式是调度最均衡的。 加权轮询(Weighted Round Robin):IPVS会根据RS上配置的权重,将消息按权重比分发到不同的RS上。可以给性能更好的RS节点配置更高的权重,提升集群整体的性能。 最小连接数(Least Connections):IPVS会根据集群内每台RS的连接数统计情况,将消...
相关文章
文章评论
共有0条评论来说两句吧...