代码改变世界

SQL Server AlwaysOn 故障转移

2014-10-27 10:33  杰克小薛  阅读(1402)  评论(0编辑  收藏  举报
目的:
  a) AlwaysOn 可用性组功能是一个提供替代数据库镜像的企业级方案的高可用性和灾难恢复解决方案。
  b) 当数据库服务器SQL1出现故障宕机时,可以通过AlwaysOn可用性组,自动故障转移到数据库服务器SQL2。
 
=============== 具体步骤 ===============
 
1. 服务管理器添加Hype-V角色,并且新建3台虚拟机:
  a) AlwaysOn-SCSI : iSCSI目标服务器(用于创建仲裁磁盘和共享磁盘)
  b) AlwaysOn-SQL1 : 数据库服务器
  c) AlwaysOn-SQL2 : 数据库服务器
 
 
2. AlwaysOn-SCSI配置iSCSI虚拟磁盘(10G仲裁磁盘 + 80G数据磁盘)
 
 
 
3. AlwaysOn-SQL1/2 安装 SQLServer2012,配置故障转移:
  a) 创建集群 
  b) 添加服务器AlwaysOn-SQL1 + AlwaysOn-SQL2
 
 
 
 
4. AlwaysOn-SQL1/2 启用 AlwaysOn 可用性组
  a) SQL Server 配置管理器 -> SQL Server (MSSQLSERVER) -> 属性 -> AlwaysOn 高可用性
  b) Windows故障转移集群名称 + 勾选 启用 AlwaysOn 可用性组
 
 
5. AlwaysOn-SQL1/2 配置 SQLServer 高可用性:
  a) AlwaysOn 高可用性 -> 新建可用性向导
  b) 添加高可用的目标数据库 + 配置同步数据的共享文件夹
  c) 选择 故障转移模式 -> 自动
 
 
6. 测试:
  a) 手动 故障转移测试
  b) 关机 故障转移测试
  c) 断电 故障转移测试
 
 
7. 小结:
  a) 物理服务器添加Hype-V -> 创建3台VM虚拟主机(1台iSCSI,2台SQL)
  b) iSCSI配置虚拟磁盘(2台SQL -> iSCSI发起程序)
  c) Windows集群配置 -> 添加SQL1/SQL2节点 + 仲裁配置 + 客户端访问点
  d) SQL Server高可用性配置 -> 选择目标数据库 + 指定SQL1/SQL2主副本节点 + 选择故障转移模式:自动 + 配置数据同步的共享文件夹
  c) 测试
  
8. 读写分离:(未能成功...)
 1 use master
 2 
 3 ALTER AVAILABILITY GROUP [AlwaysOnGroup] MODIFY REPLICA ON N'NODE-SQL1' 
 4 WITH (SECONDARY_ROLE (READ_ONLY_ROUTING_URL = N'tcp://Node-SQL1.luyuan.cn:5022'))
 5 
 6 ALTER AVAILABILITY GROUP [AlwaysOnGroup] MODIFY REPLICA ON N'NODE-SQL2'
 7 WITH (SECONDARY_ROLE (READ_ONLY_ROUTING_URL = N'tcp://Node-SQL2.luyuan.cn:5022'))
 8 
 9 
10 ALTER AVAILABILITY GROUP [AlwaysOnGroup] MODIFY REPLICA ON N'NODE-SQL2' 
11 WITH (PRIMARY_ROLE (READ_ONLY_ROUTING_LIST=('NODE-SQL1')));
12 
13 ALTER AVAILABILITY GROUP [AlwaysOnGroup] MODIFY REPLICA ON N'NODE-SQL1' 
14 WITH (PRIMARY_ROLE (READ_ONLY_ROUTING_LIST=('NODE-SQL2')));
 

连接参数:Server=tcp:AGListener,1433;Database=AdventureWorks;IntegratedSecurity=SSPI;ApplicationIntent=ReadOnly

参考文章:

http://www.cnblogs.com/aarond/p/3679915.html

https://msdn.microsoft.com/en-us/library/hh213417(v=sql.110).aspx