追踪一个 16 岁的 SQLite 老 Bug:Tailscale 半年动荡的根源
来源:tailscale.com — 2026-08-12
📋 概述
Tailscale 在半年里经历了 19 次数据库损坏事件,稳定性大幅下滑,最终定位到 SQLite 深处一个存在 16 年的 Bug。他们的控制面按分片组织,每个分片由单个 Go 进程独占一个 SQLite 数据库,并定期把完整快照备份到 S3。损坏没有固定触发条件,无法复现,只能靠部署被动取证遥测在真实环境抓现行。
🔑 核心要点
- 采用 单写者分片架构,每个 tailnet 归属一个分片并可无缝迁移。
- 损坏事件共 19 次,跨越半年,没有可复现的触发条件。
- 因无法合成复现,只能部署被动取证遥测在线上抓现行。
- 损坏的是配置元数据而非密钥,但每次恢复都要停机控制面,损失达一小时。
💡 金句
SQLite 是‘无聊的技术’——在好的意义上。所以我们从 2022 年起就把它当作主数据库。
👍 0
👎 0
← 返回 Lobsters 首页