主库——第2集:根因剖析

发布时间:2026/8/29 18:24:24
主库——第2集:根因剖析 往期回顾主库——第1集庆功惊魂一、主库宕机了老牛是在一股消毒水味里醒来的。他盯着天花板看了几秒左手背上扎着留置针身上贴满了电极片导线连向床头的监护仪屏幕上跳着一条绿色的波形。胸口闷像压着一块没有散尽的棉花又像昨晚庆功宴上那口没喘匀的气。他下意识摸了摸腹部病号服下的肚子隆起明显像一口倒扣的铁锅把被单顶出一座小山。第三颗扣子早就崩飞了第四颗勉强挂着。他叹了口气想把被单往上拉——这动作他太熟了开会时拉外套拍照时深吸气买裤子永远选大一号。这肚子跟了他多年忙起来就假装看不见。他回想这几个月达梦替换Oracle的核心账务系统上线工期像被压缩到极限的备份窗口每天都在赶。早上七点进机房凌晨两点才走周末泡在POC测试和压测里。困了就灌红牛饿了就叫外卖中午是重油重盐的盖浇饭晚上是烧烤炸鸡加啤酒。他以为胸口偶尔发闷是项目太累以为打嗝反酸是吃饭太快以为肚子越来越大是“中年标配”是每个DBA都该有的“职业肚腩”。他从没想过这些症状可能是同一条告警链上的不同节点。昨晚庆功宴上他正讲到达梦替换Oracle后性能提升百分之四十台下掌声雷动。他端着酒杯越说越兴奋脸涨得通红额头上的汗珠顺着太阳穴往下滑。然后胸口突然一紧像被人按下了KILL SESSION视野直接黑了。后脑勺磕在地板上的闷响像一块硬盘从机柜上坠落。病房的门被推开一个穿白大褂的医生走进来扫了一眼监护仪又看了看老牛。“醒了感觉怎么样”老牛嗓子发干“胸口闷像压着东西。”“急性冠脉综合征诱发室性心动过速心源性晕厥。你的冠状动脉堵了百分之六十。昨晚再晚来半小时可能就是大面积心梗。”老牛脑子嗡的一声。原来不是累不是胃病是心脏这台主库直接宕机了。“先观察48小时转心内科做造影决定放不放支架。静卧别乱动。”医生转身走了。病房的门轻轻带上。老牛靠在床头盯着天花板半天没回过神来。这双手敲了多年SQL给数据库做过无数次优化杀过无数慢查询。但他从来没有想过——自己的身体也是一套需要日常维护的系统。而且这套系统没有从库没有备份集没有归档日志连监控大盘都没装。原来那几个月偶尔的胸闷是心脏在默默堆积慢查询。二、向上追溯上午十点病房的门被推开。L老师走进来深灰色夹克手里拎着一袋水果。他看见老牛靠在床头脸色发白快步走到床边把水果往床头柜上一放“牛哥感觉怎么样”老牛苦笑“脑子还懵。医生说……说我心脏血管堵了百分之六十差点心梗还说了个什么……心源性晕厥我就记住这些。”L老师拉过椅子坐下“我推测啊医生的意思是你心脏电信号乱了泵不出血脑子断供人就倒了。但这只是表面现象。咱俩往上刨刨看看到底是哪块盘坏了”老牛眼睛亮了一下“上游像级联故障表面看主库hang了其实是上游存储层先出了问题IO阻塞计算节点拿不到数据最终超时”“我认为是这思路。”L老师点头“我琢磨着你这几个月项目上线天天熬夜、高压体内有个叫皮质醇的东西一直偏高。这东西相当于身体里的‘压力激素’专门啃血管内壁那层膜。血管内壁被啃坏了血脂就容易渗进去日积月累形成斑块。你的冠状动脉我觉得早就不光滑了上面全是坏道只是你这几个月从没给自己做过巡检没读过AWR。”老牛一拍大腿“慢查询堆积不是磁盘突然坏了是长期有坏SQL把资源占满了系统越来越慢最终崩溃了”“对这是慢性积累。”L老师接着说“但昨晚真正的导火索是你情绪激动加上那杯酒。交感神经瞬间兴奋肾上腺素大量释放心率加快、外周血管收缩——血压骤升。冠状动脉里的斑块表面可能破了或者血管直接痉挛血小板立刻聚集急性血栓形成血流急剧减少。心肌细胞急性缺氧电信号就乱了我推测诱发了室性心动过速。心脏不是停跳是乱颤每分钟可能跳到两百次但心室无效收缩泵不出去血。心输出量骤降脑灌注压急剧下降脑子缺血几秒人就直挺挺倒下。这大概就是医生说的那个心源性晕厥。”老牛眼睛瞪得老大嘴巴张了张“我靠你怎么懂这么多”L老师笑了笑“我这大半年花了不少时间研究这些每天用AI追问为什么不是查资料是建立知识体系。你继续听——你给系统做AWR报告、做压力测试、做连接池监控——但你从来没给自己做过AWR。你这主库早就写满慢查询日志了只是你一次都没读过。你折腾系统多年零故障却从没想过自己这台主库的告警阈值可能早就突破了。”老牛自嘲地摇头“我这是单点架构没有从库没有备份集连归档日志都没开。昨晚要是真大面积心梗那就是主库彻底宕机没有备份集恢复不了这辈子就算是完了。”“所以啊”L老师竖起一根手指“做根因分析最怕看到下游告警就优化下游。主库响应慢了你加内存、扩CPU、调参数结果根因是上游存储层有块坏盘IO延迟飙升。你折腾主库三天三夜不如去换那块盘。我推测——心脏是下游血管是中游上游可能还有更底层的东西在持续写入坏块这几个月从未被关注过。”老牛有点着急“那更底层的原因是什么喝酒熬夜压力大”“喝酒可能是导火索熬夜和压力大概是环境负载。”L老师摇头“但我觉得这些都不是持续写入坏块的主进程。你想想你这几个月最原始、最持久、从未被优化过的异常指标是什么最显眼、最扎眼、你却一直假装看不见的那个。”老牛皱起眉头盯着天花板像盯着一台从未安装过监控大屏的服务器。上游到底是什么他脑子里飞速转着熬夜压力喝酒都不是。那还能是什么他完全找不到答案。三、表空间膨胀病房里安静了。L老师站起身走到床边低头看着老牛。阳光从窗户斜切进来把他的轮廓照得温和而清晰也把老牛病号服下那座“小山”照得更加刺眼。老牛没说话。他想起这几个月凌晨的告警红牛当水喝中午盒饭重油高盐晚上烧烤炸鸡宵夜。运动不存在的。唯一的运动就是手指在键盘上敲SQL。他给数据库做过无数次优化却从没给自己装过一个监控系统。老牛顺着L老师的目光低头看了看自己的腹部——病号服下的肚子在被子下微微起伏像一块写满了坏块的存储池。他又抬头看L老师L老师的夹克下腹部平坦紧致像一台维护良好的刀片服务器。老牛脑子里还在转熬夜压力喝酒都不是。那还能是什么他完全没往那个方向想过。“我琢磨着”L老师缓缓开口目光落在老牛的腹部“你这几个月最持久、从未被优化过的异常指标就像数据库里那张膨胀到临界值、却从未被清理的表空间。”老牛一脸茫然。表空间膨胀他下意识地又低头看了看自己的腹部。L老师没说话只是突然伸出手在老牛的肚子上按了一下。老牛低头看着那只手又抬头看L老师。他脑子里一片空白完全不明白L老师按这一下是什么意思。L老师收回手表情认真“我认为……真正的原因可能在这里。”老牛瞪大眼睛张了张嘴声音都变了调“肚子”未完待续…主库——第3集警察黑化系列回顾“大白话人工智能” 系列“数据库拍案惊奇” 系列“世事洞明皆学问” 系列