因为意外删库,这家软件届的爱马仕遭遇了成立 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 的恢复。
故障原因
故障排查和恢复
故障影响面
故障反思
剥夺所有用户在生产数据库上的 TRUNCATE 权限。 改进如何创建和执行数据库的变更操作。其中包过通过 DBA 的审核实践,和代码审核分离,以及自动检查高危操作。 改进预发环境的数据库变更测试流程。 构建和演练使用 PITR 的数据恢复流程。 改进内部事故处理的流程。 改进数据完整性检查。 给 Linear 添加只读模式。这样即使数据库不可写时,依然可以能让用户访问。