场景:有三台服务器SQLNode131,SQLNode132 ,SQLNode133:

1) 三台服务器加入域DCDemo.com

2) 三台服务器使用端口访问数据库

3) 三台服务器构建故障转移群集SQLNode02

4) 三台服务器构建高可用性组AGNode134

5) SQLNode12和SQLNode22实现自动故障转移

目标:实现对SQLNode12和SQLNode22的只读请求转移

SQLNode131的IP:192.168.25.131

SQLNode132的IP:192.168.25.132

AGNode134的IP:192.168.25.134

只读路由配置

--=====================
--只读路由配置
USE master
GO
ALTER AVAILABILITY GROUP [AGNode134]
MODIFY REPLICA ON N'SQLNode131' WITH
(
SECONDARY_ROLE (ALLOW_CONNECTIONS = READ_ONLY)
);
GO
ALTER AVAILABILITY GROUP [AGNode134]
MODIFY REPLICA ON N'SQLNode131' WITH
(
SECONDARY_ROLE (READ_ONLY_ROUTING_URL = N'TCP://192.168.25.131:1433')
);
GO
ALTER AVAILABILITY GROUP [AGNode134]
MODIFY REPLICA ON N'SQLNode132' WITH
(
SECONDARY_ROLE (ALLOW_CONNECTIONS = READ_ONLY)
);
GO
ALTER AVAILABILITY GROUP [AGNode134]
MODIFY REPLICA ON N'SQLNode132' WITH
(
SECONDARY_ROLE (READ_ONLY_ROUTING_URL = N'TCP://192.168.25.132:1433')
);
GO
ALTER AVAILABILITY GROUP [AGNode134]
MODIFY REPLICA ON N'SQLNode131' WITH
(
PRIMARY_ROLE (READ_ONLY_ROUTING_LIST=('SQLNode132','SQLNode131'))
);
GO
ALTER AVAILABILITY GROUP [AGNode134]
MODIFY REPLICA ON N'SQLNode132' WITH
(
PRIMARY_ROLE (READ_ONLY_ROUTING_LIST=('SQLNode131','SQLNode132'))
); GO

只读路由验证:

SELECT
g.name AS AGName,
ar1.replica_server_name AS ReplicaServerName,
ar2.replica_server_name AS RountingReplicaServerName,
ar1.endpoint_url AS ReplicaServerURL,
ar2.endpoint_url AS RountingReplicaServerURL
FROM sys.availability_read_only_routing_lists rl
INNER JOIN sys.availability_replicas ar1
ON ar1.replica_id=rl.replica_id
INNER JOIN sys.availability_replicas ar2
ON ar2.replica_id=rl.read_only_replica_id
INNER JOIN sys.availability_groups g
ON ar1.group_id=g.group_id
WHERE rl.routing_priority=1

删除只读路由

ALTER AVAILABILITY GROUP [AGNode134]
MODIFY REPLICA ON N'SQLNode132' WITH
(
PRIMARY_ROLE (READ_ONLY_ROUTING_LIST=NONE)
);
GO
ALTER AVAILABILITY GROUP [AGNode134]
MODIFY REPLICA ON N'SQLNode131' WITH
(
PRIMARY_ROLE (READ_ONLY_ROUTING_LIST=NONE)
);
GO

使用:

MSDN指明可使用.NET Framework4.0.2来访问,但是.NET 4正式发布版本为.0.3,经过测试,该功能在.NET4.5 S上可正常运行,连接串为

Server=tcp:192.168.25.123,1433;Database=DB1;ApplicationIntent=ReadOnly;MultiSubnetFailover=True;User Id=sa;Password=password;

ApplicationIntent 有两种配置值:Readonly 和ReadWrite,ApplicationIntent并不限制请求的操作,只是表明该连接上应该发生的操作。

对于配置了只读路由的请求,每次请求会首先转发到主副本,通过主副本获取到可用的副本,依次遍历找到一个可以处理只读请求的辅助副本,并将该请求转发给该辅助副本。

在辅助副本上执行查询时,Alwayson采用行版本来消除数据库上的阻塞问题,所有查询都会自动运行在快照隔离级别,即使显示设置其他隔离级别或锁提示。快照隔离级别虽然避免在数据上加S锁,但仍会对对象加Sch-S锁,Sch-S锁会阻塞DDL语句。

由于无法在辅助副本上单独建立索引,因此为提升查询性能,需先在主副本上建立索引,这会导致在索引维护是同步大量索引整理数据

将辅助副本设置为可读时,需要考虑查询时所消耗的temp空间(临时统计和快照隔离级别的行版本信息)

Alwayson--配置只读请求的更多相关文章

  1. AlwaysOn实现只读路由

    1.配置只读路由 ①配置A副本的只读路由属性(ReadOnly代表‘只读意向’) ALTER AVAILABILITY GROUP [testAG] MODIFY REPLICA ON N'WIN-1 ...

  2. SQL Server Alwayson配置两个节点加共享文件夹仲裁见证

    标签:MSSQL/节点和共享文件夹多数 概述 之前讲过多数节点的仲裁配置,多数节点一般3个节点以上的奇数个节点:常见的是使用3个节点节点多了也是浪费因为Alwayson的只读路由只能利用到一个只读副本 ...

  3. YTKNetworkConfig配置HTTPS请求

    YTKNetworkConfig配置HTTPS请求 p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; font: 14.0px Menlo; color: #ad91cc ...

  4. AlwaysOn可用性组测试环境安装与配置(二)--AlwaysOn配置(界面与T-SQL)

    四.AlwaysOn配置 1.开启AlwaysOn高可用性功能. 1.1.开启Server01的可用性组 1.2.需要重启服务:属于SQL server群集节点的服务,需要通过故障转移界面重启 1.3 ...

  5. 5.3 存储器、I/O和配置读写请求TLP

    本节讲述PCIe总线定义的各类TLP,并详细介绍这些TLP的格式.在这些TLP中,有些格式对于初学者来说较难理解.读者需要建立PCIe总线中与TLP相关的一些基本概念,特别是存储器读写相关的报文格式. ...

  6. Nginx配置TCP请求转发

    Nginx配置TCP请求转发 1.TCP请求转发基于stream在1.9版本前,需要单独编译安装该组建: # 依赖服务 [root@baolin conf]#yum -y install pcre-d ...

  7. 【Tomcat】Tomcat配置之请求字符串编码

    默认情况下,如果tomcat中部署的webservice或者web网站需要有中文的请求参数,而这时候我们直接在浏览器中输入中文那么接受到的将是乱码,无法达到我们的需求,这时候我们就需要对Tomcat的 ...

  8. 【NO.6】HTTP请求-配置-POST请求-GET请求

    直接举例来说 :) 例1:URL里面有”&”连接的情况 http://123.456.7.89:8080/aa/bb/cc/?userid=abcd@gmail.com&operati ...

  9. 框架基础:ajax设计方案(六)--- 全局配置、请求格式拓展和优化、请求二进制类型、浏览器错误搜集以及npm打包发布

    距离上一次博客大概好多好多时间了,感觉再不搞点东西出来,感觉就废了的感觉.这段时间回老家学习驾照,修养,然后7月底来上海求职(面了4家,拿了3家office),然后入职同程旅游,项目赶进度等等一系列的 ...

随机推荐

  1. MyBatis核心配置文件详解

    ------------------------siwuxie095                                     MyBatis 核心配置文件详解         1.核心 ...

  2. 给dede添加栏目图片和栏目描述

    有的时候我们希望调用栏目时把栏目的图片和描述调出来,但dede好像没有提供栏目图片这个功能,而栏目的描述也是给meta:Description使用的,不是很方便.   所以我们需要自已给dede添加图 ...

  3. idea 注释文件和方法注释

    类注释: 如下图所示

  4. ubuntu下常用操作

    屏幕截图: 可以用ubuntu自带的截图软件:gnome-screenshot. 该工具截图区域并且复制到剪切板命令为  gnome-screenshot -c -a,可以给该命令添加快捷方式,alt ...

  5. linux小白

    1. linux下加域名. 文件是在/etc/hosts    中间加的tab键 192.168.0.1 baidu.com linux下测试网页可以用 wget www.baidu.com  这个命 ...

  6. 在用easyui中做CRUD功能时,当删除一行或多行数据后再点击修改会提示你选中了多行,如何解决这个bug了?

    在用easyui中做CRUD功能时,当删除一行或多行数据后再点击修改会提示你选中了多行,如何解决这个bug了? 在删除成功后,加上这句话就可以了:$("#dg").datagrid ...

  7. hdu-1698(线段树,区间修改)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1698 注意:用位运算会更快,不然超时. #include<iostream> #inclu ...

  8. asp.net 中长尾链接实现推送 -- comet

    一般需求推送服务时,都会去第三方拿推送组件,如”极光“,”百度“,”小米"什么的,自己用.net实现推送服务端需要面对很多问题,比如C10K,但是企业内部使用往往用不了10K的链接,有个1K ...

  9. gj3 Python数据模型(魔法函数)

    3.1 什么是魔法函数 类里面,实现某些特性的内置函数,类似 def __xx__(): 的形式. 不要自己定义XX,并不是和某个类挂钩的 class Company(object): def __i ...

  10. HDU 1040 As Easy As A+B (排序。。。水题)

    题意:给定n个数,让你从小到大排序. 析:不说什么了. 代码如下: #include <cstdio> #include <iostream> #include <cst ...