资源描述
Microsoft SQL Server AlwaysOn
高可用性解决方案编 制 人:***
审 批:****
编 号:Q/DF-XX.2.01-
当前版本:V1.0
发布日期:7月8日
反馈对象: 市场中心 销售中心 融资中心 人资中心 财务中心 研发中心
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应用遭受黑客袭击,产品数据将会晤临巨大威胁,甚至有也许被永久性物理删除。前不久,就有报道携程数据遭受有预谋内部袭击被物理删除()。如果分开布置,那么虽然Web应用遭受袭击,只要产品数据在,咱们依然可以在短时间内布置新Web应用。
3. SQL Server 高可用技术简介
1) 故障转移群集(Failover Cluster)
共享存储,效率高,但某一种时间点只有一种节点处在活动状态,导致硬件资源挥霍。
2) 数据库镜像(Database Mirror)
提供几乎是瞬时故障转移,以提高数据库可用性。但其最大弊端在于镜像数据库处在不可读状态,同样导致硬件资源挥霍。
3) 日记传送(Log Shipping)
还原作业之间间隔时间内只读访问权限,可用做报表查询。普通用于远程异步容灾,存在某些数据丢失也许性。
4) 复制(Replication)
基于数据库对象级别,灵活性较高,但弊端在于,它不支持DDL命令,不便维护。
5) AlwaysOn
AlwaysOn是SQL Server 中提供一种全新高可用性技术,其集中了上述4种高可用性技术长处,以保证公司无需增长成本和提高复杂度,即可实现最高档别可用性和数据保护。可在数据中心内部以及跨数据中心实现数据冗余,迅速地实现应用程序故障转移,保护既有硬件资源,同步简化了其配备过程。AlwaysOn可以实现服务器实例级和数据库级配备高可用性,所相应技术就是AlwaysOn故障转移群集实例和AlwaysOn可用性组。
下图1展示了使用Alwayson可用性组 HA 和 DR 解决方案
图1
4. AlwaysOn高可用性技术简介
1) AlwaysOn 故障转移群集实例
普通来说,在单服务器状况下,当服务器上浮现硬件或软件故障时,连接到该服务器应用程序或客户端将会停机。在AlwaysOn故障转移群集实例环境中,SQL Server 实例高可用性受到冗余节点保护。 在群集环境中,一次只能有一种节点拥有群集资源组。 在浮现故障(硬件故障、操作系统故障、应用程序或服务故障)或进行筹划升级时,该资源组所有权就会转移至另一种群集节点。 此过程对于连接到 SQL Server 客户端或应用程序是透明,可以最大限度地缩短浮现故障时应用程序或客户端停机时间。因而AlwaysOn故障转移群集实例必要由一组物理服务器节点构成,这些服务器节点推荐使用类似硬件配备以及相似软件配备,如操作系统版本、SQL Server 版本、修补程序级别、组件以及实例名称。 相似配备是保证群集在节点间进行故障转移时可以正常运营前提条件。
SQL Server 在原有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 中容许群集服务使用专用连接来轮询活动 SQL Server 实例,以便通过系统存储过程获取详细组件诊断信息。好处是,运用与 SQL Server 实例专用连接,可以对组件诊断信息进行可靠轮询,虽然在故障转移群集实例负荷较重时也是如此。运用详细组件诊断信息,可以配备更灵活故障转移方略,由此顾客能选取哪些故障条件将触发故障转移以及哪些故障条件将不触发故障转移。顾客运用产生诊断信息,还可以通过追溯方式更好地对自动故障转移进行故障排除。此诊断信息将存储到与 SQL Server 错误日记并置日记文献中。 可以将这些日记文献加载到日记文献查看器中以检查导致浮现故障转移组件状态,从而拟定导致该故障转移因素。
2) AlwaysOn可用性组
AlwaysOn可用性组是SQL Server 中提供全新功能,保证了应用程序数据可用性,实现零数据丢失。AlwaysOn可用性组技术融合了数据库群集和数据库镜像长处,此技术一大好处是提供非共享存储,可以避免由于存储单点故障而导致整个可用性方案失效。
AlwaysOn可用性组基于数据库(组)级别,是将一组顾客数据库(可以是一种或各种)划到一种组中。每组可用性数据库都由一种可用性副本承载。可用性副本涉及一种主副本和一到四个辅助副本(最多支持8个)。 主副本用于承载主数据库,辅助副本则承载一组辅助数据库并作为可用性组潜在故障转移目的。主副本使主数据库可用于客户端读写连接,实现对数据库更改操作。 同步在数据库级别进行同步。 主副本将每个主数据库事务日记记录发送到每个辅助数据库。 每个辅助副本缓存事务日记记录,然后将它们还原到相应辅助数据库。 主数据库与每个连接辅助数据库独立进行数据同步。 因而,一种辅助数据库可以挂起或失败而不会影响其她辅助数据库,一种主数据库可以挂起或失败而不会影响其她主数据库。
此外,顾客可以借助辅助数据库来实现近实时报表查询,将查询负载分担到只读副本。相对于数据库群集及镜像来说,可以更好运用硬件资源,从而提高IT效率并减少成本。
下面看一下AlwaysOn可用性组架构,如下图3所示:
图3
布置 AlwaysOn 可用性组需要一种 Windows Server 故障转移群集 (WSFC) 群集。 给定可用性组每个可用性副本必要位于相似 WSFC 群集不同节点上。 布置AlwaysOn可用性组时,系统会为每个可用性组创立一种 WSFC 资源组。WSFC 群集将监视此资源组,判断节点间状态,以便评估主副本运营状况。 当发生失败时实现故障转移,针对 AlwaysOn 可用性组仲裁基于 WSFC 群集中所有节点,而与某一给定群集节点与否承载任何可用性副本无关。
顾客可以通过创立一种可用性组侦听器来提供到给定可用性组主副本客户端连接。“可用性组侦听器”采用DNS名称方式连接给定可用性组资源,以便将客户端连接定向到相应可用性副本。
对于每个可用性副本,AlwaysOn所支持事务提交模式分为同步提交模式或异步提交模式。在异步提交模式下,主副本无需等待确认异步提交辅助副本已强制写入日记,便可提交事务。 异步提交模式可最大限度地减少辅助数据库上事务滞后时间,但容许它们滞后于主数据库,因而也许会导致某些数据丢失。此可用性模式是一种劫难恢复解决方案,适合于可用性副本分布距离较远状况。所谓同步提交模式是指在提交事务之前,同步提交主副本要等待同步提交辅助副本确认它已完毕强制写入日记。 同步提交模式可保证在给定辅助数据库与主数据库同步时,充分保护已提交事务。 这种保护代价是延长事务滞后时间。此可用性模式相对于性能而言更强调高可用性和数据保护,当主副本和辅助副本距离较近时可以使用此办法,解决时时同步问题。
正由于AlwaysOn可用性组集既有高可用性技术长处在一身,不得不说,它是SQL Server 新特性中最为璀璨一种。
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 R2 Standard
2) 虚拟机配备
数据库服务器基本配备:4个逻辑cpu,1G内存,100G硬盘(C:70G;D:30G)
HostName
IP配备
OS版本
SQL版本
功能简介
AD Server
IP:192.168.1.110
Windows Server R2 Standard
NULL
域控制器
Server01
IP:192.168.1.111
Windows Server R2 Standard
SQL Server R2公司版
群集节点01
Server02
IP:192.168.1.112
Windows Server R2 Standard
SQL Server R2公司版
群集节点02
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服务,并配备域名为。
b) 配备本机IP为192.168.1.110。
c) 建立域账户sql @,账户属性设立为密码永但是期
第二步:配备三个数据库服务器Server01,Server02
a) 设立IP Server01(192.168.1.111),Server02(192.168.1.112)
b) 关闭防火墙
c) 加入域
d) 在仪表板功能中添加.Net 3.5和故障转移群集
第三步:创立新群集Cluster01
a) 在数据库服务器Server01上创立新群集Cluster01。
b) 将server01、server02添加到该群集中。
c) Cluster01群集IP配备为192.168.1.120。
d) 测实验证通过后,域中自动生成Cluster01$域账户。
e) 在AD Server上创立仲裁共享文献夹ClusterShare ,并共享给Cluster01$域账户,设定其读写权限。
第四步:Server01,Server02安装SQL server R2
a) 分别安装SQL server R2
b) 网络配备服务中SQL Server 数据库服务启用AlwaysOn高可用性组。
c) SQL Server 数据库服务及SQLServer代理登录设立为域账户
第五步:仲裁配备
为配备简朴且在资源有限状况下,该测试环境中AlwaysOn群集仲裁配备为多数节点和文献共享模式。
配备过程见如下截图:
a) 更多操作配备群集仲裁
图5
b) 进入配备群集仲裁向导界面
图6
c) 选取多数节点和文献夹共享仲裁模式
图7
第六步:创立测试数据库
a) 在Server01数据库实例上创立测试数据库testDB1和testDB2
b) testDB1和testDB2做好完整备份
c) 在Server01 D盘创立共享文献夹 AlwaysOnShare(Alwayson添加可用性数据库时用到该共享目录),并设立域账户sql @对该共享目录可读写权限。
第七步:创立测试可用性组
a) 在Server1上创立可用性组AlwaysOn01
b) AlwaysOn01选取可用性组数据库testDB1和testDB2
c) 选取可用性副本 Sever02,并设立Sever02为同步提交模式副本(实现故障自动转移)。
d) AlwaysOn1可用性组添加监听Listener01,并设立为静态IP(192.168.1.130)
e) 可查看到Server1上testDB1和testDB2标记为已同步。
第八步:验证
a) 验证故障自动转移功能
l 关闭Server01服务器。数据库客户端连接Server02,可查看到Server02此时已切换为主副本,Server02上testDB1和testDB2也已切换为主数据库。
l 再启动Server01,并在Server02可用性组中加入Server01后,可查看到Server01此时又作为辅助副本。
l 关闭Server02,此时又查看到Server01变为主副本。
b) 验证监听Listen01实时监听及AlwaysOn01可用性组同步功能
l Server01客户端连接Liseten01服务,可访问到数据库testDB1和testDB2。
l 在TestDB1数据库中Create 新表 testTabel1,在testDB2 Create 新表 testTabel2。
l 连接Server02数据库实例,发现Server02TestDB1上可查看到testTabel1,testDB2可查看到testTabel2。
c) 验证辅助副本只读访问。
l 查看AlwaysOn01属性,此时 Server01为主副本,Server02为辅助副本。
l 数据库管理工具连接Server02。
l 在Server02上执行写操作将失败,执行查询操作成功。
6. Alwayson问题总结
1) Alwayson 与否依赖于域环境?
答:是,alwayson依赖于故障转移群集(只有在故障转移群集中SQL Server 才干启动高可行性组功能),而故障转移群集依赖于域环境.
2) 为了启用高可用性组功能,SQL Server服务与否必要使用域账户运营?
答:否,在使用非域账户运营SQL Server服务上依然可构建高可用性组,服务运营账户决定SQL Server中管理员操作权限,如果运营域账户有访问网络资源权限,那么SA账户也拥有访问该资源权限.
3) 当域控服务器失效时,高可用性组与否继续可用?
答:当域控服务器失效时,无法进行自动故障转移,无法使用机器名直接访问数据库,但仍可使用IP或高可用性组侦听器所拥有IP进行访问.
4) 域控服务器重启对高可用性组影响?
答:当域控服务器短暂重启时,对高可用性组影响较小,在域控服务器重新恢复后,无需对高可用性组进行任何配备修改。如域控服务器长期失效时,建议删除高可用性组。
5) 主域控服务器和辅助域控服务器区别?
答:主域控服务器是建立域时第一台域控服务器,而辅助域控服务器则是域创立后添加域控服务器,常用配备中会将辅助域控服务器DNS指向主域控服务器,主域控和辅助域控都各自独立存储域有关信息,域控之间使用广播方式来传递更新信息以达到信息复制目,多台域控服务器能提高域中账户验证速度,辅助域控可起到容错功能,主域控发生故障时,辅助域控能取代主域控提供服务。
6) 当域控服务器失效时,与否依然可以使用域账户登录服务器?
答:不一定,服务器有一定缓存机制,在账户第一次登录验证后,会保存该账户信息一段时间,在该时间段范畴内域控服务器失效时,顾客依然能登录服务器。(因而建议SQL服务运营域账户属性设立为密码永但是期)
7) 当域控服务器失效或域账户密码变更时,以域账户运营SQL Server服务与否会受到影响?
答:正在运营SQL Server 服务不会受到影响,但当SQL Server服务再次重启时,需要验证账户密码,此时会重启失败。
展开阅读全文