如何使用sqlserver always on2012 Always on技术

2013年 总版技术专家分年内排行榜第二
2014年8月 总版技术专家分月排行榜第一2014年7月 总版技术专家分月排行榜第一2014年6月 总版技术专家分月排行榜第一2014年5月 总版技术专家分月排行榜第一2014年4月 总版技术专家分月排行榜第一2014年3月 总版技术专家分月排行榜第一2014年1月 总版技术专家分月排行榜第一2013年12月 总版技术专家分月排行榜第一
2013年 总版技术专家分年内排行榜第二
2014年8月 总版技术专家分月排行榜第一2014年7月 总版技术专家分月排行榜第一2014年6月 总版技术专家分月排行榜第一2014年5月 总版技术专家分月排行榜第一2014年4月 总版技术专家分月排行榜第一2014年3月 总版技术专家分月排行榜第一2014年1月 总版技术专家分月排行榜第一2013年12月 总版技术专家分月排行榜第一
2013年 总版技术专家分年内排行榜第二
2014年8月 总版技术专家分月排行榜第一2014年7月 总版技术专家分月排行榜第一2014年6月 总版技术专家分月排行榜第一2014年5月 总版技术专家分月排行榜第一2014年4月 总版技术专家分月排行榜第一2014年3月 总版技术专家分月排行榜第一2014年1月 总版技术专家分月排行榜第一2013年12月 总版技术专家分月排行榜第一
2013年 总版技术专家分年内排行榜第二
2014年8月 总版技术专家分月排行榜第一2014年7月 总版技术专家分月排行榜第一2014年6月 总版技术专家分月排行榜第一2014年5月 总版技术专家分月排行榜第一2014年4月 总版技术专家分月排行榜第一2014年3月 总版技术专家分月排行榜第一2014年1月 总版技术专家分月排行榜第一2013年12月 总版技术专家分月排行榜第一
匿名用户不能发表回复!|
每天回帖即可获得10分可用分!小技巧:
你还可以输入10000个字符
(Ctrl+Enter)
请遵守CSDN,不得违反国家法律法规。
转载文章请注明出自“CSDN(www.csdn.net)”。如是商业用途请联系原作者。AlwaysON配置文档_百度文库
两大类热门资源免费畅读
续费一年阅读会员,立省24元!
AlwaysON配置文档
上传于||暂无简介
阅读已结束,如果下载本文需要使用1下载券
想免费下载本文?
定制HR最喜欢的简历
下载文档到电脑,查找使用更方便
还剩13页未读,继续阅读
定制HR最喜欢的简历
你可能喜欢Sql server Always On 读写分离配置方法 - MSSQL - 次元立方网 - 电脑知识与技术互动交流平台
Sql server Always On 读写分离配置方法
使用了Sqlserver 2012 Always on技术后,假如采用的配置是默认配置,会出现Primary server CPU很高的情况发生,比如默认配置如下:
需要自定义来解决这个问题。
我们先来看看上图中的这些选项的意义
主角色中的连接
允许所有连接
如果当前server是primary角色时,primary instance允许所有连接(如:读/写/管理)
允许读/写连接
如果当前server是primary角色时,primary instance只允许读/写连接(如果通过ssms连接,将报错、sqlcmd也是报错)
可读辅助副本
如果当前server是primary角色时,所有的secondary servers都是可以看的(通过ssms能看结构、数据,但不能更改)
如果当前server是primary角色时,所有的secondary servers只允许读连接(需要在建立连接时加入key来标明为只读连接:ApplicationIntent=ReadOnly)
如果当前server是primary角色时,所有的secondary servers都不可以看(通过ssms能连接,但是看不了,会报错,如下)
建立读写分离的方法:
设置某具体&可用性组&的属性为:可读副本为&是&
客户端通过直连副本方式实现将select的流量转发过去
暴露出去的ip地址至少2个:侦听器ip和副本ip(如果副本多个,则可用ip哈希来进行更多的自定义)
设置某具体&可用性组&的属性为:可读辅助副本为&仅读意向&
执行sql脚本,建立read指针
执行sql脚本,建立primary, read db ur list关系
暴露出去的ip地址只有1个:侦听器IP
第一种方式能够进行更多地自定义,但是已经脱离sqlserver always on技术了,因此不讨论了
第二种方式对于客户端来讲更傻瓜点,但是自定义力度小,全依托于ms未来怎么改进这块了,而且这里有些坑。。。
下面来说说这些坑:
坑1:UI图形界面设置后,还需要执行脚本来建立读写分离支持
建立read指针 - 在当前的primary上为每个sqlserver instance建立[instance name=&instance tcp url] Map
--由于这里有2个instance(包括了primary角色的), 因此在primary上分别为这2个instance建立关系
ALTER AVAILABILITY GROUP [alwayson]
MODIFY REPLICA ON
N'LAB-SQL1' WITH
(SECONDARY_ROLE (READ_ONLY_ROUTING_URL = N'tcp://LAB-SQL1.:1433'))
ALTER AVAILABILITY GROUP [alwayson]
MODIFY REPLICA ON
N'LAB-SQL2' WITH
(SECONDARY_ROLE (READ_ONLY_ROUTING_URL = N'tcp://LAB-SQL2.:1433'))
建立primary, read db ur list关系 - 在当前的primary上为各个primary建立对应的read only url 列表(有优先级概念)
--为每个可能成为primary角色的server,建立相应的只读列表,下面的代码由于互为readonly server,因此优先级都是1
ALTER AVAILABILITY GROUP [alwayson]
MODIFY REPLICA ON
N'LAB-SQL2' WITH
(PRIMARY_ROLE (READ_ONLY_ROUTING_LIST=('LAB-SQL1')));
ALTER AVAILABILITY GROUP [alwayson]
MODIFY REPLICA ON
N'LAB-SQL1' WITH
(PRIMARY_ROLE (READ_ONLY_ROUTING_LIST=('LAB-SQL2')));
--假如又增加了一台lab-sql3的secdonary,则sql可变为
ALTER AVAILABILITY GROUP [alwayson]
MODIFY REPLICA ON
N'LAB-SQL2' WITH
(PRIMARY_ROLE (READ_ONLY_ROUTING_LIST=('LAB-SQL1', 'LAB-SQL3')));
ALTER AVAILABILITY GROUP [alwayson]
MODIFY REPLICA ON
N'LAB-SQL1' WITH
(PRIMARY_ROLE (READ_ONLY_ROUTING_LIST=('LAB-SQL2', 'LAB-SQL3')));
--上述语句中的列表是有优先级关系的,排在前面的具有更高的优先级
可以通过如下语句查看这个关系,以及相应的优先级:
select ar.replica_server_name, rl.routing_priority,
(select ar2.replica_server_name
from sys.availability_read_only_routing_lists rl2
join sys.availability_replicas AS ar2 ON rl2.read_only_replica_id = ar2.replica_id
where rl.replica_id=rl2.replica_id and rl.routing_priority =rl2.routing_priority
and rl.read_only_replica_id=rl2.read_only_replica_id) as 'read_only_replica_server_name'
from sys.availability_read_only_routing_lists rl join sys.availability_replicas AS ar ON rl.replica_id = ar.replica_id
这里的routing_priority就是优先级
坑2:客户端需要指定访问的数据库以及加入ReadOnly关键字
C#连接字符串
server=侦听器IP;database=testDB3;uid=pwd=111111;ApplicationIntent=ReadOnly
坑3:Hosts文件设置
由于sql server always on依赖于windows集群,而windows集群依赖于活动目录,而客户端程序所在server很可能没有加入域,因此这里的解析存在问题
由于这种读写分离的方式,实际上是客户端先连接到侦听器ip,然后通过协商后,让客户端再连接到具体的副本上(用tcp url,使用了全名的,如:这种格式,在ad外部默认无法解析),因此需要修改hosts文件,为每个可能成为read的全名增加记录,如下:
192.168.0.1
192.168.0.2
简单情况下的读写分离比较适用
只适用于粗粒度的读写分离,因为增加了一个额外的ConnectionString,而不是建立在普通连接字符串上的
如果读写分离的分发规则复杂,则不适用
延伸阅读:
SQLServer代理是所有实时数据库的核心。代理有很多不...
本教程为 李华明 编著的iOS-Cocos2d游戏开发系列教程:教程涵盖关于i......
专题主要学习DirectX的初级编程入门学习,对Directx11的入门及初学者有......
&面向对象的JavaScript&这一说法多少有些冗余,因为JavaScript 语言本......
Windows7系统专题 无论是升级操作系统、资料备份、加强资料的安全及管......1、& 四台已安装windows server 2008 r2 系统的虚拟机,配置如下:
MEMORY : 2GB
DISK : 40GB(未分区)
NetAdapter : 2块
2、& 网卡设置:
本地连接:外网IP(由于虚拟机本身处于内网网段,192.168.1.2-192.168.1.255,在此我们把当前内网视为外网公开的IP)。
PC01:192.168.1.241 (域主机)
PC02:192.168.1.242 (集群主节点)
PC03:192.168.1.243 (集群辅助节点)
PC04:192.168.1.244 (集群辅助节点)
本地连接2:域内网IP。这里设置为192.168.10.1
PC01:192.168.10.1 (域主机)
PC02:192.168.10.2 (集群主节点)
PC03:192.168.10.3 (集群辅助节点)
PC04:192.168.10.4 (集群辅助节点)
3、& 虚拟机默认安装只有一块网卡,以下演示添加网卡:
注意:此时两块网卡都处于NAT模式,在此我将第一个网络适配器的网络连接模式改为桥连接,目的是为了与我物理机所处的内网电脑进行交互。
安装域控制器和配置域
安装域控制器
在IP:192.168.1.241这台虚拟机上建立域控制器
注意:在未配置固定IP时,无法安装有效的域控制器
此时我们设置虚拟机的固定外网IP(注意:这里没有配置DNS服务器地址,所以无法在虚拟机上面连接到真实外网,在正式环境中,需要配置DNS服务器地址):
再次来安装域控制器:
域控制器安装完成
安装域服务和配置域
域配置完成后,会提示重启虚拟机,请立即重启!
将其它几台虚拟机加入域
先将其它几台虚拟机的第二块网卡,也就是本地连接2的IP地址改为准备工作中的IP地址,
同时,DNS服务器指向内网IP为192.168.10.1的虚拟机,这个是必须的,否则无法加入新建的域。
加入域成功,立即重启虚拟机!
安装和配置windows server故障转移集群
先安装.net framework 3.5
安装完成!
安装故障转移功能
配置故障转移集群
使用NewCluster\administrator账户登录除域主机外的所有虚拟机,
注意:域管理员账户才能配置故障转移集群
创建一个故障转移集群
检查防火墙,将域防火墙关闭
但依旧有问题,这时我发现PC03和PC04两台虚拟机的外网IP是自动获取,于是将其分别修改:
然后再添加节点:
集群配置完成。
安装和配置sqlserver 2012 always on集群
安装sqlserver 2012
在集群的每一台虚拟机上安装sqlserver2012
选择安装账户,这里选择是域管理员账户
重启计算机,完成sqlserver2012的安装!
配置sqlserver 2012
为每个节点的虚拟机的sqlserver服务开启alwayson功能
IP:192.168.10.2
同样在32位的客户端也添加上同样的别名
打开32位和64位客户端协议中的命名协议
IP:192.168.10.3(操作步骤跟上面相同)
IP:192.168.10.4
使用别名测试登录
注意:如果安装时未使用域管理员账户,并且未将与管理员账户加入sqlserver管理员账户组中,将无法采取windows验证模式使用域管理员账户免密码登录sqlserver
配置always on
1、& 创建文件夹用于存储数据库备份。
2、&创建一个测试数据库,并备份数据库。如果已有数据库,只需备份数据库。
3、& 将备份路径共享
创建alwayson高可用性组
只需要在IP:192.168.10.2上创建即可
注意:一定要先修改数据库恢复模式为完整恢复模式,并完整备份数据库。否则这里的状态会显示为不满足先决条件。
添加侦听器
到此alwayson集群完成:
测试集群:
在主节点IP:192.168.10.2上创建一个表,并插入一条数据
在辅助节点IP:192.168.10.3上查看表和数据
在辅助节点IP:192.168.10.4上查看表和数据
测试成功!
关于应用程序连接集群问题,应该是连接集群的虚拟IP,也可以用SSMS直接连接虚拟IP,此时,sa账户的密码一定要在集群所有节点上配置一样。否则集群切换后,使用sa的账户连接会出现密码错误问题。
阅读(...) 评论()SQLServer 2012 Always on配置全过程
来源:博客园
SQLServer 2012 Always on是针对高可用性和灾难恢复的新解决方案。可以配置一个或多个辅助副本以支持对辅助进行只读访问,并且可以将任何辅助副本配置为允许对辅助数据库进行备份。 这样就提供了硬件的使用效率。
 
 “可用性组”针对一组离散的用户数据库(称为“可用性数据库”,它们共同实现故障转移)支持故障转移环境。一个可用性组支持一组主数据库以及一至四组对应的辅助数据库。可用性组在可用性副本级别进行故障转移。故障转移不是由诸如因数据文件丢失或事务日志损坏而使数据库成为可疑数据库等数据库问题导致的。
 
每组可用性数据库都由一个“可用性副本”承载。有两种类型的可用性副本:一个“主副本”和一到四个“辅助副本”。前者用于承载主数据库,后者则承载一组辅助数据库并作为可用性组的潜在故障转移目标。主副本使主数据库可用于客户端的读写连接。此外,它在称为“数据同步”的过程中使用,在数据库级别进行同步。主副本将每个主数据库的事务日志记录发送到每个辅助数据库。每个辅助副本缓存事务日志记录(“硬化”日志),然后将它们应用到相应的辅助数据库。主数据库与每个连接的辅助数据库独立进行数据同步。因此,一个辅助数据库可以挂起或失败而不会影响其他辅助数据库,一个主数据库可以挂起或失败而不会影响其他主数据库。
 
或者,您可以配置一个或多个辅助副本以支持对辅助数据库进行只读访问,并且可以将任何辅助副本配置为允许对辅助数据库进行备份。部署 AlwaysOn可用性组需要一个 Windows Server故障转移群集 (WSFC)群集。
图显示一个可用性组,该组包含最大数目的可用性副本,即一个主副本和四个辅助副本。

来自:
 
虽然2012 Always on是基于WSFC的,但是并不需要共享存储,所以配置就非常简单。
 
下面是我的安装步骤:
 
至少需要三台机器(我创建了三台虚拟机,一台是作为DC,DNS服务器,两台Nod3)
 

机器名


角色


OS


IP Address


DC


Domain Controller


Windows 2008R2


192.168.1.10


Node1


Cluster Node 1


Windows 2008R2


192.168.1.11 Public


192.168.2.1


心跳线


Node2


Cluster Node 2


Windows 2008R2


192.168.1.12 Public


192.168.2.2


心跳线窗体底端

 
首先配置Windows集群:
 
1. 安装.NETFramework 3.5.1 Features和Failover Clustering
 
 
 
2. 安装Windows KB 2494036
 
3.新建集群
 
 
 
4.选择加入集群的服务器:
 
 
 
5.检测配置:
 
 
 
6.不需要选择检测共享磁盘(AlwaysOn不需要)
 
 
 
7.开始检测:
 
 
 
8.检测内容(检测完成后可以导出Report):
 
 
 
9.之后输入Cluster名字和IP点击下一步创建成功,成功后打开Server Manager查看集群配置(可以看到并没有共享磁盘,跟传统的集群还是有区别的):
 
 
由于我们只使用了两台机器,所以当一台机器Down掉之后就没有仲裁了,无法成功转移。当使用多节点做仲裁,可以使用三台Node,这样一台Down掉之后另外两台可以做仲裁。如果两个Node,不使用共享磁盘可以使用Share文件的方式,具体的配置可以参考:(之前没有配置这一步,虽然AlwaysOn级别可以Failover,但是真正一台Node Down掉之后就不行了,感谢@struggle1指出这个问题。)
 
现在我们集群已经配置后了,下一步是安装SQLServer并且配置Always On.
 
Part2:
Part3:
免责声明:本站部分内容、图片、文字、视频等来自于互联网,仅供大家学习与交流。相关内容如涉嫌侵犯您的知识产权或其他合法权益,请向本站发送有效通知,我们会及时处理。反馈邮箱&&&&。
学生服务号
在线咨询,奖学金返现,名师点评,等你来互动

我要回帖

更多关于 sql always on 部署 的文章

 

随机推荐