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

MySQL高可用架构实战:从单点故障到自动容灾

发布时间:2026-10-12 12:33:30 所属栏目:MySql教程 来源:DaWei
导读:  凌晨三点被监控告警炸醒,屏上并排开着三个终端——主库的slow log、从库的IO线程状态、还有跳板机的SSH连接。我原以为又是哪个开发半夜跑批把索引干崩了,结果一看,主库的磁盘inode爆了,写请求全堆在swap里,从库的IO线

  凌晨三点被监控告警炸醒,屏上并排开着三个终端——主库的slow log、从库的IO线程状态、还有跳板机的SSH连接。我原以为又是哪个开发半夜跑批把索引干崩了,结果一看,主库的磁盘inode爆了,写请求全堆在swap里,从库的IO线程卡了十七分钟没动弹。这时候你发现,什么MHA、Orchestrator、ProxySQL,平时吹得天花乱坠的方案,真到机器挂了那一刻,全得看最基础的监控能不能在inode用到99%的时候就把人薅起来。

  去年我们试过用Galera Cluster搞多主,开发同事拍着胸脯说"写流量分散多爽",结果呢?春节前最后一天,三个节点因为网络抖动同时裂成三个小集群,各自写了三套互不兼容的数据。那天我蹲在机房冷风机旁边,听它嗡嗡响了四个小时——不是不想修,是根本不敢动,谁碰谁背全年的P0故障。最后还是老张叼着根烟过来,说"回滚吧,大不了被老板骂",我们才敢把数据回源到单库。那会儿我才明白,所谓"高可用",有时候就是看谁先怂得合理。

  可你说单库就安全吗?去年双十一前,我们为了省钱把云厂商的SSD换成普通云盘,结果第二天主库的磁盘延迟直接飙到200ms。告警灯闪了一夜,我盯着监控曲线,那走势比A股还刺激——每次要跌下去,又因为某个慢查询被拉起来。最绝的是,当时从库的复制延迟已经到五分钟了,可开发非要说"用户感知不到",死活不让切流。后来是云厂商的工单系统救了我们——他们检测到磁盘IOPS异常,自动给我们扩容了临时实例。我到现在都没搞明白,这到底是高可用还是碰运气。

  说到云厂商,上个月我们迁移到某云的RDS,销售吹得天花乱坠说"自动容灾",结果第一周就栽了。那天主库所在的AZ突然断网,按理说应该自动failover到另一个AZ的从库,结果呢?从库的证书过期了,ProxySQL死活连不上,整个服务挂了二十分钟。后来查日志才发现,云厂商的"自动"容灾,其实是要先手动配置一堆参数——什么"跨AZ复制延迟阈值"、"证书轮换策略"、"DNS解析TTL",光是填这些参数就花了我们两周。我跟老张吐槽:"这哪是自动容灾,这是把运维的活拆成更细的颗粒度让我们干。"

  不过话说回来,这次故障后我们倒是想明白一件事:高可用这玩意儿,没有绝对的好方案,只有最合适的妥协。比如我们现在的主库,还是单点,但监控粒度细到能抓每个连接的SQL执行时间;从库用MHA管着,但把failover的脚本改成了"先检查证书有效期再切流";连跳板机的密码都设置成两周过期——虽然每次过期都要被开发骂,但至少能保证运维账号不会被长期滥用。这些改动看着琐碎,可就是这些细节,让我们在最近三个月里,把P0故障从每月两次降到了零次。

  我原以为"优胜劣汰"是说方案,现在才明白是说人。上周跟隔壁组的李工聊天,他们还在用最原始的主从+Keepalived,可人家监控做得好,连从库的磁盘空间都设了三级告警——80%黄灯,90%橙灯,95%直接拉微信群@所有人。反观我们之前试过的那些"高级"方案,要么因为配置复杂被运维弃用,要么因为开发不配合成了摆设。说到底,高可用不是买套软件就能解决的,得让所有相关的人都觉得"这玩意儿真能帮我少熬夜"。

  对了,那天在机房还遇到个搞笑事。我们蹲在地上改配置的时候,保洁阿姨推着清洁车进来,车轱辘卡着一根网线,把交换机给蹭掉了。整个机房瞬间黑了一半,我们举着手机电筒找交换机,保洁阿姨在旁边一个劲道歉。老张笑着说:"得,这才是真正的'物理容灾'——人肉恢复。"后来我们给交换机加了固定支架,还给保洁阿姨培训了"重要设备勿碰"——虽然知道她肯定记不住,但至少图个心理安慰。

  现在回头看,我们之前踩的那些坑,其实都是自己作的。比如为了省机器钱,把主从部署在同一台物理机上;为了显技术牛,非要用多主集群;为了赶进度,跳过测试直接上线。这些操作在业务小的时候没问题,可一旦流量起来,任何一个小疏忽都能要命。我现在跟新来的运维说:"别迷信那些花里胡哨的方案,先把最基础的监控、告警、备份做好,比什么都强。"他们一开始还不信,直到上个月亲眼看到我们用"主从+脚本"的组合,在主库宕机后三分钟内完成切流,才明白什么叫"实用主义"。

文章配图,仅供参考

  当然,我们也不是完全排斥新技术。比如最近在试的Group Replication,虽然配置复杂,但数据一致性确实比MHA强。不过我们学聪明了——先在测试环境跑了三个月,把所有可能的坑都踩了一遍,才敢在生产环境试。现在的情况是,主库用单点+精细监控,从库用Group Replication做备份,切流脚本加了证书检查、磁盘空间检查、网络延迟检查三重验证。虽然看着不够"高级",但至少睡得着觉了——除了上周三,那天外卖袋子上的水汽弄湿了桌角,我手忙脚乱擦桌子的时候,手机突然响了,一看是监控告警,差点没把手机扔出去。

  说到底,高可用这东西,没有终点,只有不断妥协。你永远不可能做到100%无故障,但可以通过不断优化细节,把故障的影响降到最低。就像我们现在的方案,你说它完美吗?肯定不——Group Replication的网络开销大,单库的扩展性差,脚本的维护成本高。可它适合我们现在的业务规模、团队技术栈和老板的预算,这就够了。至于未来?等业务再涨十倍,我们可能又会换方案——但那时候的坑,就让那时候的人去踩吧。

(编辑:站长网)

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