深入解析SQL Server高可用镜像实现原理

本文详细探讨了SQL Server的高可用镜像实现原理,包括数据副本、运行模式、故障转移、透明切换等方面。重点介绍了带故障转移的高安全模式下,镜像集群如何通过Witness实现自动故障切换,确保数据零丢失。此外,还提到了SQL Server的事务日志机制,以及在高性能和高安全模式下的特点。文章最后讨论了客户端的透明切换以及镜像集群的监控方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

本文来自网易云社区

SQL Server 是windows平台.NET架构下标配数据库解决方案,与Oracle、MySQL共同构成了DB-Engines Ranking的第一阵营,在国内外企业市场中有着广泛的应用。Mirroring是SQL Server 最常用的高可用解决方案,具有自动故障转移,高安全模式下具有数据“零”丢失,对客户端透明等优势,目前AWS、阿里云、腾讯云均采用该技术实现云端SQL Server 高可用部署。今天我们就来聊聊SQL Server 高可用镜像实现原理;

数据副本

镜像技术实现了位于不同物理服务器上的两个SQL Server实例数据同步,在镜像集群中,SQL Server实例具有三种角色;

  • Principal:具有完整的数据副本,对外提供数据库读写服务;

  • Mirror:具有完整的数据副本,本身不提供读写服务,通过接收来自Principal的更新日志实现数据同步,允许创建快照实现报表;

  • Witness: 本身不存储数据,只负责在高安全运行模式下提供自动故障切换的能力,确保两个SQL Server实例只有一个对外提供服务,避免脑裂情况出现;


2018081511461482f73038-8fdc-4ee5-a551-19641ef07cff.gif

在镜像集群中,principal和mirror的数据同步是依靠事务日志来实现的,与Oracle和MySQL 不同,SQL Server的事务日志是Database级别的,不是实例级别的,每个Database都单独的事务日志,这也就使得SQL Server的镜像是可以基于Database层面实现。一个SQL Server实例中的两个Database,一个可以作为principal,一个可以作为mirror,分别与其他SQL Server实例组建镜像关系;另外,SQL Server 一个Database只能有一个mirror节点,一个mirror的database不可以再有mirror节点,这点与MySQL级联复制不同;

201808151146317419214a-e4e8-4029-9e90-e0d24633b90c.gif


SQL Server的事务日志是物理记录级别的,记录了对数据库某个页的某行记录(slot)的操作,princip

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值