部署SQL2012 AlwaysOn可用性组<一>
一、准备环境
1、准备3台计算机
操作系统均为windows server 2008 R2
数据库:test
域控制器,IP:192.168.2.218/24
主节点w65,IP:192.168.2.65/24
辅助节点w67:IP:192.168.2.67/24
测试关闭相关防火墙,安装相关组件如:framew 3.5 sp1,同时windows server 2008 R2安装SQL 2012 需要安装组件“Windows Server 2008 R2 Service Pack 1补丁包”
2、准备域环境
AD02为域sz1card1.com的域控制器,机器都加入相应的域环境
w65、w67服务器上均安装了SQL Server 2012数据库引擎。安装操作指引请参照http://daisywei.blog.51cto.com/7837970/1878988
二、部署高可用性组AlwaysOn
1、在w65服务器上安装群集组件(w67服务器也类似操作)。
1)打开服务器管理器,选择“功能”,在右边窗口中点击“添加功能”,勾选“故障转移群集”,点击“下一步”。
2)完成并关闭“故障转移群集”的安装
注:W67也必须安装部署“故障转移群集”服务
3)配置故障转移群集管理器(WSFC),在“故障转移群集管理器”窗口点击“创建一个群集”打开“创建群集向导”
4)添加w65/w67服务器节点为群集节点服务器。点击“下一步”。
5)在“验证警告”页面中,如果需要对基本环境(包括硬件)进行WSFC需求验证,可以选择“是”。在本示例中由于不必需进行验证,所以选择“否”。点击“下一步”。
6)定义“用于管理群集的访问点”,为群集命名为SQLCluter,并指定群集IP地址192.168.2.70。点击“下一步”。
7)确认之前配置信息,若无误,点击“下一步”,开始群集创建,并完成。
8)在“故障转移群集管理器”会显示成功创建的群集,展开其“节点”,显示现有节点情况
注:由于只有主和辅就需要仲裁配置,如果是奇数节点3台以上,建议配置仲裁故障转移!
9)配置SQL Server 2012数据库启用AlwaysOn可用组。在“开始”菜单中点击“所有程序”-“Microsoft SQL Server 2012”-“配置工具”,打开“SQL Server配置管理器”,在右边窗口中右击“SQL Server (MSSQLSERVER)”,在上下文菜单中选择“属性”。修改登录用户为域用户sz1card1.com\administrator(12345678)需要重启服务,选择“AlwaysOn 高可用性”选项卡中勾选“启用AlwaysOn 可用性组”。点击“确认”,需要重启服务。注:W67也同样操作
10)为AlwaysOn高可用性组创建配置数据库test库,并且必须是“完整”恢复模式。
11)主服务器w65数据库test库已进行了一次完整备份,并且创建一个共享路径目录(BackUp),并允许所有节点服务器(SQL Server数据库引擎服务登录账户)能够通过UNC路劲进行可读写访问。
12)创建高可用性组,在“开始”菜单中点击“所有程序”-“Microsoft SQL Server 2012”-“配置工具”,打开“SQL Server Management Studio”,展开“AlwaysOn高可用性”节点,右击“可用性组”,在上下文菜单中,选择“新建可用性组向导”。
13)指定高可用性组名称为AGSQL01
14)选择满足条件的数据库,点击“下一步”。
15)为高可用性组添加其它SQL Server服务器节点为副本。点击“添加副本”按钮,一次添加所需SQL Server服务器,并且指定初始角色为“主”或“辅助”。最多可选2个副本实现自动故障转移,这两个副本将同时使用同步提交可用性模式。最多可支持3个 副本进行同步提交可用性模式,若使用异步提交必须强制手动故障转移。对于可读辅助副本设置来讲,可选择其为是否可读或仅读意向,需要注意只有主数据库副本才可写,要支持辅助也可读要选择"是"。
详细请参考:http://msdn.microsoft.com/zh-cn/library/ff877931.aspx
16)点击“端点”选项卡,可以设置高可用性组的端点URL。使用默认设置即可。
详细请参考:http://msdn.microsoft.com/zh-cn/library/ff878441.aspx
17)在“备份首选项”中,指定作为备份副本的节点。默认是在“首选辅助副本”中进行备份。可以通过副本备份优先级来指定首选。默认所有节点均为50。
18)转到“侦听器”选项卡。暂时不创建侦听器。
19)初始化数据同步首选项,建议选择“完整”,并指定之前创建的UNC共享路径(BackUp)。点击“下一步”
20)验证是否满足高可用性组创建需求,如果结果全为绿色对勾,点击“下一步”。
21)等待向导完成创建SQL Server 2012高可用性组,并完成
注:有如下告警,说明高可用性组成功创建,但WSFC的“多数节点”仲裁模式不是被推荐的
22)创建成功后,在“可用性组”节点下显示“AGSQL01”的面板,可查看状态。
2、可对AlwaysOn高可用性组的基本管理
1)直接右击需要管理的高可用性组AGSQL01,在上下文菜单中可以选择为其“添加新数据库”、“添加副本”、“添加侦听器”及手动执行“故障转移”等操作。点击“属性”,也可以编辑SQLCluter的各种属性值。
2)在高可用性组的属性“常规”选项卡中,可以为其添加/删除数据库、副本节点,并配置各可用性副本节点的参数设定值。
3)在“备份首选项”选项卡中,可以修改相应副本节点的备份优先级和备份执行的位置。
注:由于上述没有创建侦听器,对侦听器操作暂时不做介绍。同时实际环境中建议不是奇数高可用组,并且创建侦听器实现故障自动转移。
3、插入数据同步验证
1)在主库w65test数据库对表username插入一条记录,查看辅助库是否正常得到数据
INSERT INTO username VALUES(1,'TOM')
2)在辅助W67数据库test库对表username插入记录或删除记录测试
INSERT INTO username VALUES(2,'JOIN')
或
DELETE username WHERE ID=1
三、故障转移测试
1、在线手动故障切换
1)w65服务器--AlwaysOn高可用性-->可用性组-->AGSQL01右键--故障转移,进入向导
2)选择可用的新主副本,由于这里只有1台副本w67,默认勾选即可
3)指定副本的连接,w67服务器,账号默认会是实例启动账号(sz1card1\administrator)
4)完成,并等待切换(秒级大概在3s)
5)查看w67服务器SQL,AlwaysOn高可用性-->可用性组-->AGSQL01,已经从之前辅助变为主要,而w65变为辅助副本
6)验证,这时向w67服务器test数据库,插入记录,w65查看同步情况;并向w65服务器test数据库尝试插入或删除记录(正常应该是只读)
INSERT INTO username VALUES(2,'JOIN')
或
INSERT INTO username VALUES(65,'Jack')
2、离线故障切换(模拟这时主副本w67故障,中断SQL服务或关闭w67服务器/断网)
1)停止w67 SQL服务
2)这时刚才w65服务器test库状态为变成“未同步”,并且AGSQL01组状态为“正在解析”(表示在尝试连接主副本)
3)准备手动切换主副本至w65,AlwaysOn高可用性-->可用性组-->AGSQL01右键--故障转移,进入向导,选择默认主副本为w65
4)完成,并等待切换
5)查看w65AlwaysOn高可用性,从辅助变为主要,数据库test变为已同步,但是查看AGSQL01组状态面板,可以看到w67还是离线的不可用的
6)验证,w65服务器test库是否可正常插入测试数据
INSERT INTO username VALUES(65,'Jack')
7)恢复w67服务器,并观察AGSQL01组显示面板状态。w67会自动变为辅助服务器,test库数据自动同步,w65AGSQL01组状态显示面板主/辅副本自动恢复正常