SQLServer2012AlwaysOn⾼可⽤性解决⽅案
Microsoft SQL Server 2012 AlwaysOn
⾼可⽤性解决⽅案
1.术语定义
1)⾼可⽤性:HA(High Availability)
通常来描述⼀个系统经过专门的设计,从⽽减少停⼯时间,⽽保持其服务的⾼度可⽤性
2)灾难恢复:DR(Disaster Recovery)
指⾃然或⼈为灾害后,重新启⽤信息系统的数据、硬件及软件设备,恢复正常商业运作的过程
3)故障转移集:WSFC(Windows Server Failover Cluster)
微软操作系统针对服务器提供的⼀种服务,该服务⽤于防⽌单台服务器故障导致服务失效。
2.公司数据库使⽤现状及问题瓶颈
其他部门对应⽤开发部负责的融资管理系统性能提出以下问题:
1)数据部:
a)服务器不稳定
b)数据库性能配置低
2)市场部:
a)查询效率太低
3)产品部:
a)报表、BI⽀撑难
这些性能问题⽆不涉及到后台数据库的性能及可靠性问题。
还有⼀个安全问题也值得重视。⽬前,公司产品数据库和融资管系统都部署在10.44.1.3⼀台服务器上。理论上,产品数据库不应与Web应⽤部署在同⼀台机器⽽暴露给⽤户,产品数据库最好只交由专职DBA 来管理。因为,万⼀Web应⽤遭受⿊客攻击,产品数据将会⾯临巨⼤威胁,甚⾄有可能被永久性物理删除。
前不久,就有报道携程数据遭受有预谋的内部攻击被物理删除
(www.doczj/doc/791ed28c14791711cc7917a3.html /20150528/n413987338.shtml)。如果分开部署,那么即使Web应⽤遭受攻击,只要产品数据在,我们仍然可以在短时间内部署新的Web应⽤。
3.SQL Server ⾼可⽤技术简介
1)故障转移集(Failover Cluster)
共享存储,效率⾼,但某⼀个时间点只有⼀个节点处于活动状态,造成硬件资源浪费。
2)数据库镜像(Database Mirror)
提供⼏乎是瞬时的故障转移,以提⾼数据库的可⽤性。但其最⼤弊端在于镜像数据库处于不可读状态,同样造成硬件资源浪费。
3)⽇志传送(Log Shipping)
还原作业之间的间隔时间内的只读访问权限,可⽤做报表查询。⼀般⽤于远程的异步容灾,存在部分数据丢失的可能性。
4)复制(Replication)
基于数据库对象级别,灵活性较⾼,但弊端在于,它不⽀持DDL命令,不便维护。
5)AlwaysOn
AlwaysOn是SQL Server 2012中提供的⼀种全新的⾼可⽤性技术,其集中了上述4种⾼可⽤性技术的优点,以确保企业⽆需增加成本和提⾼复杂度,即可实现最⾼级别的可⽤性和数据保护。可在数据中⼼内
部以及跨数据中⼼实现数据冗余,快速地实现应⽤程序故障转移,保护现有硬件资源,同时简化了其配置过程。AlwaysOn可以实现服务器实例级和数据库级配置⾼可⽤性,所对应的技术就是AlwaysOn故障转移集实例和AlwaysOn可⽤性组。
下图1展⽰了使⽤Alwayson可⽤性组的HA 和DR 解决⽅案
图1
4.AlwaysOn⾼可⽤性技术介绍
sqlserver2012数据库还原
1)AlwaysOn 故障转移集实例
⼀般来说,在单服务器情况下,当服务器上出现硬件或软件故障时,连接到该服务器的应⽤程序或客户端将会停机。在AlwaysOn故障转移集实例环境中,SQL Server 实例的⾼可⽤性受到冗余节点的保护。在集环境中,⼀次只能有⼀个节点拥有集的资源组。在出现故障(硬件故障、操作系统故障、应⽤程序或服务故障)或进⾏计划的升级时,该资源组的所有权就会转移⾄另⼀个集节点。此过程对于连接到SQL Server 的客户端或应⽤程序是透明的,可以最⼤限度地缩短出现故障时应⽤程序或客户端的停机时间。因此AlwaysOn故障转移集实例必须由⼀组物理服务器节点构成,这些服务器节点推荐使⽤类似的硬件配置以及相同的软件配置,如操作系统的版本、SQL Server 版本、修补程序级别、组件以及实例名称。相同的配置是确保集在节点间进⾏故障转移时能够正常运⾏的前提条件。
SQL Server 2012在原有SQL Server故障转移集的基础上功能得到了进⼀步的增强,⽀持跨越⼦⽹实现多站点集,此技术⼀般⽤于两个或两个以上的数据中⼼,以同时提供本地⾼可⽤性和远程的灾难恢复。其中,每个故障转移集节点都连接到其他⼦⽹或其他⼦⽹组。这些⼦⽹可以处于同⼀位置中,也可以位于地理上分散的站点。跨地理上分散的站点进⾏集有时⼜被称为扩展集。因为没有供所有节点都可以访问的共享存储,所以在多个⼦⽹上的数据存储之间应该复制数据。因此,多⼦⽹故障转移集除了具备⾼可⽤性之外,还提供了灾难恢
复解决⽅案。下⾯以图例说明:
图2
在上图中共有两个数据中⼼并且处于不同⼦⽹,本地数据中⼼subnet1使⽤的IP地址是10.168.0.10,当本地数据中⼼发⽣故障时,SQL Server服务会转移到远程数据中⼼,远程数据中⼼subnet2所使⽤的是不同IP地址,为192.168.0.10来继续提供数据库服务,这两个IP地址之间是OR的关系,也就是说这两个IP地址任意⼀个在线的话,虚拟⽹络名称SQLClus都可以正常的向客户端提供服务。
在此需要使⽤到存储级别的复制技术,将本地数据中⼼数据库中的数据⽂件及⽇志⽂件复制到远程数据中⼼,当本地数据中⼼发⽣故障时,Windows 集检测到故障,远程数据中⼼存储软件可以检测到复制失效,会将存储转换为读写状态,接下来Windows集会将远程站点可读写的存储设备挂接到远程的Cluster节点上,此时存储复制的⽅向就从远程数据中⼼向本地数据中⼼复制。也就是说,故障转移集实例成功启动后,Windows集服务将监视基础集的运⾏状况和SQL Server 实例的运⾏状况。SQL Server 2012中允许集服务使⽤专⽤连接来轮询活动SQL Server 实例,以便通过系统存储过程获取详细的组件诊断信息。好处是,利⽤与SQL Server 实例的专⽤连接,能够对组件诊断信息进⾏可靠轮询,即使在故障转移集实例负荷较重时也是如此。利⽤详细的组件诊断信息,可以配置更灵活的故障转移策略,由此⽤户能选择哪些故障条件将触发故障转移以及哪些故障条件将不触发故障转移。⽤户利⽤产⽣的诊断信息,还可以通过追溯⽅式更好地对⾃动故障转移进⾏故障排除。此诊断信息将存储到与SQL Server 错误⽇志并置的⽇志⽂件中。可以将这些⽇志⽂件加载到⽇志⽂件查看器中以检查导致出现故障转移的组件状态,从⽽确定导致该故障转移的原因。
2)AlwaysOn可⽤性组
AlwaysOn可⽤性组是SQL Server 2012中提供的全新功能,确保了应⽤程序数据的可⽤性,实现零数据丢失。AlwaysOn可⽤性组技术融合了数据库集和数据库镜像的优点,此技术的⼀⼤好处是提供⾮共享存储,可以避免因为存储的单点故障⽽造成的整个可⽤性⽅案失效。
AlwaysOn可⽤性组基于数据库(组)级别,是将⼀组⽤户数据库(可以是⼀个或多个)划到⼀个组中。每组可⽤性数据库都由⼀个可⽤性副本承载。可⽤性副本包括⼀个主副本和⼀到四个辅助副本(2014最多⽀持8个)。主副本⽤于承载主数据库,辅助副本则承载⼀组辅助数据库并作为可⽤性组的潜在故障转移⽬标。主副本使主数据库可⽤于客户端的读写连接,实现对数据库的更改操作。同时在数据库级别进⾏同步。主副本将每个主数据库的事务⽇志记录发送到每个辅助数据库。每个辅助副本缓存事务⽇志记录,然后将它们还原到相应的辅助数据库。主数据库与每个连接的辅助数据库独⽴进⾏数据同步。因此,⼀个辅助数据库可以挂起或失败⽽不会影响其他辅助数据库,⼀个主数据库可以挂起或失败⽽不会影响其他主数据库。
此外,⽤户可以借助辅助数据库来实现近实时的报表查询,将查询的负载分担到只读副本。相对于数据库集及镜像来说,可以更好的利⽤硬件资源,从⽽提⾼IT效率并降低成本。
下⾯看⼀下AlwaysOn可⽤性组架构,如下图3所⽰:
图3
部署AlwaysOn 可⽤性组需要⼀个Windows Server 故障转移集(WSFC) 集。给定可⽤性组的每个可⽤性副本必须位于相同WSFC 集的不同节点上。部署AlwaysOn可⽤性组时,系统会为每个可⽤性组创建⼀个WSFC 资源组。WSFC 集将监视此资源组,判断节点间的状态,以便评估主副本的运⾏状况。当发
⽣失败时实现故障的转移,针对AlwaysOn 可⽤性组的仲裁基于WSFC 集中的所有节点,⽽与某⼀给定集节点是否承载任何可⽤性副本⽆关。
⽤户可以通过创建⼀个可⽤性组侦听器来提供到给定可⽤性组的主副本的客户端连接。“可⽤性组侦听器”采⽤DNS名称的⽅式连接给定可⽤性组的资源,以便将客户端连接定向到相应的可⽤性副本。
对于每个可⽤性副本,AlwaysOn所⽀持的事务提交模式分为同步提交模式或异步提交模式。在异步提交模式下,主副本⽆需等待确认异步提交辅助副本已强制写⼊⽇志,便可提交事务。异步提交模式可最⼤限度地减少辅助数据库上的事务滞后时间,但允许它们滞后于主数据库,因此可能会导致某些数据丢失。此可⽤性模式是⼀种灾难恢复解决⽅案,适合于可⽤性副本的分布距离较远的情况。所谓同步提交模式是指在提交事务之前,同步提交主副本要等待同步提交辅助副本确认它已完成强制写⼊⽇志。同步提交模式可确保在给定的辅助数据库与主数据库同步时,充分保护已提交的事务。这种保护的代价是延
长事务滞后时间。此可⽤性模式相对于性能⽽⾔更强调⾼可⽤性和数据保护,当主副本和辅助副本距离较近时可以使⽤此⽅法,解决时时同步的问题。
正因为AlwaysOn可⽤性组集现有⾼可⽤性技术的优点于⼀⾝,不得不说,它是SQL Server 2012新特性中最为璀璨的⼀个。
5.东⽅融资⽹可实施的AlwaysOn测试部署⽅案
1)宿主机
宿主使⽤⼯作站(HYPR-V),其基本配置如下:
b)处理器:Intel(R) Core(TM) i5-4470 CPU @ 3.20GHz 3.20GHz
c)内存(RAM):8.00GB
d)Windows版本:Windows Server 2012 R2Standard
2)虚拟机配置
数据库服务器基本配置:4个逻辑cpu,1G内存,100G硬盘(C:70G;D:30G)
3)AlwaysOn可⽤性组安装配置架构图
如下图所⽰,⼀个windows集clustest01中包含三个节点(server01,server02)节点01和节点02组成SQL Server集,实现实例级别的⾃动故障转移和AlwaysOn可⽤性组,可⽤性组添加侦听IP[192.168.1.130],⽤于客户端的连接,以实现可⽤组切换⽽不⽤修改客户端连接配置。
图4
4)Windows集安装
将三个服务器都加⼊域环境中;并安装.Net 3.5和故障转移集功能后,开始创建新集。
第⼀步:配置主域控服务器AD Server
a)在仪表板服务器⾓⾊中添加Active Directory 服务器及DNS服务,并配置域名为
www.doczj/doc/791ed28c14791711cc7917a3.html 。
b)配置本机IP为192.168.1.110。
c)建⽴域账户sql @www.doczj/doc/791ed28c14791711cc7917a3.html ,账户属性设置为密码永不过期
第⼆步:配置三个数据库服务器Server01,Server02
a)设置IP Server01(192.168.1.111),Server02(192.168.1.112)
b)关闭防⽕墙
c)加⼊域www.doczj/doc/791ed28c14791711cc7917a3.html
d)在仪表板功能中添加.Net 3.5和故障转移集
第三步:创建新集Cluster01