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安装成集模式,⽽不是单机模式。安装的具体步骤,请参见本书的第⼀章。安装成功以后,您就可以看到本节所提到的各个管理界⾯了。windows server 2012四个版本
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⽂件)
具体何种版本⽀持哪些⾼可⽤特性,请参阅:msdn.microsoft/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集具有带宽占⽤少、同步效率⾼、数据实时性⾼、数据⼀致性保障好的特点。
优点:第三⽅较综合的⽅案,可回避故障转移集、镜像、复制、⽇志传送⼏种技术的缺点。
缺点:⼤批量写⼊操作(类似采集系统)数据同步会有性能消耗。
参考:blog.csdn/z_cloud_for_sql/article/details/58042356
blog.csdn/kk185800961/article/details/72831081

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。