加入收藏 | 设为首页 | 会员中心 | 我要投稿 站长网 (https://www.028zz.cn/)- 科技、云开发、数据分析、内容创作、业务安全!
当前位置: 首页 > 站长学院 > MySql教程 > 正文

MySQL运维设计实战:36小时崩溃到稳如磐石

发布时间:2026-11-07 08:27:09 所属栏目:MySql教程 来源:DaWei
导读:  我原以为灰度那会儿就稳了,结果上线前两小时,张伟在测试环境跑完那个新订单流水的用例,MySQL直接卡住——不是报错,是整个连接池挂死,连show processlist都刷不出来。你懂那种感觉吗?就像电梯下到B2突然停住,按钮还亮着,

  我原以为灰度那会儿就稳了,结果上线前两小时,张伟在测试环境跑完那个新订单流水的用例,MySQL直接卡住——不是报错,是整个连接池挂死,连show processlist都刷不出来。你懂那种感觉吗?就像电梯下到B2突然停住,按钮还亮着,但所有灯都在暗下去。


  白板上的数字擦了一半,底下压着三张没撕掉的便签,写着“主从延迟阈值”“binlog_format”“max_connections”,字全糊了。李工蹲那儿拿橡皮猛蹭,我盯着他手腕上那只表,秒针走得特别慢,比我们上个月改的那个索引重建脚本还磨叽。后来查出来是那个新触发器里嵌了子查询,又碰上高并发写入——不是bug,是设计时没人想它真被调一千次/秒。


  会议室又被占了,门缝底下漏出隔壁组的OKR复盘声:“……增长曲线要对齐Q2交付节奏……” 我们抱着笔记本挤进茶水间,王蕾把MacBook支在微波炉上,插线板拖了四米远,充电线还是不够长,她就歪着脖子用右手一直托着本子,左手敲回车。键盘上有个键按下去不回弹,是N键,每打个“insert”都得手动弹起来一次。


  优胜劣汰——这话现在听着像PPT里的鬼话,但36小时里,真就是谁扛不住谁先退。不是服务器退,是人退。张伟凌晨三点改完备库配置,回来瘫在折叠椅上睡着,手里还攥着半包没拆的薄荷糖;李工第四次重装Percona Toolkit,镜像拉下来发现版本不对,干脆删掉重建,边删边说“这工具比我上份工作离职手续还难搞”。我原以为监控告警够用了,结果发现Prometheus拉的MySQL exporter根本没采集到thread_created指标,而这个数暴涨正是第一次崩溃的前兆。没人填这个坑,它就一直裸着。


  外卖凉透了,酱汁凝成一块块的褐色膜,粘在餐盒盖内侧。我没动它。王蕾说她点的是辣子鸡,可打开全是花生——骑手送错了单,她也就吃了,反正饿过了那个劲儿,吃什么都是嚼蜡。我们那时候连骂骑手的力气都没有,全在盯一个慢查:explain看不出来问题,加hint也绕不开filesort,最后发现是WHERE条件里日期字段类型和索引列不一致,隐式转换。线上跑了三个月,直到那天并发一上来才暴露。不是漏测,是用例压根没跑这种数据组合。我写过一百二十条边界用例,唯独漏掉“字符串字段传date格式字符串”这一条。不是不会写,是当时觉得“谁会这么干?”——结果产品同学真这么干了,接口文档里还写着“推荐传ISO8601”。


  用例管理工具一直在转圈,小蓝圈在右下角打旋儿,三分钟没加载完“订单状态机”模块的回归集。我点开又关掉五次,最后直接导Excel手工勾选。李工说“别管它,上次部署完就一直这样”,我就信了。其实那两天,连SVN提交都偶尔超时,但我们谁都没往数据库稳定性上想——故障树长着呢,根却埋在别的层里。


  谁桌上摆着三台手机:王蕾的红米、李工的老iPhone、还有张伟借来的测试机,锁屏全是黑的,横着竖着摊开,充电线拧成麻花。我没碰它们。我只记得凌晨四点那会儿,张伟忽然说:“主库CPU不高的时候,从库load能飙到12?”我说“查慢日志啊”,他说“慢日志根本没记”,我俩对着屏幕盯了十秒,他忽然笑了一声,那笑声听得我后颈发紧。


  不是所有问题都有答案。比如为什么同样SQL,在5.7里走索引,在8.0.33里就绕开?不是优化器改了,是我们建索引时漏写了INCLUDE字段,而8.0默认走了covering index判断路径——这事儿到现在没复现出来,也没定论。我们只能先切回5.7镜像,灰度比例缩到5%,等下次迭代再动。有时候,稳如磐石不是靠解决所有问题,是靠认准哪几个问题必须立刻拦住,其余的,先让它悬着。


  我原以为只要覆盖了95%的用例就能上线,结果那5%里有一条正好卡在主从切换+大事务+临时表三重嵌套里,而这条,压根不在我们任何一张测试计划表上。现在想想,倒也不是漏测——是根本没意识到那是“一条”,它是一堆动作拼出来的偶现场景。所以“优胜劣汰”真不是比喻,是物理现实:扛不住的配置淘汰了,扛不住的索引淘汰了,扛不住的人也淘汰了——不是离职,是换岗,是半夜三点改完参数之后,天亮就申请转去DBA支持组。


文章配图,仅供参考

  跑题了。刚说到哪儿?哦,开发与排期。昨天开发组同步排期,说下一个迭代要接入三方物流轨迹,接口QPS预估翻三倍。我问“有没有做流量染色”,他们说“有,压测平台支持”,我点点头,没往下问压测数据是不是从生产脱敏过来的——算了,等冒烟的时候再说吧。反正用例写好了,能不能跑过,得看机器心情。


  下周一得重搭测试机,旧的那台磁盘IO一直抖,lsblk看util总在80%以上晃,但iostat又抓不到热点进程。我打算试试fio单独测/dev/sdb,不过得先找根够长的线——现在这根,刚好够从插座拉到桌角,再拖一米就断连。王蕾说她抽屉里有备用的,但钥匙在她包里,包在前台寄存柜第三格。柜子密码忘了。


  就这样吧。我把那份新写的《高并发订单场景下的MySQL配置Checklist》发群里了,没写作者,也没写版本号。李工回了个“收到”,张伟回了个“????”,王蕾回了个“稍等,我先热下饭”。饭还是凉的。

(编辑:站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!