一 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中所支持的高可用性功能与版本息息相关,企业版支持所有的高可用性功能,这些功能包括:
- 故障转移集群
- 数据库镜像
- 事务日志传送
- 数据库快照
- 高可用性升级
- 热加载内存
- 在线索引操作
- 数据库部分在线(只还原了主文件组或主文件组和额外的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
- keepalived高可用简介与配置
keepalived简介 keepalived介绍 Keepalived 软件起初是专为LVS负载均衡软件设计的,用来管理并监控LVS集群系统中各个服务节点的状态,后来又加入了可以实现高可用的VRRP ...
- 001/Nginx高可用模式下的负载均衡与动静分离(笔记)
Nginx高可用模式下的负载均衡与动静分离 Nginx(engine x)是一个高性能的HTTP和反向代理服务器,具有内存少,并发能力强特点. 1.处理静态文件.索引文件以及自动索引:打开文件描述符缓 ...
- 002.SQLServer数据库镜像高可用简介
一 数据库镜像简介 1.1 数据库镜像概述 数据库镜像维护一个数据库的两个副本,这两个副本必须驻留在不同的 SQL Server 数据库引擎服务器实例上. 通常,这些服务器实例驻留在不同位置的计算机上 ...
- 001.MySQL高可用主从复制简介
一 简介 1.1 概述 Mysql内建的复制功能是构建大型,高性能应用程序的基础.将Mysql的数据分布在多个系统之上,这种分布的机制,是通过将Mysql的某一台主机的数据复制到其它主机(slaves ...
- 005.SQLServer AlwaysOn可用性组高可用简介
一 AlwaysOn 可用性组 1.1 AlwaysOn 可用性组概述 AlwaysOn 可用性组功能是一个提供替代数据库镜像的企业级方案的高可用性和灾难恢复解决方案.SQL Server 2012 ...
- 基于 ZooKeeper 搭建 Hadoop 高可用集群
一.高可用简介 二.集群规划 三.前置条件 四.集群配置 五.启动集群 六.查看集群 七.集群的二次启动 一.高可用简介 Hadoop 高可用 (High Availability) 分为 HDFS ...
- Hadoop 学习之路(八)—— 基于ZooKeeper搭建Hadoop高可用集群
一.高可用简介 Hadoop 高可用 (High Availability) 分为 HDFS 高可用和 YARN 高可用,两者的实现基本类似,但 HDFS NameNode 对数据存储及其一致性的要求 ...
- Hadoop 系列(八)—— 基于 ZooKeeper 搭建 Hadoop 高可用集群
一.高可用简介 Hadoop 高可用 (High Availability) 分为 HDFS 高可用和 YARN 高可用,两者的实现基本类似,但 HDFS NameNode 对数据存储及其一致性的要求 ...
- Keepalived高可用、四层负载均衡
目录 Keepalived高可用 高可用简介 常用的工具 问题 名称解释 VRRP协议 部署keepalived 下载安装 Keepalived配置 保证nginx配置一样 解决keepalived的 ...
随机推荐
- JAVA中的4种线程池的使用
Java通过Executors提供四种线程池,分别为:newCachedThreadPool创建一个可缓存线程池,如果线程池长度超过处理需要,可灵活回收空闲线程,若无可回收,则新建线程.newFixe ...
- 应验log4j.xml时不能找到log4j.dtd
原因分析:log4j.xml中使用log4j的DTD验证其格式的有效性"<!DOCTYPE log4j:configuration SYSTEM "log4j.dtd&quo ...
- 【python】关于函数递归使用 return 后,收到数据为 None。
在写一个辗转相除求最小公因数的程序的时候,突然发现自己不管怎么写(除了两数恰巧可以整除),return 返回的值恒为 none. 代码为此: def gcd(a,b): if a%b==0: retu ...
- POJ 3349 Snowflake Snow Snowflakes(哈希表)
题意:判断有没有两朵相同的雪花.每朵雪花有六瓣,比较花瓣长度的方法看是否是一样的,如果对应的arms有相同的长度说明是一样的.给出n朵,只要有两朵是一样的就输出有Twin snowflakes fou ...
- Java_总结_00_资源贴
1.Java程序员从笨鸟到菜鸟 (http://blog.csdn.net/column/details/java.html) 2. java进阶开发(http://blog.csdn.net/col ...
- Java微信开发_Exception_02_"errcode":40164,"errmsg":"invalid ip 61.172.68.219, not in whitelist hint
ip查询网址: http://www.ip.cn/ 一.异常现象 今天开始做微信开发,在办公室时能正常获取access_token,晚上回家之后获取access_token时却报出下列错误信息: {& ...
- IO - 同步,异步,阻塞,非阻塞 (转帖:http://blog.csdn.net/historyasamirror/article/details/5778378)
同步(synchronous) IO和异步(asynchronous) IO,阻塞(blocking) IO和非阻塞(non-blocking)IO分别是什么,到底有什么区别?这个问题其实不同的人给出 ...
- codeforces 631A A. Interview
A. Interview time limit per test 1 second memory limit per test 256 megabytes input standard input o ...
- 无旋Treap - BZOJ1014火星人 & 可持久化版文艺平衡树
!前置技能&概念! 二叉搜索树 一棵二叉树,对于任意子树,满足左子树中的任意节点对应元素小于根的对应元素,右子树中的任意节点对应元素大于根对应元素.换言之,就是满足中序遍历为依次访问节点对应元 ...
- 文件系统(node.js学习笔记)
根据nodejs菜鸟教程整理. 官方API文档:nodeJS文件系统API 其他整理:nodejs File System 文件系统操作函数分类 1.引用: 导入文件系统模块(fs)语句:var fs ...