转载

从0开始搭建SQL Server AlwaysOn 第三篇(配置AlwaysOn)

从0开始搭建SQL Server AlwaysOn 第三篇(配置AlwaysOn)

这一篇是从0开始搭建SQL Server AlwaysOn 的第三篇,这一篇才真正开始搭建AlwaysOn,前两篇是为搭建AlwaysOn 做准备的

步骤

这一篇依然使用step by step的方式介绍怎麽搭建AlwaysOn

请先使用本地用户Administrator登录这两个集群节点并执行下面的操作,先不要用域用户DCADMIN登录

从0开始搭建SQL Server AlwaysOn 第三篇(配置AlwaysOn)

1、两个集群节点都需先安装.NET Framework 3.5(在Windows Server 2012 R2中使用添加功能来安装)。

从0开始搭建SQL Server AlwaysOn 第三篇(配置AlwaysOn)

从0开始搭建SQL Server AlwaysOn 第三篇(配置AlwaysOn)

从0开始搭建SQL Server AlwaysOn 第三篇(配置AlwaysOn)

2、各个集群节点本地都要准备好相关软件,在各个节点上独立安装SQL Server 2012(不能使用群集方式安装),保证各个节点中使用相同的安装目录结构和排序规则!

从0开始搭建SQL Server AlwaysOn 第三篇(配置AlwaysOn)

选择全新SQL Server独立安装,不要选择新的SQL Server故障转移集群安装

从0开始搭建SQL Server AlwaysOn 第三篇(配置AlwaysOn)

至于安装过程,默认下一步下一步就可以了,跟单机安装SQL Server没有区别,这里就忽略安装过程了

从0开始搭建SQL Server AlwaysOn 第三篇(配置AlwaysOn)

注意:因为本人的安装包已经 自带SP1补丁包 ,为了后续避免踩坑,如果没有安装SP1或以上补丁包的,请先安装

从0开始搭建SQL Server AlwaysOn 第三篇(配置AlwaysOn)

注意:如果一开始使用域用户DCADMIN来登录集群节点机器,并安装SQL Server的时候会遇到一个坑,SQL Server安装程序会连接故障转移集群,但是实际上单机安装SQL Server根本不需要连接故障转移集群

从0开始搭建SQL Server AlwaysOn 第三篇(配置AlwaysOn)

从0开始搭建SQL Server AlwaysOn 第三篇(配置AlwaysOn)

本人排查了很久都找不到原因,为什么SQL Server安装程序会连接故障转移集群,下面是SQL Server安装日志

从0开始搭建SQL Server AlwaysOn 第三篇(配置AlwaysOn)

从0开始搭建SQL Server AlwaysOn 第三篇(配置AlwaysOn)

如果一开始就使用集群节点本地用户Administrator登录来安装SQL Server就 不会踩到这个坑

3、注销集群节点计算机,然后使用域用户DCADMIN登录,然后设置SQL Server的启动账户为域用户DCADMIN

从0开始搭建SQL Server AlwaysOn 第三篇(配置AlwaysOn)

打开服务管理器,先修改SQL代理的启动账户为域用户DCADMIN,然后再修改SQL 引擎的启动账户为域用户DCADMIN

从0开始搭建SQL Server AlwaysOn 第三篇(配置AlwaysOn)

点击“位置”,修改查找位置,选中abc.com

从0开始搭建SQL Server AlwaysOn 第三篇(配置AlwaysOn)

点击“高级”

从0开始搭建SQL Server AlwaysOn 第三篇(配置AlwaysOn)

点击“立即查找”,选中DCADMIN

从0开始搭建SQL Server AlwaysOn 第三篇(配置AlwaysOn)

从0开始搭建SQL Server AlwaysOn 第三篇(配置AlwaysOn)

点击“确定”

输入域用户DCADMIN的密码

从0开始搭建SQL Server AlwaysOn 第三篇(配置AlwaysOn)

重启一下SQL代理服务

从0开始搭建SQL Server AlwaysOn 第三篇(配置AlwaysOn)

重启之后可以看到登录用户为DCADMIN@abc.com

从0开始搭建SQL Server AlwaysOn 第三篇(配置AlwaysOn)

同样,SQL引擎服务也需要同样的设置

从0开始搭建SQL Server AlwaysOn 第三篇(配置AlwaysOn)

这样,SQL引擎服务和SQL代理服务都用域用户DCADMIN启动

另一个集群节点的SQL Server也需要做同样的操作

注意 :在集群节点脱离域之后,SQL引擎服务和SQL代理服务都要用本地服务帐号来启动,不能再用域用户来启动

4、将DCADMIN域用户加入到两个集群节点的SQL Server登录用户中,服务器角色选择sysadmin

先用sa登录SQL Server

从0开始搭建SQL Server AlwaysOn 第三篇(配置AlwaysOn)

添加登录用户,跟SQL 服务添加启动账户的步骤一样,将DCADMIN域用户添加为登录用户

从0开始搭建SQL Server AlwaysOn 第三篇(配置AlwaysOn)

从0开始搭建SQL Server AlwaysOn 第三篇(配置AlwaysOn)

从0开始搭建SQL Server AlwaysOn 第三篇(配置AlwaysOn)

给予sysadmin权限

从0开始搭建SQL Server AlwaysOn 第三篇(配置AlwaysOn)

两个集群节点都可以用DCADMIN域用户来登录SQL Server

从0开始搭建SQL Server AlwaysOn 第三篇(配置AlwaysOn)

从0开始搭建SQL Server AlwaysOn 第三篇(配置AlwaysOn)

5、回到SQL Server配置管理器,启用AlwaysOn可用性组

从0开始搭建SQL Server AlwaysOn 第三篇(配置AlwaysOn)

从0开始搭建SQL Server AlwaysOn 第三篇(配置AlwaysOn)

注意 :集群节点一定要能进行通信,如果集群节点之间断开通信,那么启用AlwaysOn的时候会报错

从0开始搭建SQL Server AlwaysOn 第三篇(配置AlwaysOn)

重启SQL Server

从0开始搭建SQL Server AlwaysOn 第三篇(配置AlwaysOn)

如果AlwaysOn启用成功,在服务器属性里可以看到启用HADR为True

从0开始搭建SQL Server AlwaysOn 第三篇(配置AlwaysOn)

从0开始搭建SQL Server AlwaysOn 第三篇(配置AlwaysOn)

6、在其中一个集群节点的SQL Server中验证各节点的投票数 ,在其中一个集群节点的SQL Server上执行使用下面SQL语句

SELECT * FROM  sys.dm_hadr_cluster_members;

从0开始搭建SQL Server AlwaysOn 第三篇(配置AlwaysOn)

7、再次确保各节点已经关闭防火墙

8、我们使用自行初始化数据库的方式,所以这一步需要新建一个测试库和测试表并插入一些测试数据(这些动作就不演示了),然后对数据库做一个完整备份 和 日志备份

然后把完整备份文件和日志备份文件搬到WIN-5PMSDHUI0KQ机器上依次进行还原,完整备份-》还原完整备份-》日志备份-》还原日志备份脚本

--在win-7107jjj2bcc上执行 CREATE DATABASE [test]  USE [test] CREATE TABLE [test1]([id] INT,[name] VARCHAR(100)) INSERT INTO [test1] SELECT 1,'test'
--在win-7107jjj2bcc上执行 DECLARE @CurrentTime VARCHAR(50), @FileName VARCHAR(200) SET @CurrentTime = REPLACE(REPLACE(REPLACE(CONVERT(VARCHAR, GETDATE(), 120 ),'-','_'),' ','_'),':','') --(test 数据库完整备份) SET @FileName = 'c:/DBBackup/test_FullBackup_' + @CurrentTime+'.bak' BACKUP DATABASE [test] TO DISK=@FileName WITH FORMAT ,COMPRESSION   --(test 数据库日志备份)  SET @FileName = 'c:/DBBackup/test_logBackup_' + @CurrentTime+'.bak' BACKUP log [test] TO DISK=@FileName WITH FORMAT ,COMPRESSION 
--在WIN-5PMSDHUI0KQ上执行  USE [master] RESTORE DATABASE [test] FROM  DISK = N'C:/DBBackup/test_FullBackup_2015_07_30_093949.bak' WITH  FILE = 1,  MOVE N'test' TO N'C:/Program Files/Microsoft SQL Server/MSSQL11.MSSQLSERVER/MSSQL/DATA/test.mdf',  MOVE N'test_log' TO N'C:/Program Files/Microsoft SQL Server/MSSQL11.MSSQLSERVER/MSSQL/DATA/test_log.ldf',  NOUNLOAD,NORECOVERY,  REPLACE,  STATS = 5  GO      --注意一定要用NORECOVERY来还原备份 USE [master] RESTORE DATABASE [test] FROM  DISK = N'C:/DBBackup/test_logBackup_2015_07_30_105949.bak' WITH  FILE = 1,  NOUNLOAD,NORECOVERY,  REPLACE,  STATS = 5  GO

自行初始化数据库的好处是:如果我们的辅助副本是跨机房的我们都可以控制初始化的时间,也就是备份和还原的时间,不需要SQL Server来帮我们备份还原数据库

在WIN-5PMSDHUI0KQ上还原日志备份之后的样子

从0开始搭建SQL Server AlwaysOn 第三篇(配置AlwaysOn)

9、在“Alwayson高可用性”节点上右键选择“新建可用性组向导

注意: 加入到AlwaysOn可用性组的数据库必须符合下面要求

(1)数据库的恢复模式必须是“完整”恢复模式

(2)数据库已进行了一次完整备份

(3)需要是用户库,系统库不能加入可用性组

(4)数据库可以读写,只读库不能加入到可用性组

(5)数据库处于多用户模式

(6)数据库没有使用AUTO_CLOSE

(7)不属于任何其他的可用性组

(8)数据库没有配置数据库镜像

一个可用性组最大支持100个数据库

从0开始搭建SQL Server AlwaysOn 第三篇(配置AlwaysOn)

从0开始搭建SQL Server AlwaysOn 第三篇(配置AlwaysOn)

10、点击“下一步”,输入一个从未使用过的高可用性组名称 testAG

从0开始搭建SQL Server AlwaysOn 第三篇(配置AlwaysOn)

11、点击下一步,选择要添加的数据库

从0开始搭建SQL Server AlwaysOn 第三篇(配置AlwaysOn)

12、点击“下一步”,使用添加副本来将其他节点添加到可用性组中,并选择自动故障转移节点和同步提交节点,因为我们只有两个节点

从0开始搭建SQL Server AlwaysOn 第三篇(配置AlwaysOn)

我们将辅助副本设置为可读,能够自动故障转移,同步提交模式

从0开始搭建SQL Server AlwaysOn 第三篇(配置AlwaysOn)

13、点击“端点”tab页面设置端点

从0开始搭建SQL Server AlwaysOn 第三篇(配置AlwaysOn)

从0开始搭建SQL Server AlwaysOn 第三篇(配置AlwaysOn)

注意: 端点URL使用IP的方式,不要用FQDN长名的方式,因为服务器通常会有两个网卡,一个public网卡,一个private网卡,端点建议使用private网卡地址

这样在端点直接传送的数据就会经由private网卡来传送,使用 TCP://test.abc.com:5022 这种FQDN长名的方式是不能保证端点数据通过private网卡来传送

SQL Server服务账户使用域用户DCADMIN来进行身份验证,避免使用证书的方式

14、“备份首选项”和“侦听器”不需要设置,保持默认就行,可用性侦听器我们后面再添加,可以直接点击“下一步”

从0开始搭建SQL Server AlwaysOn 第三篇(配置AlwaysOn)

点击“是”

15、选择初始数据同步,这里选择“仅联接”模式

从0开始搭建SQL Server AlwaysOn 第三篇(配置AlwaysOn)

16、点击“下一步”来验证配置,对应侦听器配置警告可以忽略,后期来添加侦听器

因为使用的是“仅联接”数据库初始化方式,验证跳过像可用磁盘空间这样的检查

从0开始搭建SQL Server AlwaysOn 第三篇(配置AlwaysOn)

17、点击“下一步”来检查并确认之前的配置信息,若无误,点击“完成”。另外,此处也可保存建立可用性组脚本,以便分步诊断故障之用。

从0开始搭建SQL Server AlwaysOn 第三篇(配置AlwaysOn)

18、所有摘要均成功完成,显示绿色对勾。如果出现黄色警告,则需进行进一步判断是否成功。若出现红色错误,表示AG创建不成功

从0开始搭建SQL Server AlwaysOn 第三篇(配置AlwaysOn)

从0开始搭建SQL Server AlwaysOn 第三篇(配置AlwaysOn)

注意: 如果大家使用奇数集群节点,并且仲裁配置使用的是节点多数,那么在创建可用性组完毕的时候,WSFC仲裁投票配置会显示警告

点击警告链接会弹出下面的对话框,这个警告其实可以不用理会

从0开始搭建SQL Server AlwaysOn 第三篇(配置AlwaysOn)

从0开始搭建SQL Server AlwaysOn 第三篇(配置AlwaysOn)

19、查看服务器和数据库的变化

主副本

数据库变为已同步

从0开始搭建SQL Server AlwaysOn 第三篇(配置AlwaysOn)

辅助副本

辅助副本这时候是可读的,在主副本上对 test1 表做的更改都能同步到辅助副本上的 test1

从0开始搭建SQL Server AlwaysOn 第三篇(配置AlwaysOn)

再看一下故障转移集群管理器

可用性组变为一个集群角色

从0开始搭建SQL Server AlwaysOn 第三篇(配置AlwaysOn)

从0开始搭建SQL Server AlwaysOn 第三篇(配置AlwaysOn)

点击显示面板可以显示可用性面板

从0开始搭建SQL Server AlwaysOn 第三篇(配置AlwaysOn)

从0开始搭建SQL Server AlwaysOn 第三篇(配置AlwaysOn)

从0开始搭建SQL Server AlwaysOn 第三篇(配置AlwaysOn)

20、在创建可用性组后,在“可用性组侦听器”上右键添加侦听器来创建侦听器,选择静态 IP 的网络模式(尽量不要选择 DHCP 网络模式),

输入一个从未使用过的名称(该名称将被用来创建网络名称资源)和访问端口

从0开始搭建SQL Server AlwaysOn 第三篇(配置AlwaysOn)

从0开始搭建SQL Server AlwaysOn 第三篇(配置AlwaysOn)

点击确定

从0开始搭建SQL Server AlwaysOn 第三篇(配置AlwaysOn)

创建成功

从0开始搭建SQL Server AlwaysOn 第三篇(配置AlwaysOn)

在域控的 DNS 管理器上会注册一条 A 记录

从0开始搭建SQL Server AlwaysOn 第三篇(配置AlwaysOn)

AD 里的 Computers 容器里会添加一个故障转移集群虚拟网络名称账户

从0开始搭建SQL Server AlwaysOn 第三篇(配置AlwaysOn)

在故障转移集群管理器里的角色节点,可以看到客户端访问名称和 IP 地址,客户端通过这个访问名称进行访问数据库

从0开始搭建SQL Server AlwaysOn 第三篇(配置AlwaysOn)

使用侦听器名称进行登录SQL Server

从0开始搭建SQL Server AlwaysOn 第三篇(配置AlwaysOn)

从0开始搭建SQL Server AlwaysOn 第三篇(配置AlwaysOn)

当然也可以用 listener IP 来连接 SQL Server

从0开始搭建SQL Server AlwaysOn 第三篇(配置AlwaysOn)

从0开始搭建SQL Server AlwaysOn 第三篇(配置AlwaysOn)

可用性组的基本管理

注意: 尽量用 SSMS UI TSQL 语句来操作可用性组,不要用故障转移集群管理器来操

故障转移

首先使用 侦听器名称来登录SQL Server ,查看当前是在主副本是在哪个机器

从0开始搭建SQL Server AlwaysOn 第三篇(配置AlwaysOn)

手动故障转移

选中 testAG 这个可用性组,右键 - 》故障转移

从0开始搭建SQL Server AlwaysOn 第三篇(配置AlwaysOn)

从0开始搭建SQL Server AlwaysOn 第三篇(配置AlwaysOn)

点击“下一步”

从0开始搭建SQL Server AlwaysOn 第三篇(配置AlwaysOn)

点击“下一步”

从0开始搭建SQL Server AlwaysOn 第三篇(配置AlwaysOn)

连接到 WIN-5PMSDHUIOKQ 这台辅助副本机器

从0开始搭建SQL Server AlwaysOn 第三篇(配置AlwaysOn)

从0开始搭建SQL Server AlwaysOn 第三篇(配置AlwaysOn)

点击“完成”

从0开始搭建SQL Server AlwaysOn 第三篇(配置AlwaysOn)

开始进行故障转移

从0开始搭建SQL Server AlwaysOn 第三篇(配置AlwaysOn)

从0开始搭建SQL Server AlwaysOn 第三篇(配置AlwaysOn)

再一次执行查询

从0开始搭建SQL Server AlwaysOn 第三篇(配置AlwaysOn)

已经故障转移到 WIN-5PMSDHUIOKQ 这台机

查看一下 testAG 可用性组的属性

从0开始搭建SQL Server AlwaysOn 第三篇(配置AlwaysOn)

从0开始搭建SQL Server AlwaysOn 第三篇(配置AlwaysOn)

执行下面 SQL 语句,将 WIN-7107JJJ2BCC 机器设置为可读副本

USE [master] GO ALTER AVAILABILITY GROUP [testAG] MODIFY REPLICA ON N'WIN-7107JJJ2BCC' WITH (SECONDARY_ROLE(ALLOW_CONNECTIONS = ALL)) GO

执行下面SQL语句测试一下

在当前主副本执行

insert into test1 select 3, 'test3'

从0开始搭建SQL Server AlwaysOn 第三篇(配置AlwaysOn)

可以看到数据已经同步过来 WIN-7107JJJ2BCC 机器,并且数据库可读

可读辅助副本是只读的,如果要对它进行数据更改则会报错

print 'servername: '+@@SERVERNAME    insert into [test].[dbo].[test1] select 4, 'test4'

从0开始搭建SQL Server AlwaysOn 第三篇(配置AlwaysOn)

总结

AlwaysOn搭建步骤就介绍到这里,希望大家跟着我来体验一下AlwaysOn的强大

同样的,添加一个辅助副本的操作: 加域、加入故障转移集群、更改仲裁配置、添加辅助副本

按照文章的来操作相信添加辅助副本也不难

还有一个就是遇到问题多看看SQL Server errorlog和WSFC的事件日志

从0开始搭建SQL Server AlwaysOn 第三篇(配置AlwaysOn)

从0开始搭建SQL Server AlwaysOn 第三篇(配置AlwaysOn)

对于更多信息可以参考《SQLSERVER2012实施与管理实战指南》书本

地址: http://product.dangdang.com/1419881008.html

如有不对的地方,欢迎大家拍砖o(∩_∩)o 

正文到此结束
Loading...