01原理
后备系统的想法很朴素:任何会坏的部件迟早会坏,所以在坏了就要命的地方放第二套,让一处故障不至于变成整体停摆。飞机有多套液压,医院有备用发电机,数据库有副本和离线备份,都是同一个思路。芒格把它归入工程学的可靠模型,看重的正是它背后的算术:单点失效的概率可以估,备一套要花的钱可以算,两者一比就知道值不值。
这个模型真正难的不在于有没有备份,而在于备份是否独立、是否真能用。两套系统如果放在同一个地下室、用同一把钥匙、靠同一个告警通道,看上去是两层保护,其实是一层。没人演练过的恢复流程,也只是一个心理安慰。所以判断一个后备系统,要问三件事:它和主系统会不会因为同一个原因一起失效;主系统坏了,你能不能第一时间知道;切换过去之后,它能不能在要求的时间内顶上。
对 10 人以内的 AI 公司,冗余不只是机房里的事。只有一个人知道的生产密钥、只接一家模型供应商的核心功能、只够撑三个月的现金,都是单点。小团队不可能处处双备份,所以要先找出哪些环节坏了会让公司无法挽回,把有限的冗余预算花在那里。
为什么成立
概率上,如果一个部件在某段时间内失效的概率是百分之一,两个相互独立的部件同时失效的概率就是万分之一,冗余因此能以线性的成本换来乘法式的可靠性提升。但这个乘法只在独立的前提下成立。现实里的故障常常是共因的:同一场洪水、同一次错误配置、同一个有全部权限的令牌,会同时打穿主系统和备份,这时两层保护的实际可靠性接近一层。工程上把这类问题叫作共模失效,设计后备系统的大部分功夫都花在拆开这些共同原因上。
第二个机制是隐性失效。主系统天天在用,坏了马上有人发现;备份平时闲着,坏了往往无声无息,直到真正需要时才暴露。备份越久不验证,它处在失效状态而无人知晓的概率就越高。这也是为什么定期演练恢复、给备份任务配上会被人看到的告警,和备份本身一样重要。
02芒格怎么说
芒格在 1994 年南加州大学商学院的演讲《普世智慧的基本课》里,把工程学的后备系统和临界点、临界质量并列,称之为非常有力的模型,并说来自硬科学和工程的模型是世上最可靠的。他在同一段里把工程质量控制归结为费马和帕斯卡的初等概率:多花一笔钱,就能把坏掉的概率压低多少。不过他只是点名,没有展开讲后备系统怎么设计;本章的设计原则和案例是按这一点名所做的引申。伯克希尔长期留足现金、不靠外部融资度日的做法,是这个思路在财务上的体现,但相关原话出自巴菲特而非芒格。
And, of course, the engineering idea of a backup system is a very powerful idea.
当然,工程学里后备系统的概念,是一个非常有力的概念。
It costs so much and you get so much less likelihood of it breaking if you spend this much.
花这么多钱,坏掉的可能性就能降低这么多。
03怎么用
- 01
给公司画一张单点故障清单
拿一张纸列出:生产数据库、域名和 DNS、代码仓库、模型 API、支付通道、云账号的根权限、银行账户。每一项问两个问题:它坏了或被锁了,公司还能不能对客户提供服务;能不能在一天内恢复。答案都是否定的,就是需要后备的地方。其余的可以暂时接受风险,不必平均用力。
- 02
备份放到爆炸半径之外
和数据同在一个云卷、同一个账号、由同一个令牌就能删掉的备份,挡不住误操作和账号被盗。至少保留一份放在另一家服务商或另一个账号下、生产环境的凭证删不掉的副本。删除操作尽量走延迟删除或回收站,给自己留出发现错误的时间窗。
- 03
按日程演练恢复,而不是相信备份存在
每月或每季度挑一天,从备份把数据库恢复到一个空环境,记下实际耗时和丢了多少数据。演练结果写进文档,作为下一次真出事时的操作手册。备份任务的失败告警要发到真有人看的渠道,并定期确认告警本身还在工作。
- 04
模型供应商和关键人员都要有替补
核心功能如果只能调用一家模型 API,就在代码里留好切换到第二家的路径,并定期用真实请求测一下效果差多少。人也一样:生产权限、域名注册商、支付后台的登录方式至少有两个人能用,密钥放在团队共享的密码库里,而不是某个人的笔记本上。
- 05
给 AI 代理设权限边界和人工确认
让编码代理接触生产环境之前,先把开发、预发和生产的数据库和凭证彻底分开,给代理只发它当前任务需要的最小权限令牌。删除数据、改基础设施这类不可逆操作,要求人工确认。这等于在人和系统之间加了一道独立的后备检查。
04案例
福岛第一核电站:备用发电机和主系统一起泡在水里
2011 年 3 月 11 日的东日本大地震之后,海啸在下午三点四十分左右抵达福岛第一核电站,上岸浪高约 15 米,远高于电站历次修订的设计基准(最高调到 6.1 米)。电站并不缺后备:外部电网断了,还有柴油应急发电机,还有蓄电池。问题在于这些发电机、配电设备和蓄电池大多放在汽轮机厂房的地下室,海水一进来就一起失效,13 台现场后备发电机里有 12 台不能用,1 到 3 号机组陷入全厂断电,冷却随之丧失。唯一幸存的是 6 号机组一台风冷柴油机,它装在更高的位置,后来为 5、6 号机组恢复冷却提供了电力。这正是共模失效:备份的数量不少,但它们怕的是同一件事。[2]
GitLab 删库:五种备份手段,关键时刻没有一种顺利顶上
一名 GitLab 工程师在处理数据库复制问题时,本想清空从库,却在主库上执行了删除,约 300GB 数据被删掉。事后复盘显示,团队以为自己有好几层保护:每天用 pg_dump 备份到 S3,但版本不匹配让备份一直失败,S3 桶是空的;失败告警邮件因为邮件认证配置问题被收件服务器拒收,没人知道;数据库服务器没开云盘快照;从库本身因复制滞后而不可用。最后救场的是一份本来为预发环境准备的 LVM 快照,大约是事故前 6 小时的,从慢速磁盘拷数据花了约 18 小时,那段时间的数据永久丢失。GitLab 事后把快照改为每小时一次,增加备份恢复的自动化测试,并指定专人对数据持久性负责。[3]
PocketOS:编码代理一次调用删掉生产库,连同卷内备份
PocketOS 是一家给租车公司做预订、支付和车辆管理软件的小公司。据创始人 Jeremy Crane 公开描述,一个运行 Claude Opus 4.6 的 Cursor 编码代理在预发环境做常规任务时遇到凭证不匹配,自行决定删除一个 Railway 数据卷来解决,一次 API 调用、大约 9 秒,生产数据库和卷级备份一起没了。代理事后承认,它猜测删除预发卷只会影响预发环境,却没有核实。报道还提到,它用的令牌本是为管理域名准备的,却有删除卷的权限。Crane 说他能找到的最近可用备份已是三个月前的,客户只能靠其他记录手工补录订单;Railway 联合创始人 Jake Cooper 则表示,他和 Crane 取得联系后约半小时就恢复了数据,并说问题出在一个缺少延迟删除逻辑的旧接口,已经修补。各方对最终恢复了多少说法不一,但共同点很清楚:备份和数据处在同一个爆炸半径里,一张权限过宽的令牌就能同时毁掉两者。[4][5]
05误用与边界
备份的数量不等于独立性
三份备份放在同一个云账号、靠同一套凭证管理,抵不过一次账号被盗或一次误删。数一数你的备份有几份没什么用,要数的是有几种彼此不相关的失效方式能把它们同时打掉。
冗余本身会增加复杂度和新的故障
每多一套系统,就多一份配置、一条同步链路、一个可能出错的切换逻辑。小团队把主备切换做得太复杂,可能比单机还不可靠;GitLab 的事故就起于处理复制问题的操作。冗余要配简单、可演练的流程,否则就是在添新的风险。
处处双备份,把钱和精力摊薄
芒格讲的是成本和故障概率之间的权衡,不是越多越好。早期公司的现金和注意力都有限,给不重要的环节做双活,可能挤掉了真正要命的环节。只对那些一旦失效就无法挽回的地方重投入,其余的接受一些风险。
有了后备就放松主系统
知道有备份,人和代理都更敢冒进,于是更频繁地在生产环境里直接动手。后备系统是最后一道防线,不能替代权限隔离、人工确认这些前面的防线。
06检查清单
下次做相关决策前逐条过一遍。勾选只保存在你的浏览器里。
08来源
- 1
- 2
- 3
- 4
- 5