798 words
4 minutes
SQL 系列(九):高可用基础

AI 智能总结

数据库 9 高可用基础#

高可用目标:消除单点故障,故障发生时快速切换,保障业务持续访问。三款数据库原生高可用方案架构、原理、适用场景差异明显。

一、MySQL 主从复制(Replication)#

核心原理#

主库执行事务,写入binlog;从库拉取binlog,在本地回放,实现数据同步。

同步模式:

  1. 异步复制:主库写完直接返回,不等待从库,性能高,存在数据丢失风险;
  2. 半同步复制:主库等待至少一个从库接收日志后再返回,平衡性能与数据安全。
# 主库关键配置
server-id=1
log_bin=mysql-bin
# 从库关键配置
server-id=2
relay_log=relay-bin

典型架构#

一主多从;读写分离(写主库,读分摊至从库)。

短板#

原生只支持实例级别同步;故障切换需要脚本/中间件(MGR、Keepalived、ProxySQL)协助,无官方自动化故障转移。

MySQL8.0支持MGR组复制,是官方升级版高可用方案。

二、Oracle DG(Data Guard,数据卫士)#

核心原理#

主库联机重做日志传输至备库,备库应用日志实现同步。

分为三类模式:

  1. 最大性能:异步传输,性能优先;
  2. 最大可用:同步传输,网络中断自动降级异步;
  3. 最大保护:强同步,保证零数据丢失,网络故障主库停止写入。

两种备库类型#

  • 物理备库:底层数据块同步,支持只读或者日志应用;
  • 逻辑备库:基于日志解析成SQL回放,支持备库写入少量数据。

特点#

Oracle官方企业级方案,支持自动切换(Fast-Start Failover),金融行业广泛使用。

三、SQLServer AlwaysOn 可用性组#

核心原理#

基于事务日志传送,多个副本组成可用性组。主副本读写,多个辅助副本可承担只读流量。

同步模式:

  • 同步提交:事务必须在主、同步副本完成持久化才返回,近乎零丢失;
  • 异步提交:主库无需等待副本,追求性能。

关键特性#

支持自动故障转移;内置读写分离路由;依赖Windows故障转移集群(基础版本),Linux环境同样支持AlwaysOn。

四、三大方案横向对比#

  1. MySQL主从
    同步载体:binlog;
    优势:轻量、部署简单、开源免费;
    劣势:无原生自动故障切换,强同步性能损耗较大。

  2. Oracle DG
    同步载体:redo日志;
    优势:成熟稳定,多种保护等级可选,支持零丢失;
    劣势:Oracle商业版,授权成本高,运维复杂度高。

  3. SQLServer AlwaysOn
    同步载体:事务日志;
    优势:读写分离、自动故障转移一体化;
    劣势:商业数据库,对集群环境依赖较高。

五、通用实践要点#

  1. 高可用≠数据零丢失,同步模式决定故障时的数据丢失风险;
  2. 同步复制会带来网络延迟与性能损耗,需要评估业务容忍度;
  3. 主从/DG/AlwaysOn仅解决实例故障,不能替代定期数据备份;
  4. 跨机房部署需要专线,网络波动极易引发同步延迟、切换故障。
SQL 系列(九):高可用基础
https://fuwari.vercel.app/posts/sql-series/sql-09-high-availability/
Author
Zero02
Published at
2025-05-27
License
CC BY-NC-SA 4.0