DBA熬夜改表?15年数据安全工程师的MySQL设计运维实战手册
|
去年5月那个凌晨三点十七分,我盯着主库的ALTER TABLE进度条卡在92.3%不动,手里那杯冰美式早就漏了一半在键盘右下角,Ctrl+C敲了七次,my.cnf里skip-log-bin那行注释还热乎着——结果你猜怎么着?DBA老张改完表直接切流量,连binlog position都没对齐,第二天早上八点四十,订单ID全乱序,支付回调挂了三百七十二个节点。我原以为是GTID配置错,结果抓包一看,是下游Kafka消费者把DECIMAL(18,2)当字符串解析,小数点后两位全吃成零。这个我敢打包票。 优胜劣汰?哈。不是说设计压倒运维,是活下来的那批人,早把pt-online-schema-change的--chunk-index参数刻进虹膜里了。测试环境跑得通?那是你没在凌晨两点三十四分,用tcpdump抓到从库IO线程被锁三秒的真实心跳包。去年5月,就那个改表——加个JSON字段,非要用TEXT再建个函数索引,还说“兼容老版本”,兼容个屁,MySQL 5.7.22压根不认->>'$'语法,我们线上还跑着5.7.20。PM小陈蹲在工位隔断边递过一盒凉透的黄焖鸡,筷子尖上挂着半块土豆,说“用户要这个功能上线”,我说“你让用户自己ALTER TABLE试试”,她没接话,但把饭盒盖子咔嗒扣死了。 旁边同事起身去倒水,保温杯盖子拧开又拧上三次才走,他工位双屏壁纸是两帧不同分辨率的《攻壳机动队》剧照,左屏草薙素子右屏荒卷大辅,帧率差半秒,看着就晕。我F5刷新监控页:抬手、悬停0.8秒、食指压下、松手、光标自动跳到地址栏左侧——就是这么一帧一帧抠出来的,可主库磁盘IOPS爆表这事,我就写了个“可能有热点页争用”,含糊。真要细说?得翻出上周四凌晨的iostat -xmt 1日志,可那台机器昨天重装了,备份还在OSS冷归档里没解冻。 说到OSS,上周五PR review里后端提交了个ConfigMap硬编码accessKey,我标红驳回,他回:“又不是生产密钥”,我回:“你本地kubectl apply的时候,是不是也用的admin权限?”——他删了那行,顺手把整个config目录git add -f进去了,commit message写着“fix typo”。typo。汤洒了一滴,在MacBook键盘F12键旁边,黏住ESC键下面那颗掉漆的银色小圆点。我拿牙签戳了两下,没用,F12现在按下去有延迟,大概十八毫秒。 反常识结论?不是。是大家装睡太久。你以为ONLINE=真在线?mysql> ALTER TABLE t ENGINE=InnoDB; 这种命令,InnoDB引擎自己偷偷做copy-on-write时,会等所有活跃事务commit后再开新快照——但你永远不知道那个刚提交的SELECT FOR UPDATE到底堵在哪儿。我们去年5月那个翻车现场,就是业务侧一个超长事务,持锁四百一十九秒,ALTER表进程挂起期间,Binlog dump线程还在往备库传旧数据,新旧schema混喂,消费者解析器当场吐核。没人拦,因为“DBA在修”。修什么?修他们当年没写好COMMENT字段的建表语句。
文章配图,仅供参考 Chrome DevTools我切在Network tab,Filter打了个xhr,其实根本没发xhr,就为了看那一排灰色的pending状态;左边屏幕IDEA里正跑着Jenkins Pipeline的本地模拟脚本,右屏vim打开的是/etc/my.cnf.bak.20240517-0236,里面max_connections写成4096——这数字我敢打包票,他们抄的去年Q3的SRE报告,可今年CPU升了三代,连接池早该调到8192了,但他们怕。怕什么?怕重启失败,怕VIP漂移,怕值班表排到自己头上那天凌晨四点被call起来,光着脚踩在服务器机房冰凉地砖上,闻着UPS电池发热的焦糊味。CSS命名规范这事我今天真想聊。BEM?全是幻觉。我们组前端提了个class="user-card__detail--loading",后端模板渲染时if else嵌套三层,最后输出的HTML里class="user-card__detail--loading loading",浏览器开发者工具里,两个loading并列,CSS优先级打架,加载态动画卡顿。这不是样式问题,是团队信任崩塌的毛细血管征兆。就跟DBA熬夜改表一样,表面是DDL操作耗时,底下是所有人心里都清楚:这表结构,三年前就不该这么建。 工资的事……算了,这个我说不准。只记得去年5月绩效面谈,总监问我“对数据治理平台建设有没有规划”,我指着墙上贴的物理机机柜拓扑图说:“先把2018年那台MySQL 5.6实例从Dell R720里拔出来,它硬盘坏道警告已经静音十一个月。”他点头说好,转身就把预算批给了BI团队的新OLAP引擎采购。现在那台R720还在机房角落嗡嗡响,风扇转速恒定三千二百转/分钟,像台不肯停下的缝纫机。 所以别信什么“平滑迁移”“灰度发布”——都是PPT词。真想少熬夜?下次评审会,把建表语句打印出来,A4纸横版,字号十六,每人发一份,逐字段问:这个VARCHAR(255)真是最短够用?那个INDEX是不是重复覆盖了复合索引?那个DEFAULT CURRENT_TIMESTAMP有没有考虑夏令时跳变?问完,散会。剩下的事,交给pt-archiver、pt-online-schema-change、还有你手指头下的那个Ctrl+Z——当然,前提是你的备份集,昨天真的跑通了恢复演练。 (编辑:站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |


MySQL事务控制无障碍设计指南
创业合规与数据安全双轨协同优化路径
MySQL性能优化实战:慢查询到毫秒响应全链路突破
Go语言赋能数据安全:站长技术新视野
数据安全工程师的跨界创业实战指南
Go语言赋能数据安全:站长技术新视界
数据安全工程师的跨界创业实战指南