服务器与大带宽专家 · 持牌IDC/CDN/ISP服务商
简米科技官网JIANMI TECH
资讯 2026-09-27 简米科技 4,301 字 10 分钟阅读

数据库主库故障时业务如何快速切换,数据库高可用切换方案有哪些?

导读数据库主库故障时,业务快速切换的核心是:先摘流量、再选新主、后切连接,最后校验数据并保留回切窗口;没有演练的自动切换,不如有预案的手动切换可靠,数据库主库故障时业务如何快速切换:先判故障域,再切流量故障域判断:别把网络抖动当主库宕机主库连不上,不一定就是主库死了,先分清是主库进程崩溃、主机宕机、网络分区,还是应……

数据库主库故障时,业务快速切换的核心是:先摘流量、再选新主、后切连接,最后校验数据并保留回切窗口;没有演练的自动切换,不如有预案的手动切换可靠。

数据库主库故障时业务如何快速切换:先判故障域,再切流量

故障域判断:别把网络抖动当主库宕机

主库连不上,不一定就是主库死了,先分清是主库进程崩溃、主机宕机、网络分区,还是应用连接池打满,操作上可以按下面顺序查。

  • 在从库执行 SHOW REPLICA STATUS\G,看 Replica_IO_Running、Replica_SQL_Running、Seconds_Behind_Source。
  • 在应用侧执行 mysqladmin -h 主库VIP ping,或 telnet 主库IP 3306。
  • 登录数据库主机看 systemctl status mysqld、/var/log/mysql/error.log、dmesg。
  • 检查监控:QPS、连接数、主库心跳、VIP漂移记录、Proxy健康检查。
  • 如果是云数据库,先看控制台事件和可用区状态,再决定是否手动切换。

这一步的目标只有一个:确认旧主是否还能恢复,旧主能快速恢复,就不要急着切;旧主短时间不可恢复,才进入切换流程。

切换决策:RTO和RPO怎么定

据中国信通院公开资料,容灾建设通常把RTO和RPO作为核心指标,RTO是业务能忍多久,RPO是能丢多少数据,两个指标不同,切换方案完全不同。

场景 RTO目标 RPO目标 常见方案 切换动作
同城单机房主库故障 分钟级 接近0 半同步复制+VIP 提升从库,切VIP
跨城容灾 十分钟级 秒级到分钟级 异步复制+DNS/Proxy 切只读,人工确认
云数据库多可用区 秒级到分钟级 接近0 云托管高可用 控制台或自动切换
电商大促核心库 秒级到分钟级 尽量不丢 半同步+Proxy+降级 先保写入,再保查询

RTO和RPO不是技术参数,而是业务承诺。 写不进预案的指标,故障时基本做不到。

MySQL主从切换与MHA方案哪个好?先看场景再选工具

传统主从+VIP手动切换

这是最可控的路径,适合核心交易库,步骤如下。

  1. 确认旧主不可恢复:mysqladmin -h old_master ping,或多次探测3306端口。
  2. 数据库主库故障时业务如何快速切换,数据库高可用切换方案有哪些?

  3. 选新主:对比从库的GTID、Exec_Master_Log_Pos、Relay_Master_Log_File,选数据最全、延迟最小的从库。
  4. 提升新主:
    • STOP REPLICA;
    • RESET REPLICA ALL;
    • SET GLOBAL read_only=OFF;
    • SET GLOBAL super_read_only=OFF;
  5. 其他从库指向新主:
    • CHANGE REPLICATION SOURCE TO SOURCE_HOST='new_master', SOURCE_USER='repl', SOURCE_PASSWORD='', SOURCE_AUTO_POSITION=1;
    • START REPLICA;
  6. 切VIP:ip addr add 10.0.0.10/24 dev eth0,再执行 arping -c 3 -A -I eth0 10.0.0.10,用Keepalived时检查状态切换。
  7. 应用改连接串或刷新DNS,使用ProxySQL时,更新 mysql_servers 的 hostgroup_id,执行 LOAD MYSQL SERVERS TO RUNTIME; SAVE MYSQL SERVERS TO DISK;。

MHA、Orchestrator、云托管怎么选

  • MHA:老牌MySQL主从切换工具,依赖SSH,能自动选主,但社区活跃度下降,适合存量自建MySQL。
  • Orchestrator:拓扑管理强,支持Raft和Web界面,适合多主从、多集群环境。
  • ProxySQL+VIP:不是切换工具,但能减少应用改配置,适合配合手动或自动切换。
  • 云数据库多可用区:控制台可切换,代理连接通常能自动漂移,但应用连接池仍要验证。

业内专家指出,切换工具的选择要服务于故障域,而不是反过来,能手动切稳的团队,上自动切换才有意义。

自动切换的风险

  • 脑裂:旧主恢复后继续写,旧主恢复必须先 SET GLOBAL read_only=ON; SET GLOBAL super_read_only=ON;,再以从库身份加入。
  • 数据丢失:异步复制下,新主可能少一部分事务,核心库尽量用半同步。
  • 应用连接池未刷新:旧连接仍指向旧主,重启连接池,或设置 maxLifetime 小于数据库 wait_timeout。
  • DNS缓存:TTL太长,业务迟迟切不过去,核心系统优先VIP或Proxy,不优先DNS。

同城双活数据库切换要多久?真实耗时拆解

分钟级切换的时间都花在哪

同城双活数据库切换要多久,取决于发现、决策、执行、重连、校验五段。

  • 故障发现:10秒到60秒,看监控粒度。
  • 人工决策:1分钟到5分钟,核心系统常保留确认环节。
  • 新主提升:10秒到30秒。
  • 从库重指:10秒到60秒。
  • VIP/DNS切换:VIP通常秒级,DNS可能几分钟。
  • 应用重连:10秒到60秒,连接池越大越慢。
  • 数据库主库故障时业务如何快速切换,数据库高可用切换方案有哪些?

    数据校验:5分钟到30分钟,不能省。

故障发现、DNS缓存、连接池刷新,经常才是大头。 数据库提升本身反而很快。

缩短切换时间的实操

  • 用VIP或ProxySQL代替纯DNS,DNS TTL设短一些。
  • 开启半同步复制,降低RPO。
  • 应用连接串配置多主机,jdbc:mysql://vip:3306/db?autoReconnect=true&failOverReadOnly=false&maxReconnects=3。
  • 连接池配置健康检查,例如HikariCP的 connectionTestQuery=SELECT 1、validationTimeout=3000。
  • 监控每2秒探测 SELECT 1,不要只探端口。
  • 每季度做一次切换演练,记录实际RTO。
  • 提前准备回切脚本,避免旧主恢复后手工操作混乱。

切换后必须做的校验

  • 检查新主 read_only 是否关闭,其他从库是否指向新主。
  • 检查GTID是否连续:SELECT @@GLOBAL.gtid_executed;
  • 校验核心业务表:订单、支付、库存、账户余额。
  • 检查自增ID、唯一索引、触发器、定时任务。
  • 观察复制延迟,确认没有持续放大。
  • 旧主恢复后先只读加入,追平后再评估回切。

北京地区数据库主库故障应急切换服务价格大概多少?

北京地区数据库主库故障应急切换服务价格大概多少,公开云市场和招标信息显示差异很大,基础演练咨询、单次应急支持、7×24核心系统驻场,通常不在同一量级,报价主要看下面几项。

  • 数据库类型和节点规模:MySQL、PostgreSQL、Oracle、分布式数据库,复杂度不同。
  • 是否要求现场:北京同城到场和远程支持,成本不同。
  • RTO/RPO要求:秒级切换和分钟级切换,方案成本不同。
  • 演练次数:一次演练和全年多次演练,人力投入不同。
  • 是否包含云资源:云主机、带宽、跨可用区流量另算。
  • 是否包含回切:只切过去不管回来,报价通常更低。

自建与采购的对比

维度 自建团队 采购应急服务
成本 长期人力 按次、按年或按项目
响应 看值班制度 看合同SLA
适合 有DBA梯队 缺人、核心系统、合规要求高
风险 人员流动 服务商是否熟悉你的架构

选服务商的检查清单

  • 是否提供切换演练,而不是只给脚本。
  • 数据库主库故障时业务如何快速切换,数据库高可用切换方案有哪些?

  • 是否有回切方案和旧主恢复流程。
  • 是否签SLA,明确响应时间和RTO。
  • 是否覆盖监控、Proxy、VIP、连接池、数据校验。
  • 是否愿意做故障注入测试。

电商大促期间数据库主库故障怎么切?

大促前:把切换开关准备好

  • 只读降级:非核心查询走只读从库,允许延迟。
  • 写入排队:订单、支付失败时进队列,避免直接丢单。
  • 限流:对非核心接口限流,保核心链路。
  • 预案:主库故障后,先切从库,再关闭报表、推荐、日志等写入。
  • 演练:大促前至少做一次全链路切换演练。

大促中:先保交易还是先保查询

电商大促期间数据库主库故障怎么切,答案通常是先保支付、订单、库存扣减,再保查询,查询可以走只读从库,允许几秒延迟,非核心功能可以降级,切换动作要快,但数据校验不能省,订单和支付要对账,库存要防超卖。

大促后:回切与数据补偿

  • 对账:订单、支付、库存、优惠券逐项核对。
  • 补单:对失败事务做补偿,补偿要幂等。
  • 修复复制:旧主恢复后以只读加入,追平GTID。
  • 回切:选低峰窗口,按预案回切,回切前再校验一次。

数据库主库故障切换的胜负手在平时:监控、复制模式、切流通道、演练,把RTO和RPO写进预案并定期验证,业务才能在故障时快速稳住。

数据库主库故障切换Q&A

数据库主库故障时业务如何快速切换,自动切换一定比手动快吗?

不一定,自动切换减少人为等待,但可能误判、脑裂,核心系统常用“自动检测+人工确认”或“半自动切换”,手动切换慢在决策,快在可控,自动切换快在执行,风险在误切,选哪种,看业务能否接受误切和回滚成本。

MySQL主从切换与MHA方案哪个好,云数据库还需要自己搭吗?

云数据库多可用区通常自带高可用,控制台可切换,不必自己搭MHA,自建MySQL可考虑Orchestrator、MHA、ProxySQL+VIP,是否自搭,看合规、成本和可控性,已有DBA团队且需要深度定制,自建更合适;缺人且追求稳定,云托管更省心。

同城双活数据库切换要多久,切换后旧主恢复怎么办?

同城双活若用VIP+半同步,业务侧通常秒级到分钟级;若走DNS,可能受TTL影响,旧主恢复后先设 read_only=ON 和 super_read_only=ON,以从库身份指向新主,确认GTID追平后再评估回切,旧主未追平前,禁止直接写。

分享本文
本文为 简米科技官网 原创,已由运维技术专家审核。转载请注明来源:原文链接
售前咨询 服务热线 售后 邮箱