4月21日,我们的流媒体服务在例行维护更新期间出现意外中断,持续时间约1小时9分钟。此次中断导致我们的公共API返回错误,并使用户暂时无法使用该服务。该问题已于UTC时间10:36完全解决,我们的团队已采取措施防止类似问题再次发生。
作为计划维护的一部分,我们部署了一次例行数据库更新。在更新的最后阶段,两个数据库操作同时发生冲突,导致数据库集群所有节点失去同步。数据库变得不可用,并引发了一系列客户可见的 API 错误。
时间线
09:22 计划内的数据库维护按计划开始。
09:27 数据库集群在更新的最后步骤中由于冲突而变得不可用。
09:29 自动监控警报触发。DevOps团队已收到通知。
09:32 工程团队确认数据库故障。
09:33 公共 API 开始返回错误。立即展开调查。
09:47 正式宣布发生事故。状态页面已更新为维护中。
09:54 从生产日志中确认了根本原因。
10:19 数据库恢复正在进行中。
10:30 数据库已确认在单节点模式下运行正常。
10:36 流媒体 API 已完全恢复。面向客户的服务已恢复运行。
10:45 事件已结束。状态页面已更新为已解决。
减轻
数据库已隔离。为了安全地恢复服务,数据库集群已重新配置为单节点模式运行,移除了失败的多节点同步。
稳定性已验证。在重新路由任何流量之前,数据库已重新加载并确认其运行状态,从而确保了平稳恢复。
客户流量已恢复。数据库稳定后,流媒体 API 已恢复上线,并受到密切监控,以确认所有面向客户的服务均已完全恢复。
行动要点:
增加了部署前安全措施,可以在高风险操作序列进入生产环境之前检测并阻止它们。
改进自动化恢复程序,以缩短检测和数据库恢复之间的时间。
审查并更新了数据库迁移流程,以防止在更新过程中同时运行冲突的操作。