当事人复盘 GitLab 史上最严重的数据库故障

GitLab私有化部署实战:Ubuntu+Nginx+PostgreSQL生产级搭建指南 GitLab作为企业级代码协作平台,其私有化部署是保障数据主权、满足等保合规与构建自主CI/CD基础设施的核心能力。其底层依赖Linux系统调优、反向代理安全加固及PostgreSQL高可用数据库支撑,技术原理涵盖进程管理、HTTPS流量卸载、JSONB类型存储与Omnibus统一运维机制。相比GitHub托管服务,GitLab私有部署赋予团队对源码、日志、用户行为的全链路控制权,广泛应用于政务云、金融核心系统、高校实训平台及医疗IT系统等强合规场景。本文聚焦Ubuntu 22.04环境下的真实生产部署,深 阅读详情

故事来源于当事人最近发表的回忆录相关节选。

file

GitLab 官网上还有当年这次事故的纪录,事件发生在 2018 年 2 月 1 日。

file

误删库原因

GitLab.com 使用的是 PostgreSQL,一主一备两个集群,分别是 db1.cluster.gitlab.com 和 db2.cluster.gitlab.com。当事人 发现 db2 集群无法从 db1 同步数据过来,再尝试了几种方法都不奏效后,就决定尝试重置 db2,也就是清空 db2 的数据目录。只是当事人操作在了主集群 db1 上,当他意识到问题时,300 GB 的数据只剩下 4.5 GB 了。

file

主库被误删,GitLab.com 只能立马下线了。

恢复过程

file

GitLab 官方提到有好几道防线,所以最后还是恢复了过来。不过就像一开始当事人回忆里提到的,差一点点就完蛋了。事实上 GitLab 设置的所有防线其实都被击穿了:

  • 每天的自动备份不奏效,因为备份所用的 pg_dump 版本和 GitLab 的 PG 版本不一致,所以每次备份只产生了几个 bytes 的数据。
  • 在 Azure 上的磁盘备份没有在数据库服务器上启用。
  • 到 S3 的备份也是坏的,目录为空。

所幸的是,当事人在操作前的 6 小时,因为知道要处理数据库负载均衡问题,所以做了一个手工备份。所以最后 GitLab.com 花了 24 个小时,把这个手工备份恢复了出来,但是 6 小时的数据是完全没了。

复盘

  • 备份恢复需要定期演练。不演练还不如不要备份。这点其实也从侧面体现了云数据库服务商的优势。因为他们能够保障备份的有效性,也提供了 Point-in-time-recovery (PITR) 这样的闪回能力。GitLab 是自己在云主机上搭了数据库服务,手搓一套备份/恢复的方案,结果完全不可用。
  • 不要在疲劳时操作数据库。当事人本来已经因为时间很晚,准备休息了。但因为突然出现的同步问题,继续熬夜。

file

  • 尽可能通过工具而不是人肉操作。GitLab 的这个故障应该是当事人直接登上服务器,进行命令行操作的。这里至少有 2 个卡点可以引入工具,一个是登陆服务器,一个是登陆后在服务器上执行命令。如果通过工具操作的话,工具界面会提示正在操作生产库,并且进一步可以设置审批流程。
  • 危险操作事前先备份。这个故障可以挽回在于当事人还是一个老手,所以做了事前手工备份,否则后果不堪设想。

前段时间 Linear 误用 TRUNCATE 也造成了其史上最大故障。对生产环境,尤其是数据库上的操作永远要心怀敬畏。操作时应该尽量通过工具自动化。万不得已需要手动挡,始终也要确保有可用备份兜底。


💡 更多资讯,请关注 Bytebase 公号:Bytebase

GitLab CI/CD 内网部署实战:可控、合规、高可用的私有化流水线搭建 GitLab CI/CD 是企业级持续集成与交付的核心平台,其内网部署本质是将流水线执行环境完全置于组织可控网络边界内,依托 GitLab Omnibus 安装、Runner 分布式注册、MinIO 制品归档等关键技术,实现构建过程的可审计、低延迟与强合规。相比公有云方案,内网部署规避了数据出境风险,满足等保二级、医疗 HIPAA 或金融行业对代码资产‘物理隔离’的硬性要求,同时支持深度定制——如 LDAP 域鉴权透传、构建资源 CPU 绑核、静态扫描结果直推本地 Elasticsearch。本文聚焦真实生 阅读详情

相关推荐

构建生产级MLOps:用GitLab CI/CD Pipeline实现模型自动训练与发布

CI/CD Pipeline是数据科学项目从实验走向生产的基础设施,其核心在于将模型开发、验证、部署流程标准化、自动化和可审计化。它不仅涵盖代码集成与服务发布,更需嵌入数据质量校验、模型性能回归测试、环境一致性保障等关键环节。在MLOps实践中,GitLab CI因其细粒度权限控制、Runner隔离性及YAML配置可维护性,成为中小团队落地CI/CD Pipeline的高性价比选择。结合结构化代码组织、依赖锁定策略与分阶段Pipeline设计,可显著降低模型上线故障率,提升迭代效率与系统稳定性。本文聚焦真实

weixin_33816300的博客 438

GitLab事故之技术详叙

本文对GitLab事件进行了全盘回顾,继续追踪GitLab在2月1日发布的申明,追溯各种问题根本原因。然后陈列了恢复在线后,GitLab声明了哪些下一步举措。最后摘录了一些网友在Twitter和YouTube的评论,大多数人都对GitLab表达了自己的支持和宽容。 事件总览 2017年1月31日18:00(UTC时间),GitLab通过推特发文承认300GB生产环境数据因为UNIX S

xiaoliuhu的专栏 1456

LLM智能运维实战:上下文分区策略提升故障诊断精准度

在智能运维(AIOps)领域,大语言模型(LLM)的应用正从通用问答转向解决专业场景的复杂问题。其核心挑战在于如何将海量、异构的运维数据(如日志、指标、拓扑)有效转化为模型可精准推理的输入。传统方法将原始数据直接输入,易导致LLM输出笼统、缺乏可操作性的结论。上下文分区技术通过引入领域知识,对故障信息进行结构化预处理与逻辑划分,为LLM构建清晰的诊断路径。该技术遵循从现象描述、组件状态、近期变更到诊断约束的递进逻辑,实质是将专家经验编码为可执行的“思维链”,从而显著提升根因分析的准确性与行动建议的针对性。本

weixin_33681778的博客 441

Gitlab:一场“删库”血案引发的反思

过年期间,一条Gitlab误删数据的新闻占领了各大科技网站的头条。一切令人惊叹感慨,一切又让人似曾相似。回首2016年,网络重大异常事件其实并不罕见。 2016.03 全球三分之二网站服务器用的开源加密工具OpenSSL爆出“水牢漏洞”。 2016.04 土耳其因数据库漏洞,近5000万公民信息遭泄露。 2016.09 雅虎曝史上最大规模信息泄露,5亿用户资料被窃。 Dyn DN

luyaran的博客 4962

模型上线后的真实挑战:从集成故障到合规治理的生产实践

机器学习模型部署不是终点,而是系统性工程的起点。在真实业务场景中,模型必须作为可运维、可审计、可降级的软件组件运行——它需满足毫秒级延迟SLA、应对数据漂移与依赖异常、支持多级优雅降级,并通过鲁棒性、公平性、可解释性等维度完成企业级验证。尤其在金融等强监管领域,模型决策必须具备完整血缘追溯、变更受控、日志留痕与合规编码能力。本文基于银行风控、支付反欺诈等高压力实战经验,深入解析特征服务集成陷阱、混沌压力测试方法、漂移响应SOP及‘合规即设计’落地路径,揭示90%生产故障源于系统集成而非算法本身这一关键认知。

didui8202的博客 512

Azure PostgreSQL托管服务选型与高可用实战指南

PostgreSQL作为企业级开源关系数据库,其云上落地面临运维复杂、弹性模糊、安全合规等共性挑战。Azure Database for PostgreSQL通过Single Server、Flexible Server和Hyperscale(Citus)三类部署模型,分别对应轻量验证、生产可控与分布式扩展三大技术范式。其核心价值在于将数据库能力与基础设施解耦,以托管方式提供SLA保障的高可用、细粒度网络隔离、默认加密及AD集成等企业就绪特性。本文聚焦真实迁移项目中的架构决策逻辑,深入解析不同场景下部署模型

liudaoru - 悟 394

02-gitlab的数据备份和恢复

关于数据备份,咱们就不需要多说什么了,主要就是方式数据意外丢失,导致代码上线流程及数据的损坏崩溃;为了避免严重生产事故,进而gitlab有了数据备份与恢复的功能。

2302_79199605的博客 2646

GPT-5.5如何接管PM核心决策:任务流感知、动态图谱与多角色推演

项目管理(PM)正从文档执行走向智能协同决策,其本质是将模糊经验转化为可量化、可验证、可追溯的判断过程。现代AI协作系统不再停留于自然语言生成,而是通过深度集成研发工具链(如Jira/Confluence/GitLab),实现对任务流的实时感知、对历史经验与实时数据融合构建的动态决策图谱,以及基于角色约束条件的多视角协同推演。这种能力突破了传统AI‘响应式问答’局限,直击PM工作中最耗能的三大痛点:会议信息沉淀低效、需求风险预判滞后、迭代复盘归因模糊。它不替代人的战略判断与责任担当,而是接管机械性判断环节,

huqiyes的专栏 419

【GitLab】docker 部署 Gitlab 丢失后如何进行恢复

缘起: 今天高高兴兴来上班,打开git更新代码,提示更新失败! 由于是在Mac机器上基于docker部署的,我以为是网络问题,于是开始排查。 1.检查网络 ===> 网络良好! 2.检查主机网络 ===> 网络良好! 3.检查docker服务: 什么!!!!竟然镜像和容器都没了!!! 于是,我像一个热锅上的蚂蚁,小伙伴都等着同步代码呢。一开始方向错了,做了如下操作: 1.查找如何恢复docker; 2.docker镜像丢失如何恢复; 3.docker容器历史记录如何查找;.

冯一朔 - 不想当CTO的程序员不是一个好哲学家 2481

生产级机器学习系统:从模型部署到故障兜底的工程实践

机器学习模型上线并非项目终点,而是系统性风险的起点。在真实生产环境中,数据漂移、特征失效、计算不确定性与链路脆弱性共同构成核心挑战。本文围绕MLOps工程化落地,深入解析可观测性设计、韧性降级机制、契约化集成与漂移检测体系等关键技术原理,强调模型服务必须具备熔断、审计、可追溯与业务可解释能力。面向金融、风控等高可靠性场景,内容覆盖特征时效性保障、延迟预算分解、五层灰度发布及合规驱动的决策日志治理,为构建稳定、可信、可审计的生产ML系统提供完整技术路径。

weixin_34315485的博客 344

构建高效系统发版验证流程:从规范设计到工程实践

在软件工程领域,系统发布是保障服务稳定与持续交付的关键环节。其核心原理在于通过标准化的流程设计,将依赖个人经验的分散操作,转化为可重复、可验证的工程实践,从而系统性降低人为失误风险。这一实践的技术价值在于明确团队协作中的角色与职责,形成可追溯的交付记录,为持续集成与持续部署(CI/CD)的成熟度提升奠定基础。典型的应用场景包括互联网企业的敏捷迭代、金融系统的稳定发布以及传统企业的数字化转型过程。本文聚焦于**系统发版验证流程规范**的构建,通过引入**四阶十步**的闭环生命周期模型,详细阐述了从发布前准备到

aizexi2652的博客 303

误删 300G,GitLab 官方对删库事故的事后分析

2017年1月31日,我们的在线服务 GitLab.com 发生了严重的事故。这次事故由误删引起,导致了我们的主数据库数据丢失。     这次事故导致了GitLab服务长时间中断。我们还永久损失了部分生产数据,无法恢复。更严重的是,我们还损失了数据库的相关记录数据,包括项目、注释、用户账户、问题和代码段,这些事情都是在2017年1月31日17:20至00:00发生的。即使是乐观地估计,本...

黑色幽默 2351

【域控制器EMC】域控制器EMC设计总结

汇总项目设计当中关于EMC的设计要点,主要从原理设计、Layout、结构、外设部分总结。满足要求的器件和合理的电路能降低电磁干扰;正确的布局、接地、信号路径、屏蔽等可以减少电磁辐射。结构件设计也会对EMC性能产生影响。

weixin_42098658的博客 1260

程序员副业实战复盘:技术变现、效率优化与战略聚焦

在软件工程领域,持续学习与个人成长是开发者职业发展的核心驱动力。通过系统化的复盘与迭代,程序员能够将技术能力转化为多元价值。技术专栏运营、SaaS产品打磨与技术顾问服务,构成了现代开发者副业变现的典型路径。其中,深度技术解析(如Kafka消费者位移提交机制)与用户反馈驱动的产品迭代,是构建技术壁垒与提升产品价值的关键实践。这些方法不仅创造了被动收入来源,更培养了从编码执行到架构设计、产品运营的复合能力。对于寻求技术成长的工程师而言,建立个人知识体系、优化工具链并聚焦高价值领域,是实现可持续副业发展的有效策略

weixin_33796177的博客 523

yolov5深度剖析+源码debug级讲解系列(一) yolov5的架构和源码debug准备

前言 前段时间分析了yolov3的源码,这次想带着小伙伴一起把yolov5完全掌握。博主还是保持着一贯的风格,依旧采用debug级别的源码剖析。目的就是让大家可以通过一个系列的文章就把yolov5的架构、设计理念和每一行源码都弄懂。只要小伙伴可以花时间把这个系列读完,就会对yolov5的理解有所提升。 去年参加了kaggle的小麦检测比赛,yolov5在比赛的中段开始呈现霸榜趋势,超越了efficientdet。虽然最后yolov5因为权限等某些问题被kaggle官方禁用了,但是仍然体现出了其强大的能力。值

人唯优的博客 4万+

风力摆控制系统 PCB 设计 3 要点:STM32+MPU6050+空心杯电机驱动一体化

本文详细解析了风力摆控制系统PCB设计的3大核心要点,重点介绍STM32主控、MPU6050姿态传感器与空心杯电机驱动的一体化方案。通过系统架构设计、PCB布局布线技巧以及噪声抑制方案,帮助参赛者在电子设计竞赛中构建高精度、高稳定性的风力摆控制系统,提升竞赛作品性能。

weixin_30363285的博客 363

从CTF选手到出题人:我的第一个Docker动态靶机实战复盘

本文详细记录了从CTF选手转型为出题人的实战经验,重点解析了Docker动态靶机设计的七个关键环节,包括CTFd平台搭建、动态Flag实现、镜像优化等核心挑战。通过具体案例展示了如何解决版本兼容性、权限控制等典型问题,为安全竞赛出题提供可复用的技术方案。

weixin_30700099的博客 433

Audio2Face进阶玩法:结合LiveLink在UE5中实现MetaHuman全身动画+语音驱动(保姆级配置指南)

本文提供了一份详尽的保姆级教程,指导如何将NVIDIA Audio2Face与Unreal Engine 5的LiveLink功能结合,实现驱动MetaHuman数字人面部表情的同时,无缝融合身体动画。文章详细讲解了从环境准备、插件部署、基础面部驱动测试,到动画蓝图高级配置与多数据流融合的全流程,并分享了性能优化与问题排查的实战经验,旨在帮助创作者打造表情与肢体动作协调统一的生动数字人。

q9w8e7r6t5的博客 198

异地备份的本质是故障域隔离,不是地理距离

异地备份(Offsite Backup)是保障业务连续性的核心灾备能力,其技术本质并非简单的物理位移,而是通过空间、电力、网络、管理四重维度实现故障域(Failure Domain)的彻底解耦。它建立在数据持久性、RPO/RTO可控性、密钥与数据分离等基础原理之上,具备抵御区域性断电、火灾、勒索软件、光缆中断等单点毁灭事件的技术价值。广泛应用于金融、政务、医疗、在线教育等对数据生存有强合规与高可用要求的场景。本文聚焦‘三重空间隔离验证法’与四大典型技术陷阱,揭示真正可用的异地备份必须满足电力独立、网络路径异

weixin_30460489的博客 322

LMX2820即时校准实战:从失锁到稳定锁频的完整指南

本文详细解析了LMX2820锁相芯片在高频段(11.3-22.6GHz)易出现随机失锁问题的根源,并提供了即时校准(InstCal)的完整实战指南。通过寄存器编程、Index例程和校准配置的关键步骤,确保从失锁到稳定锁频的高可靠性,大幅提升射频合成器在通信与测试测量应用中的性能。

bert9linguist的博客 961

核回归(Kernel Regression)

本文讲解了核函数,并且实战通过核函数进行了预测,并附python代码

a2333333_的博客 6957

软件开发中的版本回退策略与最佳实践

版本回退是软件开发与系统维护中的关键技术手段,主要用于应对生产环境中的突发故障。其核心原理是通过快速切换到稳定版本保证系统可用性,技术价值体现在降低业务损失和运维成本。典型的应用场景包括支付系统故障、服务不可用等紧急情况。通过建立代码质量保障体系、实施渐进式发布策略(如蓝绿部署和金丝雀发布)以及构建立体化监控体系(如Prometheus和Grafana组合),可以有效减少回退频率。在DevOps实践中,结合混沌工程和标准化回退流程,能够显著提升系统稳定性。数据显示,优化后的项目可实现连续6个月零回退的记录。

weixin_30915275的博客 353

[QMT量化交易小白入门]-二十八、有了回测年化收益好的策略,如何在QMT量化实盘呢(附python代码解析)

本专栏主要是介绍QMT的基础用法,常见函数,写策略的方法,也会分享一些量化交易的思路,大概会写100篇左右。QMT的相关资料较少,在使用过程中不断的摸索,遇到了一些问题,记录下来和大家一起沟通,共同进步,自己淋过雨了,希望大家都有一把伞。

木头大左的博客 2927

GitHub宕机启示录:从AI代码托管到研发高可用架构实战

代码托管平台是现代软件开发的核心基础设施,其高可用性直接影响团队协作与交付效率。当中心化服务出现故障时,整个开发流程可能陷入停滞,这凸显了分布式备份与灾备方案的技术价值。通过镜像同步、多平台CI/CD配置等工程实践,开发者可以构建弹性的研发基础设施,降低对单一服务的依赖。在此背景下,新兴的AI-Native平台如Cursor Agent,通过集成智能代码审查和自然语言操作等创新功能,为代码托管领域带来了新的可能性。本文结合GitHub服务中断的真实案例,探讨了如何平衡对主流平台的依赖与对新技术的探索,为团队

weixin_30788619的博客 415

CAN总线入门(硬件部分)

这篇博客讲述CAN总线入门知识。

记得诚 1万+

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

DevOps实践指南:从文化到工具链的完整落地路径

DevOps是一套融合文化、实践与工具的方法论,旨在通过自动化与协作提升软件交付效率与质量。其核心原理在于打破开发、运维等环节间的壁垒,建立共享责任与持续改进的文化。技术价值体现在通过持续集成/持续部署(CI/CD)、基础设施即代码等实践,实现快速、可靠的软件交付。应用场景广泛覆盖从传统应用到云原生微服务架构的各类项目。本文基于GitLab CI、Kubernetes等主流工具链,详解如何搭建自动化流水线,并分享多环境管理、安全左移等进阶实践,帮助团队构建高效协作的交付能力。

weixin_30915951的博客 362

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

上一篇: HN 千赞热贴|创业 4 年,那些狠狠打我脸的技术选型
下一篇: 头疼管理 MySQL 数据库 Schema?开源工具大盘点!
Bytebase
博客等级 码龄5年 1349粉丝 258原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值