SQL Server 2012 AlwaysOn 亲身实历记
亲身经历的一个项目,老板忽然提出,对数据库的负债要实施分流,来个数据库一个负责读,而另一个负责写,后台是需要同步两个数据库的状态。找了很多的资料,发现新版的alwayson可以实现这个功能。
研读了alwayson 的大量资料,发现他的功能增加了不少,不但不再依靠原来的share disk的架构,而且增加了更大的灵活性,据说要取代log shipping 和Mirror database。不是帮助微软吹嘘,真的进步不少,但还是一个库是只读的,一个为可以读写。
一下是实施的具体步骤,和在实施中说遇到的问题及解决办法:
一 实施的架构
我们采用了三台服务器,其中两台是SQL Server,另外一台是文件服务器(用来投票)。架构如下:

微软有写过白皮书,他所介绍的建构是四台机器,其中一台在不同的站点中,我们公司没有那么有钱,我们只是采用了2台机器的架构。
具体的微软的文档可以参照我之后的文档列表。
二 准备步骤
考虑需要用什么样的投票架构。在这之前,微软使用的架构是share disk的高冗余建构,因为要使用共享的存储,很多条件下难以实施,才采用了现在的几种该机的方法,新增加的有三种,共四种,如下,是微软的原话,不多解释,有兴趣的可以顺着我后面的链接,研究。

但总的一条原则是: 总的服务器数量最好是奇数。
我们采用了3台服务器的工作方式(其中一台为文件服务器)
三 详细步骤如下
1. 在所有的三台Windows server 2012 服务器上安装Windows Failover Cluster Server. 并且运行Windows failover Cluster 向导新建一个Windows Cluster.不一定要有共享的存储。我采用的仲裁方式为:偶数站点+文件共享 的方式建立仲裁机制。用的另外一台文件服务器做的quorum. 仲裁方式的选定需要注意的是: 所有的Node(包括文件服务器)的总数最好为奇数(Odd).
详细的配置如下:

2.建立好Windows Failover Cluster 后,再在每个server 上安装SQL Server.在SQL Server Engine中的Avaiable Group 标签中,输入刚刚建立好的Windows Failover Cluster 名称。开启Avaiable Group 功能。

3. 根据Avaliable Group 的向导建立新的AG组。比较重要的步骤是建立AG的侦听器。其中要注意的地方是:刚刚建立的WFCS的名称中的侦听(wfsc 的侦听)对所在的域控制的OU具有特殊的权限--'Create object' , ' Read all priority' 。其目的是,需要通过WFCS的名称来建立具体Role 的侦听器(侦听器有自己的名称和所对应的IP地址),WFCS 通过自己的域账号(类似于服务器名称)建立自己Role中的侦听器(AG也属于WFCS中的一个具体的应用。

如果顺利AG就算是建立好了。没有什么特别的东西。根据微软的白皮书,一步步的往下走就可以了。
但是,微软毕竟是微软。在部署的过程中,遇到了很多的问题,很多在白皮书中没有设计,好在都解决了。现在细数一下,这些微软给我们挖了的这些坑。坑的这个词,是我在遇到问题后,才找资料时看到的有些同仁说的。觉得很恰当,拿来主义了。
坑一: 建立好AG组后,不能打开WFCS控制见面,出现如下错误:

是WFCS自身的问题,需要安装相应的补丁:KB2750149
坑二: 所建立的侦听不能自动的分配SQL Server的链接(读链接和写链接)。AG的一个很大的特点就是:可以实现数据库的读链接和写链接的分离。但是测试后,发现说建立的alwayson 的侦听不能实现读写的数据库分离。很郁闷,在测试时,读和写的Session都集中到了一台服务器上。还是在微软官方的MSDN上找到了答案。
1. 建立好AG后,需要在不同的服务器上设置Read-only routing list .只需在一台服务器上(primary)上设置即可,会自动同步到其他的(secondary)服务器上。命令如下,只能用SQL或Powershell 完成。
1)建立secondary 的URL链接。
微软的例子如下:

AG1:是AG的名称,可以根据自己的定义修改。
computer01: 说明在那台SQL上,
TCP后面的地址也要修改。
2)建立Read-Only list 表,原理是: 主的SQL Server发现有只读的session进入时,会根据这个表来移到到底在哪个只读服务器接收。

因为每个服务器都有可能为primary 服务器,所以两个都要加。
坑三: 链接Session 只读的一定要制定 Application intent =Read Only 和链接的AG数据库。否则还是不能分离读和写sessions.

微软参考:
1. alter avaiablity group
http://msdn.microsoft.com/zh-cn/library/ff878601.aspx
2. Trobleshoot alwaysOn availablity
http://msdn.microsoft.com/zh-cn/library/ff878308.aspx
3.AG Listeners and Client Connectivity
http://msdn.microsoft.com/zh-cn/library/hh213417.aspx
4.Configure Read-Only Routing
http://msdn.microsoft.com/zh-cn/library/hh710054.aspx
5. how to configure AG
http://blogs.msdn.com/b/alwaysonpro/archive/2014/03/31/use-readintent-routing-with-azure-alwayson-availability-group-listener.aspx
6.Chinese version about AG
http://www.cnblogs.com/aarond/p/3679915.html
SQL Server 2012 AlwaysOn 亲身实历记的更多相关文章
- SQL Server 2012 AlwaysOn集群配置指南
1. AlwaysOn介绍 AlwaysOn是SQL Server 2012提供的全新综合.灵活.高效经济的高可用性和灾难恢复解决方案.它整合了镜像和群集的功能,基于OS 故障转移群集(Windows ...
- SQL SERVER 2012 AlwaysOn - 维护篇 03
搭建 AlwaysOn 是件非常繁琐的工作,需要从两方面考虑,操作系统层面和数据库层面,AlwaysOn 非常依赖于操作系统,域控,群集,节点等概念: DBA 不但要熟悉数据库也要熟悉操作系统的一些概 ...
- SQL SERVER 2012 AlwaysOn– 数据库层面 02
搭建 AlwaysOn 是件非常繁琐的工作,需要从两方面考虑,操作系统层面和数据库层面,AlwaysOn 非常依赖于操作系统,域控,群集,节点等概念: DBA 不但要熟悉数据库也要熟悉操作系统的一些概 ...
- 从0开始搭建SQL Server 2012 AlwaysOn 第三篇(安装数据,配置AlwaysOn)
这一篇是从0开始搭建SQL Server 2012 AlwaysOn 的第三篇,这一篇才真正开始搭建AlwaysOn,前两篇是为搭建AlwaysOn 做准备的 操作步骤: 1.安装SQL server ...
- 从0开始搭建SQL Server 2012 AlwaysOn 第二篇(配置故障转移集群)
本篇主要讲配置Windows 故障转移集群及遇到的相关问题(坑),因为AlwaysOn是基于Windows的故障转移集群的 在讲解步骤之前需要了解一下故障转移集群仲裁配置 四种集群的仲裁配置: 1.多 ...
- 从0开始搭建SQL Server 2012 AlwaysOn 第一篇(AD域与DNS)
随着业务发展,公司需要提高数据安全与性能需求,所以需要对新技术预研(先采坑),做技术积累: 了解相关AlwaysOn 故障转移集群(热备),数据路由(ICX),Moebius(莫比斯数据路由) 决定测 ...
- SQL SERVER 2012 AlwaysOn - 操作系统层面 01
搭建 AlwaysOn 是件非常繁琐的工作,需要从两方面考虑,操作系统层面和数据库层面,AlwaysOn 非常依赖于操作系统,域控,群集,节点等概念: DBA 不但要熟悉数据库也要熟悉操作系统的一些概 ...
- SQL Server 2012 AlwaysON 同步延迟时间
SELECT availability_mode_desc , role_desc , replica_server_name , last_redone_time , GETDATE() now , ...
- 服务器搭建域控与SQL Server的AlwaysOn环境过程(三)配置故障转移
0 引言 主要讲述如何搭建故障转移集群,因为AlwaysOn是基于Windows的故障转移集群的. 在讲解步骤之前需要了解一下故障转移集群仲裁配置 下面图片来自<Windows Server20 ...
随机推荐
- SQL系统数据库简介(mssqlsystemresource)
mssqlsystemresource
- 自动运维:Ansible -ansible tower
文档主页:http://docs.ansible.com/参考文档:http://docs.ansible.com/ansible/参考文档:http://docs.ansible.com/ansib ...
- Head First设计模式之策略模式(Strategy Pattern)
前言: 刚刚开始学习设计模式,之前也接触过一些,但是从来都没有系统的学过,这次打算好好的学习一下.这里就当是对学习过程的一个记录.整理,以便可以在以后不时的温故知新. 这一节采用一个鸭子的示例,层层推 ...
- TLB初始化 Missing Handler,MIPS R3K mips_init_tlb
#include <mips/r3kc0.h> LEAF(mips_init_tlb) mfc0 t0, C0_ENTRYHI # 保存ASID mtc0 zero, C0_ENTRYLO ...
- [JBoss] - 解决URI提交时乱码问题
JBoss 7 AS解决url提交数据乱码的问题: 打开jboss-as-7.1.1.Final\standalone\configuration\standalone.xml文件,在<exte ...
- .NET 4.0运行.NET 2.0兼容方法
需要在相同目录下放一个.config文件,例如xxx.exe,就需要一个xxx.exe.config文件,内容如下: <?xml version="1.0"?> < ...
- 为Asp.net WebApi 添加跨域支持
Nuget安装包:microsoft.aspnet.webapi.cors 原文地址:https://www.asp.net/web-api/overview/security/enabling-cr ...
- Python 文件常见操作
# -*-coding:utf8 -*- ''''' Python常见文件操作示例 os.path 模块中的路径名访问函数 分隔 basename() 去掉目录路径, 返回文件名 dirname() ...
- BaiduTemplate模板引擎使用示例附源码
1.新建项目,asp.net 空Web应用程序 添加data,js,styles,templates文件夹,添加baiduTemplate.js,jquery.js,bootstrap.css 2.添 ...
- sql查询工程结算分包款转出
总一 借工程结算负数 贷工程结算对冲问题 oralce使用聚合函数wmsys.wm_concat字段显示 clob :应该是,10.2.0.4以前,是varchar2,10.2.0.5开始,是CLOB ...