主库——第2集:根因剖析
2026/8/29 18:23:58 网站建设 项目流程

往期回顾
主库——第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集:警察黑化

系列回顾

“大白话人工智能” 系列
“数据库拍案惊奇” 系列
“世事洞明皆学问” 系列

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询