001.SQLServer高可用简介

一 SQLServer高可用集群相关概念

1.1 Windows故障转移群集

Windows故障转移群集是由多个服务器组成的共同提供某高可用服务,该服务用于防止单台服务器故障致使服务失效。故障转移群集是一种高可用性的基础结构层,由多台计算机组成,每台计算机至关于一个冗余节点,整个群集系统容许某部分节点掉线、故障或损坏而不影响整个系统的正常运做。一台服务器接管发生故障的服务器的过程一般称为"故障转移"。

1.2 集群节点

运行着相同Microsoft 群集服务 (MSCS)的一组(相关)服务器。每一个服务器也被称为“节点”(Node),每一个节点上都运行着Microsoft 群集服务 (MSCS)。这些节点有相同的软硬件配置,而且具备共享的磁盘(Shared Array)。

1.3 共享的磁盘(Shared Array)

集群中的一块逻辑磁盘,或一块磁盘上的一个mountpoint,对于一个SQL Server群集实例,存放着数据库的全部数据文件和事务日志文件(MDF,NDF和LDF),SQL Server和SQLServer Agent的日志文件(ERRORLOG),以及一些其余的文件和目录,必须设置共享磁盘和SQLServer资源在一个资源组里,这样就保证了运行SQL Server服务的节点必定能访问到共享磁盘里的数据。
事实上SQL Server资源和共享磁盘资源是具备“依赖”关系的。也就是说在磁盘资源没法在某节点正常运行的时候,SQL Server资源在该节点也没法上线运行。
注意:一个共享磁盘资源只能属于一个SQLServer实例(事实上,在安装SQL Server群集实例时是SQLServer安装在一个已经被其余SQL Server群集实例使用的共享磁盘上的)。可是一个SQLServer群集实例可使用多个共享磁盘。

1.4 私有网络和公共网络

"私有网络"(private network),每一个节点上有一块私有网卡,这些网卡经过网络互相链接组成了私有网络。节点之间经过私有网络互相发送信号来感知彼此是否已经工做正常,这类信号被称为“心跳线”。一旦某服务器由于某种异常而没法回应信号,此时剩余的节点就认为这个节点已经“死了”,因而就把这个节点排除出当前群集。
"公用网络"(public network),用来被群集外部的资源所使用的一个网络。每一个节点上有一块公共网卡,外部资源经过公用网卡来访问这个节点。
注意:私有网卡和公共网卡在物理上能够是一块网卡,这种时候群集就经过一个网络来完成私有网络和公共网络的职责,这个网络被称其为混合网络(mixednetwork)。

1.5 SQLServer网络名和SQL Server IP地址

SQL Server群集并不使用Windows群集的虚拟网络名和虚拟IP地址来做为应用程序访问它的接口。在SQLServer的资源组里有该SQL Server实例本身专用的虚拟网络名和IP地址这两个资源,它们提供了应用程序访问SQL Server时使用的机器名或者IP地址。事实上,不管是Windows群集仍是SQL Server群集的虚拟机器名/IP,它们的资源类型都是相同的,只是它们一个服务于Windows虚拟服务器;一个服务于SQL Server群集实例。

1.6 SQL Server故障转移群集

所谓的SQL Server故障转移群集,就是将SQLServer部署在Windows群集中的多个节点上,而后组成一个虚拟的SQLServer实例。这样SQL Server 实例依就像运行在单台计算机同样显示在网络中。不过它具备一种功能,即在当前运行SQLServer实例的节点不可用时,能够在节点之间进行故障转移,把SQL Server切换到工做正常的节点上去继续为应用程序提供服务。
实现这个功能,须要将SQL Server安装成群集模式,而不是单机模式。安装的具体步骤,请参见本书的第一章。安装成功之后,您就能够看到本节所提到的各个管理界面了。

1.7 组员组和活跃节点

“资源组”就是由一个或者多个资源组成的组。全部的故障转移都是以资源组为单位发生的,在任什么时候候,每一个资源组都仅属于群集中的一个节点,这个节点就是该资源组的“活跃节点”。因为资源组里的资源是一块儿切换的,因此这些资源应该是彼此关联,而且协同工做来提供某项服务。用户应当尽可能避免把无关的资源加入到同一个资源组里。能够简单地把资源组想象成在虚拟服务器上运行的一个个独立的应用程序或者服务,而群集技术为这些应用程序或者服务提供了高可用的特性。

二 高可用策略

当前SQL Server提供了多种高可用性技术,主要包括:集群、复制、镜像、日志传送、AlwaysOn可用性组以及其它诸如文件组备份还原、在线重建索引等单实例的高可用性技术。须要基于业务和技术综合考虑具体所采用的高可用方案,由于没有一项单独的技术能够实现全部的功能。
一般在设计高可用性策略时应该首先考虑下述因素:
RTO(Recovery Time Objective):恢复时间目标,即意味着容许多少宕机时间,一般用几个9表示,好比说99.999%的可用性意味着每一年的宕机时间不超过5分钟、99.99%的可用性意味着每一年的宕机时间不超过52.5分钟、99.9%的可用性意味着每一年的宕机时间不超过8.75小时。
提示:一般RTO的计算方法须要考虑系统是24*365,仍是仅仅是上午6点到下午9点等。同时须要考虑是否维护窗口的时间在算在宕机时间以内,若是容许在维护窗口时间进行数据库维护和打补丁,则更容易实现更高的可用性。
RPO(Recovery Point Objective):恢复点目标,即意味着容许多少数据损失。一般只要作好备份,能够比较容易的实现零数据损失。但当灾难发生时,取决于数据库损坏的程度,从备份恢复数据所须要的时间会致使数据库不可用,这会影响RTO的实现。

三 常见备份方式

根据主机和备机之间同步数据的程度,备份能够分为三种状况,分别为冷备份、暖备份和热备份。

3.1 冷备份

冷备份也就是所谓的备份,备用服务器被配置用于接受主服务器的数据,当出故障时,手动将数据还原到主数据库,或是从新配置程序的链接字符串或权限来使得备份数据库上线。

3.2 暖备份

暖备份也就是主服务器数据会不停的将日志传送到备用服务器(间隔不定,能够是15分钟,30分钟,1分钟等等),在这方式下,主服务器到备份服务器一般是异步更新,因此不能保证主服务器和备份服务器数据一致。此外,该方案一般不会实现自动故障监测和故障转移。

3.3 热备份

热备份也就是主服务器的数据自动在备份服务器上进行同步,大多数状况下都会包含自动的故障监测和故障转移,而且可以保证主服务器和备份服务器的数据一致性。
提示:随着冷备份到暖备份到热备份,成本会直线上升。

四 SQL Server高可用特性

4.1 特性简介

SQL Server中所支持的高可用性功能与版本息息相关,企业版支持全部的高可用性功能,这些功能包括:
  1. 故障转移集群
  2. 数据库镜像
  3. 事务日志传送
  4. 数据库快照
  5. 高可用性升级
  6. 热加载内存
  7. 在线索引操做
  8. 数据库部分在线(只还原了主文件组或主文件组和额外的NDF文件)
具体何种版本支持哪些高可用特性,请参阅:http://msdn.microsoft.com/zh-cn/library/cc645993.aspx,值得注意的是免费的Express版本能够做为数据库镜像的见证服务器,从而节省了成本。

4.2 故障转移集群

故障转移集群为整个SQL Server实例提供高可用性支持,这意味着在集群上某个节点的SQL Server实例发生了硬件错误、操做系统错误等会故障转移到该集群上的其它节点。经过多个服务器(节点)共享一个或多个磁盘来实现高可用性,故障转移集群在网络中出现的方式就像单台计算机同样,可是具备高可用特性。
注意:因为故障转移集群是基于共享磁盘,所以会存在磁盘单点故障,所以须要在磁盘层面部署SAN复制等额外的保护措施。最多见的故障转移集群是双节点的故障转移集群,包括主主节点和主从节点。
缺点:辅助节点不可用,数据单点。

4.3 事务日志传送

事务日志传送提供了数据库级别的高可用性保护。日志传送可用来维护相应生产数据库(称为“主数据库”)的一个或多个备用数据库(称为“辅助数据库”)。发生故障转移以前,必须经过手动应用所有未还原的日志备份来彻底更新辅助数据库。日志传送具备支持多个备用数据库的灵活性。若是须要多个备用数据库,能够单独使用日志传送或将其做为数据库镜像的补充。当这些解决方案一块儿使用时,当前数据库镜像配置的主体数据库同时也是当前日志传送配置的主数据库。
事务日志传送可用于作冷备份和暖备份的方式。
缺点:日志还原时不能读取数据,严格意义上不属于热备份。

4.4 数据库镜像

数据库镜像其实是个软件解决方案,一样提供了数据库级别的保护,可提供几乎是瞬时的故障转移,以提升数据库的可用性。数据库镜像能够用来维护相应生产数据库(称为“主体数据库”)的单个备用数据库(或“镜像数据库”)。
由于镜像数据库一直处于还原状态,但并不会恢复数据库,所以没法直接访问镜像数据库。可是,为了用于报表等只读的负载,可建立镜像数据库的数据库快照来间接地使用镜像数据库。数据库快照为客户端提供了快照建立时对数据库中数据的只读访问。每一个数据库镜像配置都涉及包含主体数据库的“主体服务器”,而且还涉及包含镜像数据库的镜像服务器。镜像服务器不断地使镜像数据库随主体数据库一块儿更新。
    数据库镜像在高安全性模式下以同步操做运行,或在高性能模式下以异步操做运行。在高性能模式下,事务不须要等待镜像服务器将日志写入磁盘即可提交,这样可最大程度地提升性能。在高安全性模式下,已提交的事务将由伙伴双方提交,但会延长事务滞后时间。数据库镜像的最简单配置仅涉及主体服务器和镜像服务器。在该配置中,若是主体服务器丢失,则该镜像服务器能够用做备用服务器,但可能会形成数据丢失。高安全性模式支持具备自动故障转移功能的备用配置高安全性模式。这种配置涉及到称为“见证服务器”的第三方服务器实例,它可以使镜像服务器用做热备份服务器。从主体数据库至镜像数据库的故障转移一般要用几秒钟的时间。
数据库镜像可用于作暖备份和热备份。
缺点:最多只支持两个节点,辅助节点可用性差。

4.5 复制

复制严格来讲并不算是一个为高可用性设计的功能,但的确能够被应用于高可用性。复制提供了数据库对象级别的保护。复制使用的是发布-订阅模式,即由主服务器(称为发布服务器)向一个或多个辅助服务器或订阅服务器发布数据。复制可在这些服务器间提供实时的可用性和可伸缩性。它支持筛选,以便为订阅服务器提供数据子集,同时还支持分区更新。订阅服务器处于联机状态,而且可用于报表或其余功能,而无需进行查询恢复。SQL Server 提供四种复制类型:快照复制、事务复制、对等复制以及合并复制。
缺点:非高可用功能,经常使用于读写分离,维护成本较高。

4.6 AlwaysOn可用性组

AlwaysOn可用性组是SQL Server 2012推出的新功能。一样提供了数据库级别的保护。它取数据库镜像和故障转移集群之长,使得业务上有关联的数据库做为一个可用性组共同故障转移,该功能还拓展了数据库镜像只能1对1的限制,使得1个主副本能够对应最多4个辅助副本(在SQL Server 2014中,该限制被拓展到8个),其中2个辅助副本能够被做为热备份和主副本实时同步,而另外两个异步辅助副本能够做为暖备份。此外,辅助副本还能够被配置为只读,并可用于承担备份的负载。
正由于如此,数据库镜像在SQL Server 2012中被标记为“过期”。
优势:微软较综合的方案,可回避故障转移群集、镜像、复制、日志传送几种技术的缺点。
缺点:SQL Server2012版本才能使用,没法自动实现负载均衡,须要本身配置读或写字符串。 

4.7 Moebius负载均衡集群

Moebius for SQL Server 是格瑞趋势专门针对Microsoft SQL Server开发的综合集群平台,基于SQL Server的内核实现,核心程序宿主在SQL Server的内核之中,该集群可实现数据库的负载均衡及横向扩展;保证数据库的可用性;保证多份冗余数据的实时同步。
Moebius集群,能够实现SQL语句一级的负载均衡;同时将自动故障监测、虚拟IP及失败转移技术融入其中,知足企业对高可用系统建设的要求;数据复制时,采用了同步和异步两种复制模式,可实现数据在多台服务器间实时同步,保证事务的一致性和完整性,支持远距离复制;Moebius集群具备带宽占用少、同步效率高、数据实时性高、数据一致性保障好的特色。
优势:第三方较综合的方案,可回避故障转移群集、镜像、复制、日志传送几种技术的缺点。
缺点:大批量写入操做(相似采集系统)数据同步会有性能消耗。
 
参考:https://blog.csdn.net/z_cloud_for_sql/article/details/58042356
https://blog.csdn.net/kk185800961/article/details/72831081
相关文章
相关标签/搜索