Photo by Lorem Ipsum
798 words
4 minutes
SQL 系列(九):高可用基础
SQL 教程
Posts in this series (10)AI 智能总结
数据库 9 高可用基础
高可用目标:消除单点故障,故障发生时快速切换,保障业务持续访问。三款数据库原生高可用方案架构、原理、适用场景差异明显。
一、MySQL 主从复制(Replication)
核心原理
主库执行事务,写入binlog;从库拉取binlog,在本地回放,实现数据同步。
同步模式:
- 异步复制:主库写完直接返回,不等待从库,性能高,存在数据丢失风险;
- 半同步复制:主库等待至少一个从库接收日志后再返回,平衡性能与数据安全。
# 主库关键配置server-id=1log_bin=mysql-bin# 从库关键配置server-id=2relay_log=relay-bin典型架构
一主多从;读写分离(写主库,读分摊至从库)。
短板
原生只支持实例级别同步;故障切换需要脚本/中间件(MGR、Keepalived、ProxySQL)协助,无官方自动化故障转移。
MySQL8.0支持MGR组复制,是官方升级版高可用方案。
二、Oracle DG(Data Guard,数据卫士)
核心原理
主库联机重做日志传输至备库,备库应用日志实现同步。
分为三类模式:
- 最大性能:异步传输,性能优先;
- 最大可用:同步传输,网络中断自动降级异步;
- 最大保护:强同步,保证零数据丢失,网络故障主库停止写入。
两种备库类型
- 物理备库:底层数据块同步,支持只读或者日志应用;
- 逻辑备库:基于日志解析成SQL回放,支持备库写入少量数据。
特点
Oracle官方企业级方案,支持自动切换(Fast-Start Failover),金融行业广泛使用。
三、SQLServer AlwaysOn 可用性组
核心原理
基于事务日志传送,多个副本组成可用性组。主副本读写,多个辅助副本可承担只读流量。
同步模式:
- 同步提交:事务必须在主、同步副本完成持久化才返回,近乎零丢失;
- 异步提交:主库无需等待副本,追求性能。
关键特性
支持自动故障转移;内置读写分离路由;依赖Windows故障转移集群(基础版本),Linux环境同样支持AlwaysOn。
四、三大方案横向对比
-
MySQL主从
同步载体:binlog;
优势:轻量、部署简单、开源免费;
劣势:无原生自动故障切换,强同步性能损耗较大。 -
Oracle DG
同步载体:redo日志;
优势:成熟稳定,多种保护等级可选,支持零丢失;
劣势:Oracle商业版,授权成本高,运维复杂度高。 -
SQLServer AlwaysOn
同步载体:事务日志;
优势:读写分离、自动故障转移一体化;
劣势:商业数据库,对集群环境依赖较高。
五、通用实践要点
- 高可用≠数据零丢失,同步模式决定故障时的数据丢失风险;
- 同步复制会带来网络延迟与性能损耗,需要评估业务容忍度;
- 主从/DG/AlwaysOn仅解决实例故障,不能替代定期数据备份;
- 跨机房部署需要专线,网络波动极易引发同步延迟、切换故障。