最新网址:m.badaoge.org
第16章 二姨的私信 (第1/3页)
周三上午十点,会议室。
项目紧急会议。线上支付系统凌晨发生故障,导致三千万交易延迟,用户投诉激增。王总、技术总监李总、产品、测试、运维、开发,二十多人挤在会议室,空气紧绷。
“谁先说?”王总脸色铁青。
监控组先汇报:“故障时间凌晨两点十七分,持续四十六分钟。直接原因:数据库主从同步延迟,导致读写不一致。”
数据库负责人老赵立刻说:“我们检查了,主从同步配置没问题。是应用层有大量非索引查询,拖慢了主库,导致从库延迟。”
开发组长小陈反驳:“我们上周才优化过查询,加了三组索引。而且凌晨两点,哪来的大量查询?”
运维插话:“监控显示那个时间点有异常爬虫流量,可能是被攻击了。”
安全组摇头:“不是攻击,是正常的搜索引擎爬虫,流量在正常范围。”
会议开了半小时,各部门互相推诿,没有结论。贝西克坐在角落,没说话。他打开笔记本,在纸上画了一张图。
时间轴:
02:00-02:15 正常
02:15-02:17 爬虫访问量轻微上升(+15%)
02:17-02:20 数据库主库CPU从30%升至80%
02:20-02:30 从库延迟从0秒升至120秒
02:30-02:45 应用报错率从0.1%升至5%
02:45-02:50 运维重启从库
02:50-03:03 服务逐渐恢复
他观察每个人的发言。老赵说话时眼睛向右上方看(回忆),小陈说话时手不自觉地摸后颈(紧张),安全组发言简洁但语气犹豫,运维在玩笔。
“安静!”王总拍桌子,“我要的是解决方案,不是谁的责任!现在告诉我,怎么避免下次再发生?”
李总提议:“加硬件,扩容数据库。”
老赵反对:“硬件成本高,而且不治本。要先找到根本原因。”
小陈说:“我建议加强防爬虫策略,减少无效查询。”
安全组:“那可能影响SEO。”
又陷入争吵。
贝西克举手。所有人都看过来。
“你说。”王总皱眉。
“我有个推测。”贝西克翻开笔记本,“故障的直接原因确实是主从延迟,但根本原因不是爬虫,也不是查询,是配置变更流程漏洞。”
会议室安静了。
“什么配置变更?”老赵问。
“上周五晚上,数据库组做了一次参数优化,调整了‘binlog_format’从‘ROW’改为‘MIXED’,目的是提升同步效率。但这次变更只在主库执行,从库漏了。导致主从的复制格式不一致,在特定查询模式(比如全表扫描)下,同步会变慢。平时负载低,不明显。昨晚爬虫触发了几次全表扫描,放大了这个问题。”
老赵脸色变了:“你…你怎么知道?”
“我看了变更记录。”贝西克说,“上周五晚上十一点二十三分,有数据库变更工单,执行人是你。变更理由是‘提升同步性能’。但工单状态是‘部分完成’,备注写着‘从库明天补’。但第二天没人跟进。”
“你怎么能看到变更记录?”李总问,“那是DBA权限。”
“我有只读权限,上周申请的,为了排查另一个问题。”贝西克说,“刚才会议期间,我查了日志,确认了这一点。”
老赵额头冒汗:“那个…从库我后来补了,周一上午补的。”
“但从周五晚上到周一上午,有六十个小时窗口期,主从不一致。”贝西克说,“故障发生在这个窗口期内。”
小陈看向老赵:“老赵,真有这事?”
老赵低头,不说话。
王总盯着他:“是不是?”
“是…”老赵声音很小,“但我以为不影响…平时都正常…”
“你以为?”王总提高声音,“三千万交易延迟,用户投诉,公司形象受损,就因为你‘以为’?”
“王总,我…”老赵想辩解,但说不出话。
贝西克继续说:“另外,我观察到另一个问题。运维在02:45重启从库,但重启前没有做‘stop slave’,导致重启后同步位置错乱,又花了十三分钟自动恢复。如果先stop slave,再重启,恢复时间可以缩短到五分钟内。”
运维负责人猛地抬头:“你怎么知道?”
“监控显示从库重启后,’Seconds_Behind_Master’从120秒变成NULL,然后花了780秒才恢复到0秒。这是典型的未停同步就重启的特征。”贝西克说,“如果你先停了同步,应该显示从负数开始恢复,不会出现NULL。”
会议室死寂。所有人都看着贝西克,眼神复杂。
“解决方案。”王总打破沉默,“贝西克,你说。”
“三个短期措施。”贝西克说,“第一,立即检查所有数据库主从配置一致性,今天完成。第二,修改变更流程,强制要求主从必须同步变更,否则工单无法关闭。第三,制定从库重启标准操作流程,加入‘stop slave’步骤。”
“长期呢?”
“长期,需要建立配置漂移检测系统,自动监控主从不一致,提前预警。我可以写个脚本,今天下班前能跑起来。”
王总看着李总:“李总
(本章未完,请点击下一页继续阅读)
最新网址:m.badaoge.org