在MySQL、Redis等高可用架构中,主从切换是自动发生但影响重大的事件。当MHA、Orchestrator、Sentinel或云数据库自动完成主备切换后,如果DBA不能尽快知晓,可能出现读写指向错误、连接串未及时更新、缓存雪崩等连锁问题…
在MySQL、Redis等高可用架构中,主从切换是自动发生但影响重大的事件。当MHA、Orchestrator、Sentinel或云数据库自动完成主备切换后,如果DBA不能尽快知晓,可能出现读写指向错误、连接串未及时更新、缓存雪崩等连锁问题。数据库主从切换预警的目标,就是把切换事件实时通知到DBA与应用负责人。互亿无线预警通知可通过一个接口发送短信与语音,适合这类运维事件告警。
主从切换为什么需要主动预警
高可用组件虽然能自动完成切换,但它只解决了故障切换本身,并不负责把结果告诉人。切换后新主库的性能、复制延迟、应用连接池状态都需要人工确认。
- 自动切换发生后需要尽快通知DBA核查新主库健康状态;
- 应用侧配置了只读地址的服务,可能需要确认读写流量是否正确;
- 连续多次切换往往意味着底层故障未消除,需要升级为紧急事件;
- 切换事件要带时间戳与旧主、新主节点信息,便于事后复盘。
高可用架构通知链路设计
在高可用组件的故障切换脚本(MHA的master_ip_failover或on_failover处理)中嵌入告警调用,是常见做法。
- 切换脚本在执行failover成功后,组装事件信息;
- 调用互亿无线短信接口,发送切换摘要给DBA群组;
- 若5分钟内检测到再次切换,则升级为语音告警,电话通知值班DBA;
- 告警内容包含集群名、旧主、新主、切换完成时间;
- 后续在控制台查询发送状态与通话时长,确认DBA已收到。
主从切换告警代码示例
以POST方式调用短信接口,接口地址 https://api.ihuyi.com/sms/Submit.json :
curl -X POST https://api.ihuyi.com/sms/Submit.json \
-d "account=你的APIID" \
-d "password=你的APIKEY" \
-d "mobile=13700137000" \
-d "content=订单库集群已完成主从切换,旧主db-m1已下线,新主db-m3已上线,请DBA尽快核查复制延迟与应用连接"
返回code=2表示提交成功,系统会返回smsid用于追踪。
切换预警注意事项
- 切换脚本中调用预警要设超时与重试,避免告警接口阻塞failover流程;
- 普通一次切换用短信即可,短时间反复切换升级语音,控制告警强度;
- 接收人按DBA值班表路由,不要群发全公司造成干扰;
- APIID与APIKEY通过环境变量注入,不写入脚本仓库。
主从切换的触发条件与通知对象
主从切换不是单一事件,而是一组可观测信号的组合:主库心跳丢失、主库只读失败、复制延迟超过阈值、从库提升完成。每一类信号对应不同的通知对象。主库宕机触发的切换,需要立刻语音通知当班DBA与后端运维;切换完成、业务切到从库后,用短信通知业务方负责人确认流量正常;复制延迟类的预警则只需短信提醒DBA观察,不必打扰业务。
影响分析:一次未被及时感知的主从切换,会导致写入流量继续打到已只读的旧主库,业务侧表现为接口报错、订单提交失败。告警在切换发生后30秒内触达DBA,能显著缩短只读窗口暴露时间。
切换事件的通知内容组织
切换告警的短信或语音内容应包含三个要素:哪个集群、发生了什么、需要做什么。例如"订单库主从切换完成,新主库为10.0.0.8,请DBA确认只读流量并监控复制延迟"。语音播报控制在70字以内,结构化细节放在短信里。
- 高可用组件检测到主库异常,自动提升从库;
- 切换完成事件写入消息队列,触发告警引擎;
- 引擎按事件级别选择语音或短信通道;
- DBA在控制台核对通话时长与送达状态;
- 故障恢复后记录切换时间线,用于复盘。
接口地址可参考短信通知接口文档。建议把切换告警与日常巡检告警分开账号或分组管理,便于按成功计费核对成本。
让高可用事件主动找人,而不是等人去查监控。前往注册免费试用,领取额度后即可在切换脚本中接入验证。