这家软件届的爱马仕,遭遇了成立 5 年来的最大故障,元凶还是它
软件里的爱马仕
Linear 是硅谷这两年涌现出的一家明星公司。它做的是类似于 Jira, Asana 的项目管理工具,但定位聚焦在软件研发的项目管理上。Linear 很早就实现盈利了,Vercel,Arc 浏览器,Mercury 这些当红公司也都是 Linear 的客户。
因为创始人强大的设计背景,其在创办 Linear 前曾先后负责过 Coinbase 和 Airbnb 的设计团队。所以 Linear 的产品设计尤其突出,以致于在行业里掀起了 Linear style 的设计潮流。
而就是这样一支全身散发着光环的顶级硅谷团队,也在前不久迎来了 5 年公司历史上最大的一次故障。而元凶依然是我们熟悉的桥段「删库跑路」
故障时间线
目前 Linear 团队已经在官网公开了完整的复盘报告。下面我们来详细梳理一下时间线:
1 月 24 日
04:47: 全量备份完成 (事发前)。 07:01: 造成数据丢失的变更合并入主干。 07:20: 变更完成。 07:52: 发现异常,开始自查。 08:10: 启动严重事故预案,呼叫更多的工程师。 08:36: 更新公开渠道, 包括 status page 和 X,提示正在调查数据访问问题。 09:20: 进一步更新。 09:56: Linear 进入维护模式,防止进一步的变更操作,并且开始从备份进行恢复。 10:48: 数据库恢复到 4:47 的备份,Linear 重新开始可以访问。 11:09: 更新 Status page 到观察状态。 11:30: 开始恢复 4:47 到 9:56 之间的数据。 13:50: 给 4:47 到 9:56 之间新建了 workspace 的用户发送了邮件,因为 Linear 无法重建这些 workspace。 15:35: 给所有受到影响的用户和 workspace 管理员发送邮件,告知故障的信息和恢复方式。
1 月 25 日
14:00: 通知管理员上线了专门的数据还原页面。 14:25: 修复了数据还原页面的 bug,强制客户端刷新 (这又打挂了 API 导致了应用加载的问题). 16:40: 数据恢复试运行启动。 17:49: 正式的数据恢复开始。 19:48: 恢复了 98% 受影响的 workspace。 23:20: 恢复了 99% 受影响的 workspace。
1 月 26 日
07:37: 除了一个 workspace 之外,所有的都恢复了。 08:39: 完成了最后一个 workspace 的恢复。
读着时间线应该也能感受到紧张。事实上 Bytebase 也是 Linear 的用户,受到了波及。这是当时我们收到的邮件。
用户故障群里也有比较着急的用户
故障原因
故障排查和恢复
故障影响面
故障反思
剥夺所有用户在生产数据库上的 TRUNCATE 权限。 改进如何创建和执行数据库的变更操作。其中包过通过 DBA 的审核实践,和代码审核分离,以及自动检查高危操作。 改进预发环境的数据库变更测试流程。 构建和演练使用 PITR 的数据恢复流程。 改进内部事故处理的流程。 改进数据完整性检查。 给 Linear 添加只读模式。这样即使数据库不可写时,依然可以能让用户访问。
读罢 Linear 的整个报告,还是要感慨它的透明度,所谓的 blameless postmortem(对事不对人的复盘)在这个报告中体现的淋漓尽致。再联想到去年国内上热搜的大故障,即使到现在,好多官方也没有一个正式的故障复盘。可能因为定责到个人,个人背后有主管,会影响到绩效,绩效挂钩奖金和晋升,各种利益夹杂在一起,就很难开诚布公地聊了。定责在国内是一种约定俗成,现阶段也很难去改变它,下次再写写怎么样让定责可以更加的客观吧。