SQL Server DBA面试知识点(三)--SQL Server如何实现高可用性

本文介绍了SQLServer中实现高可用性的多种技术,包括复制、数据库镜像、故障转移群集及AlwaysOn可用性组等,这些技术通过数据冗余和服务冗余确保系统的稳定运行。

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

高可用性highly availability 指系统持续稳定提供服务的能力,减少硬件或软件失败而导致的宕机时间。
传统关系型数据库由于水平扩展性(scale out)差而饱受诟病,因此数据库服务器常常为单节点,而单节点失败会导致整个系统无法工作,因而可用性降低。提高可用性可从两个方面入手:

  • 数据安全:增加一个或多个数据副本,并在它们之间同步数据。当某数据副本由于各种原因无法使用时,可以访问其他数据副本,从而减少宕机时间。
  • 服务安全:当SQL Server服务器出现问题时(例如CPU100%导致服务无响应,但数据并未丢失),自动failover到standby节点并继续提供服务。

SQL Server在这两方面提供了多种技术来提高可用性。

  1. 复制 replication
    Replication is a set of technologies for copying and distributing data and database objects from one database to another and then synchronizing between databases to maintain consistency.
    由定义可知一份数据有一个或多个副本,因此提高了可用性。replication有很多种方式,例如在不同数据库间传递快照(Snapshot is a static read only picture of database at a given point of time。 Snapshot is implemented by copying a Page (8KB for SQL SERVER) at a time.)来实现复制,或者传递事务日志来实现复制。在复制中没有standby服务器,publisher & subscriber都是active的, 还可实现动态负载平衡,但不能实现自动failover。复制可针对服务器上的指定的数据库,也可以针对指定的表。
  2. Database Mirroring and Log Shipping
    这两种技术都通过传递事务日志到另外的数据库服务器上来实现数据的多个副本。如果只有一个destination,则使用镜像。如果多于一个,使用log shipping或结合镜像使用。
    数据库镜像维护同一个数据库在两台机器上的不同副本。一个响应客户端请求,另一个保持同步并standby并在主节点失败时自动failover到standby机器上。sandby分为两种:hot and warm。A hot standby server supports rapid failover without a loss of committed transactions, and a warm standby server supports forcing service (with possible data loss). 当主节点失败时,客户端会得到一个连接丢失的Exception,当客户端retry时,即可连接到mirror节点(此时已是principle节点)并继续工作。对于客户端来说是完全透明的。
    Log shipping 允许将事务日志自动传送到一个或多个从数据库服务器上,从而实现数据冗余。但Log shipping不会自动failover。
    以上两个方法都是通过增加数据副本来提高可用性。这种做法另外一个好处是,你可以用增加的数据副本做其他的事情。例如你有一个专门用于产生报表的数据库,数据来源是另外一个业务数据库。此时就可以定期的产生业务数据库快照并应用到报表数据库,这样报表数据库总是能定期得到最新的数据,同时两个数据库分别对不同的系统提供服务。
  3. Failover Cluster
    Failover Clustering is a high availability option only (unlike others above which can be used for disaster recovery as well) used with clustering technology provided by hardware + OS
    Most of time, on shared external storage like SAN.Advantages of a SAN storage is large efficient hot pluggable disk storage.
    前两种方案是通过数据冗余来达到数据安全,而failover cluster则是从服务安全入手。Failover cluster方案并没有增加数据副本,数据由一个共享SAN来存储,failover在两个服务节点之间发生,用于例如主节点CPU100%时,需要切换到副节点的情况。由于没有多个数据副本,因此不存在数据同步的问题。另外SAN在硬件层面有数据冗余措施,因此数据安全性并不低。
  4. AlwaysOn Availability Groups
    它是从SQL Server 2012企业版开始提供的高可用性以及容灾的解决方案,提供企业级的数据库镜像服务。它真正实现了多副本,无数据丢失,可自动failover的高可用性。AlwaysOn Availability Groups本身的架构较为复杂,请大家自行参考官网。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值