数据库达不到高可用是什么意思?

“最小双机热备方案”中的数据库为什么达不到高可用?

原因很简单:
在最小方案里,两台服务器虽然互相热备,但 数据库只会有一份数据副本,不会做实时同步,也不会在数据库层面实现自动切换。

换句话说:

你的 Web 服务可以热备(自动切换),
但你的数据库只有一个有效的数据源,并不具备数据库级别的故障切换能力。

我下面用图和例子让你更容易理解。


📌 最小方案结构(2 台服务器,每台都部署了数据库,但不做同步)

ServerA(主) 
    ├─ Web
    └─ Database (唯一数据源)

ServerB(备)
    ├─ Web
    └─ Database (但不实时同步、不参与工作)

虽然 ServerB 上也装了数据库,但没有实时同步。


这种情况下的问题是什么?

❌ 情况 1:主机数据库坏了

  • 数据库崩溃
  • 数据库文件损坏
  • 硬盘损坏

▶ 即使备机 Web 能接管,但它的数据库也是老数据,或者没数据
▶ 业务依然无法工作

所以数据库不具备高可用性


❌ 情况 2:主机宕机,但备机数据库没有最新数据

ServerA(主)正在正常工作,数据库里不断写入数据:

例如:

  • 客户下单
  • 售后登记
  • 代理商新建账号
  • 入库/出库数据

如果突然宕机:

ServerA 宕机 → VIP 漂移到 ServerB → Web 接管成功

但是 ServerB 的数据库:

  • 要么是空的
  • 要么是旧备份
  • 要么没有同步到最新数据

▶ Web 接管也没用,因为 数据库缺数据

这就是“数据库不高可用”。


那么数据库怎样才叫高可用?

必须满足两个条件:

① 数据实时同步(至少主从同步)

例如:

  • MySQL 主从(Semi-sync)
  • MySQL InnoDB Cluster
  • MariaDB Galera
  • PostgreSQL Streaming Replication

② 当主库挂掉,备库能自动切换

才能叫数据库高可用(DB HA)。


🌟 最小方案为什么不具备数据库 HA?原因如下:

因为:

  • 不部署主从/集群
  • 不做数据库复制
  • 不做自动切换
  • 没有独立的数据库高可用组件(MGR/PXC/Patroni 等)

你得到的只是:

Web 服务是高可用的,
但数据库是“单点”(Single Point of Failure)。


🎯 总结成一句话:

两台服务器 + Keepalived 的最小方案里,
只有 Web 层能自动切换,数据库无法保持最新,也无法自动接管,
因此数据库“不具备高可用”。


如果你需要的 HA 等级是:

需求所需服务器数
只需要 Web 热备(最小)2 台
Web + 数据库双高可用3 台起步
企业级高可用(LB + DB Cluster)5 台以上

发表回复