第一篇http://www.cnblogs.com/lyhabc/p/4678330.html
第二篇http://www.cnblogs.com/lyhabc/p/4682028.html
第三篇
http://www.cnblogs.com/lyhabc/p/4682986.html
这一篇是从0开始搭建SQL Server AlwaysOn 的第三篇,这一篇才真正开始搭建AlwaysOn,前两篇是为搭建AlwaysOn 做准备的
步骤
这一篇依然使用step by step的方式介绍怎麽搭建AlwaysOn
请先使用本地用户Administrator登录这两个集群节点并执行下面的操作,先不要用域用户DCADMIN登录
1、两个集群节点都需先安装.NET Framework 3.5(在Windows Server 2012 R2中使用添加功能来安装)。
2、各个集群节点本地都要准备好相关软件,在各个节点上独立安装SQL Server 2012(不能使用群集方式安装),保证各个节点中使用相同的安装目录结构和排序规则!
选择全新SQL Server独立安装,不要选择新的SQL Server故障转移集群安装
至于安装过程,默认下一步下一步就可以了,跟单机安装SQL Server没有区别,这里就忽略安装过程了
注意:因为本人的安装包已经自带SP1补丁包,为了后续避免踩坑,如果没有安装SP1或以上补丁包的,请先安装
注意:如果一开始使用域用户DCADMIN来登录集群节点机器,并安装SQL Server的时候会遇到一个坑,SQL Server安装程序会连接故障转移集群,但是实际上单机安装SQL Server根本不需要连接故障转移集群
本人排查了很久都找不到原因,为什么SQL Server安装程序会连接故障转移集群,下面是SQL Server安装日志
如果一开始就使用集群节点本地用户Administrator登录来安装SQL Server就不会踩到这个坑
3、注销集群节点计算机,然后使用域用户DCADMIN登录,然后设置SQL Server的启动账户为域用户DCADMIN
打开服务管理器,先修改SQL代理的启动账户为域用户DCADMIN,然后再修改SQL 引擎的启动账户为域用户DCADMIN
点击“位置”,修改查找位置,选中abc.com
点击“高级”
点击“立即查找”,选中DCADMIN
点击“确定”
输入域用户DCADMIN的密码
重启一下SQL代理服务
重启之后可以看到登录用户为DCADMIN@abc.com
同样,SQL引擎服务也需要同样的设置
这样,SQL引擎服务和SQL代理服务都用域用户DCADMIN启动
另一个集群节点的SQL Server也需要做同样的操作
注意:在集群节点脱离域之后,SQL引擎服务和SQL代理服务都要用本地服务帐号来启动,不能再用域用户来启动
4、将DCADMIN域用户加入到两个集群节点的SQL Server登录用户中,服务器角色选择sysadmin
先用sa登录SQL Server
添加登录用户,跟SQL 服务添加启动账户的步骤一样,将DCADMIN域用户添加为登录用户
给予sysadmin权限
两个集群节点都可以用DCADMIN域用户来登录SQL Server
5、回到SQL Server配置管理器,启用AlwaysOn可用性组
注意:集群节点一定要能进行通信,如果集群节点之间断开通信,那么启用AlwaysOn的时候会报错
重启SQL Server
如果AlwaysOn启用成功,在服务器属性里可以看到启用HADR为True
6、在其中一个集群节点的SQL Server中验证各节点的投票数 ,在其中一个集群节点的SQL Server上执行使用下面SQL语句
SELECT * FROM sys.dm_hadr_cluster_members;
SELECT * FROM SYS.[dm_hadr_cluster]
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 = 5GO--注意一定要用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 = 5GO
自行初始化数据库的好处是:如果我们的辅助副本是跨机房的我们都可以控制初始化的时间,也就是备份和还原的时间,不需要SQL Server来帮我们备份还原数据库
在WIN-5PMSDHUI0KQ上还原日志备份之后的样子
9、在“Alwayson高可用性”节点上右键选择“新建可用性组向导
注意:加入到AlwaysOn可用性组的数据库必须符合下面要求
(1)数据库的恢复模式必须是“完整”恢复模式
(2)数据库已进行了一次完整备份
(3)需要是用户库,系统库不能加入可用性组
(4)数据库可以读写,只读库不能加入到可用性组
(5)数据库处于多用户模式
(6)数据库没有使用AUTO_CLOSE
(7)不属于任何其他的可用性组
(8)数据库没有配置数据库镜像
一个可用性组最大支持100个数据库
10、点击“下一步”,输入一个从未使用过的高可用性组名称 testAG
11、点击下一步,选择要添加的数据库
12、点击“下一步”,使用添加副本来将其他节点添加到可用性组中,并选择自动故障转移节点和同步提交节点,因为我们只有两个节点
我们将辅助副本设置为可读,能够自动故障转移,同步提交模式
13、点击“端点”tab页面设置端点
注意:端点URL使用ip的方式,不要用FQDN长名的方式,因为服务器通常会有两个网卡,一个public网卡,一个private网卡,端点建议使用private网卡地址
这样在端点直接传送的数据就会经由private网卡来传送,使用TCP://test.abc.com:5022 这种FQDN长名的方式是不能保证端点数据通过private网卡来传送
SQL Server服务账户使用域用户DCADMIN来进行身份验证,
新闻热点
疑难解答