昨天晚上学习了【SQL Server 2012实施与管理实战指南】的第三章,于是今天想在前段时间建的那个alwayson

可用性组测试环境上也配置一下只读路由,尝试实现读写分离。

按照书中的方法,执行如下脚本(本来我是3节点的可用性组,由于笔记本开4台虚拟机实在是太卡,我把server03给关掉了,只读路由也没配置这个节点。):

--指定在此可用性副本当前拥有辅助角色(即它是辅助副本)时要生效的角色有设置:
ALTER AVAILABILITY GROUP [AG01]
MODIFY REPLICA ON
N'SERVER02\ISS' WITH
(SECONDARY_ROLE (ALLOW_CONNECTIONS = READ_ONLY));
ALTER AVAILABILITY GROUP [AG01]
MODIFY REPLICA ON
N'SERVER02\ISS' WITH
(SECONDARY_ROLE (READ_ONLY_ROUTING_URL = N'TCP://SERVER02.testad.com:1433')) ALTER AVAILABILITY GROUP [AG01]
MODIFY REPLICA ON
N'SERVER04\ISS' WITH
(SECONDARY_ROLE (ALLOW_CONNECTIONS = READ_ONLY));
ALTER AVAILABILITY GROUP [AG01]
MODIFY REPLICA ON
N'SERVER04\ISS' WITH
(SECONDARY_ROLE (READ_ONLY_ROUTING_URL = N'TCP://SERVER04.testad.com:1433')) --指定在此可用性副本当前拥有主角色(即它是主副本)时要生效的角色有设置:
ALTER AVAILABILITY GROUP [AG01]
MODIFY REPLICA ON
N'SERVER04\ISS' WITH
(PRIMARY_ROLE (READ_ONLY_ROUTING_LIST = (N'SERVER02\ISS',N'SERVER04\ISS'))); ALTER AVAILABILITY GROUP [AG01]
MODIFY REPLICA ON
N'SERVER02\ISS' WITH
(PRIMARY_ROLE (READ_ONLY_ROUTING_LIST = (N'SERVER04\ISS',N'SERVER02\ISS')));

按道理说,脚本执行完后,在连接字符串中加入参数:ApplicationIntent = ReadOnly
就能自动重定向到辅助副本。

可是,在我的环境中只要加上ApplicationIntent = ReadOnly参数,就无法连接服务器。

最后在大菠萝的帮助下,终于找出来是端口的问题。

我的SQL Server服务并没有监听在1433端口,而是动态端口!

修改成固定端口1433后并重启服务。

再次使用ApplicationIntent = ReadOnly参数连接。

虽然主副本是SERVER02,但是连接已经被重定向到了SERVER04

如果不使用ApplicationIntent = ReadOnly参数连接。

连接仍将指向主副本SERVER02。

这里,附上大菠萝提供的几个脚本:

查看副本间的只读路由关系:

select
b.replica_server_name
,a.routing_priority
,c.replica_server_name
from
sys.availability_read_only_routing_lists a
left join
sys.dm_hadr_availability_replica_cluster_states b
on a.replica_id = b.replica_id
left join sys.dm_hadr_availability_replica_cluster_states c
on a.read_only_replica_id = c.replica_id
order by a.replica_id

当前的只读路由配置:

select a.*,c.is_local,c.role_desc,d.endpoint_url,d.read_only_routing_url
from sys.dm_hadr_availability_replica_cluster_nodes a
join sys.dm_hadr_availability_replica_cluster_states b
on a.replica_server_name = b.replica_server_name
join sys.dm_hadr_availability_replica_states c
on b.replica_id = c.replica_id
join sys.availability_replicas d
on c.replica_id = d.replica_id

----------------------------------------

最后,对于要使用只读路由的客户端应用程序,其连接字符串必须满足以下要求:

  • 使用 TCP 协议。

  • 将应用程序意向特性/属性设置为只读。

  • 引用配置为支持只读路由的可用性组的侦听器。

  • 引用该可用性组中的数据库。

参考链接:

http://msdn.microsoft.com/zh-cn/subscriptions/downloads/ff878308.aspx#ror

http://msdn.microsoft.com/zh-cn/subscriptions/downloads/hh213002.aspx

http://hi.baidu.com/hanxiao2100/item/e0a46226519aab8b6f2cc368

最后,特别感谢大菠萝,耽误你好久的时间哈~~

sql server alwayson 可用性组 只读路由的设置的更多相关文章

  1. 宣布正式发布 Windows Azure Notification Hub,新增 SQL Server AlwaysOn 可用性组侦听器支持

    今天,我们非常高兴地宣布,针对使用 Windows Azure 的移动和企业开发人员推出一些新功能.这些新功能可以减少构建移动应用程序的开发时间和成本,并能帮助企业开发人员实现高可用性和全球业务连续性 ...

  2. SQL Server Alwayson可用性副本会话期间的可能故障

    200 ? "200px" : this.width)!important;} --> 介绍 物理故障.操作系统故障或 SQL Server 故障都可能导致两个可用性副本之间 ...

  3. SQL Server AlwaysON从入门到进阶(1)——何为AlwaysON?

    本文属于SQL Server AlwaysON从入门到进阶系列文章 本文原文出自Stairway to AlwaysOn系列文章.根据工作需要在学习过程中顺带翻译以供参考.系列文章包含: SQL Se ...

  4. SQL Server ->> 高可用与灾难恢复(HADR)技术 -- AlwaysOn(实战篇)之AlwaysOn可用性组搭建

    因为篇幅原因,AlwaysOn可用性组被拆成了两部分:理论部分和实战部分.而实战部分又被拆成了准备工作和AlwaysOn可用性组搭建. 三篇文章各自的链接: SQL Server ->> ...

  5. SQL Server ->> 高可用与灾难恢复(HADR)技术 -- AlwaysOn可用性组(理论篇)

    因为篇幅原因,AlwaysOn可用性组被拆成了两部分:理论部分和实战部分.而实战部分又被拆成了准备工作和AlwaysOn可用性组搭建. 三篇文章各自的链接: SQL Server ->> ...

  6. AlwaysOn可用性组功能测试(二)--SQL Server群集故障转移对AlwaysOn可用性组的影响

    三. SQL Server群集故障转移对AlwaysOn可用性组的影响 1. 主副本在SQL Server群集CLUSTEST03/CLUSTEST03上 1.1将节点转移Server02.以下是故障 ...

  7. SQL Server 2012 管理新特性:AlwaysOn 可用性组

    SQL Server 2012 新特性(一)管理新特性:AlwaysOn 一.准备环境 1.准备4台计算机 域控制器DC1,IP地址192.168.1.1 主节点SQL1:IP地址192.168.1. ...

  8. AlwaysOn可用性组测试环境安装与配置(一)--SQL群集环境搭建

    一.测试环境介绍 1. 宿主使用工作站(HYPR-V)基本配置如下: 处理器:Intel(R) Core(TM) i5-4470 CPU @ 3.20GHz 3.20GHz 内存(RAM):8.00G ...

  9. 从0开始搭建SQL Server AlwaysOn 第三篇(配置AlwaysOn)

    从0开始搭建SQL Server AlwaysOn 第三篇(配置AlwaysOn) 第一篇http://www.cnblogs.com/lyhabc/p/4678330.html第二篇http://w ...

随机推荐

  1. 【LeetCode】9. 回文数

    题目 判断一个整数是否是回文数.回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数. 示例 1:输入: 121 输出: true 示例 2:输入: -121 输出: false 解释: 从左 ...

  2. 课程三(Structuring Machine Learning Projects),第二周(ML strategy(2)) —— 1.Machine learning Flight simulator:Autonomous driving (case study)

    [中文翻译] 为了帮助您练习机器学习的策略, 在本周我们将介绍另一个场景, 并询问您将如何行动.我们认为, 这个工作在一个机器学习项目的 "模拟器" 将给一个任务, 告诉你一个机器 ...

  3. Python:SQLMAP参数中文解释

    #HiRoot's BlogOptions(选项):--version 显示程序的版本号并退出-h, --help 显示此帮助消息并退出-v VERBOSE 详细级别:0-6(默认为1) Target ...

  4. Java 8 新特性-菜鸟教程 (8) -Java 8 日期时间 API

    Java 8 日期时间 API Java 8通过发布新的Date-Time API (JSR 310)来进一步加强对日期与时间的处理. 在旧版的 Java 中,日期时间 API 存在诸多问题,其中有: ...

  5. JavaWeb学习 (二十四)————Filter(过滤器)常见应用

    一.统一全站字符编码 通过配置参数charset指明使用何种字符编码,以处理Html Form请求参数的中文问题 1 package me.gacl.web.filter; 2 3 import ja ...

  6. FFmpeg封装格式处理2-解复用例程

    本文为作者原创,转载请注明出处:https://www.cnblogs.com/leisure_chn/p/10506642.html FFmpeg封装格式处理相关内容分为如下几篇文章: [1]. F ...

  7. React native 环境搭建遇到问题解决(android)

    新建项目 react-native init TestApp 运行项目 react-native run-android 不好意思,错误马上就到了 问题一 通常遇到这个错误之后,系统会给出这个具体详情 ...

  8. XtraBackup的备份原理与应用示例

    一.XtraBackup简介与安装 XtraBackup是一款免费的在线开源数据库备份解决方案,适用于所有版本的MySQL和MariaDB.XtraBackup支持对InnoDB热备,是一款物理备份工 ...

  9. [Python] Python基础字符串

    Python的语法采用缩进的方式,一般使用四个空格,并且是大小写敏感的 字符编码 计算机只能处理数字,如果要处理文本,必须先把文本转换成数字才能处理 采用8个比特(bit)作为一个字节(byte) 一 ...

  10. [android] 手机卫士应用程序更新和签名

    弹出升级对话框 获取AlertDialog.Builder对象,通过new出来 调用Builder对象的setTitle()方法,参数:文本 调用Builder对象的setMessage()方法,参数 ...