博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Alwayson--配置只读请求
阅读量:5837 次
发布时间:2019-06-18

本文共 2547 字,大约阅读时间需要 8 分钟。

场景:有三台服务器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 masterGOALTER AVAILABILITY GROUP [AGNode134]MODIFY REPLICA ON N'SQLNode131' WITH(    SECONDARY_ROLE (ALLOW_CONNECTIONS = READ_ONLY));GOALTER AVAILABILITY GROUP [AGNode134]MODIFY REPLICA ON N'SQLNode131' WITH(    SECONDARY_ROLE (READ_ONLY_ROUTING_URL = N'TCP://192.168.25.131:1433'));GOALTER AVAILABILITY GROUP [AGNode134]MODIFY REPLICA ON N'SQLNode132' WITH(    SECONDARY_ROLE (ALLOW_CONNECTIONS = READ_ONLY));GOALTER AVAILABILITY GROUP [AGNode134]MODIFY REPLICA ON N'SQLNode132' WITH(    SECONDARY_ROLE (READ_ONLY_ROUTING_URL = N'TCP://192.168.25.132:1433'));GOALTER AVAILABILITY GROUP [AGNode134]MODIFY REPLICA ON N'SQLNode131' WITH(    PRIMARY_ROLE (READ_ONLY_ROUTING_LIST=('SQLNode132','SQLNode131')));GOALTER AVAILABILITY GROUP [AGNode134]MODIFY REPLICA ON N'SQLNode132' WITH(    PRIMARY_ROLE (READ_ONLY_ROUTING_LIST=('SQLNode131','SQLNode132')));GO

只读路由验证:

SELECTg.name AS AGName,ar1.replica_server_name AS ReplicaServerName,ar2.replica_server_name AS RountingReplicaServerName,ar1.endpoint_url AS ReplicaServerURL,ar2.endpoint_url AS RountingReplicaServerURLFROM sys.availability_read_only_routing_lists rlINNER JOIN sys.availability_replicas ar1 ON ar1.replica_id=rl.replica_idINNER JOIN sys.availability_replicas ar2 ON ar2.replica_id=rl.read_only_replica_idINNER JOIN sys.availability_groups g ON ar1.group_id=g.group_idWHERE rl.routing_priority=1

 

删除只读路由

ALTER AVAILABILITY GROUP [AGNode134]MODIFY REPLICA ON N'SQLNode132' WITH(    PRIMARY_ROLE (READ_ONLY_ROUTING_LIST=NONE));GOALTER 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空间(临时统计和快照隔离级别的行版本信息)

 

转载地址:http://lqccx.baihongyu.com/

你可能感兴趣的文章
跟随我在oracle学习php(8)
查看>>
FZU - 1688 Binary land
查看>>
Spring 3.1.0 Hibernate 3.0 Eclipse Spring WEB例子
查看>>
转换流,Properties 集合
查看>>
bootstrap列排序
查看>>
redis 常用操作
查看>>
如何用ABP框架快速完成项目(9) - 用ABP一个人快速完成项目(5) - 不要执着于设计模式和DDD理论,避免原教旨主义...
查看>>
用户交互
查看>>
【ubuntu 修改root密码】
查看>>
libkyototycoon.so.2: cannot open shared object file: No such file
查看>>
ASP.Net 后台发回错误
查看>>
【微服务架构与实践】读后感
查看>>
使用Unicode写文本文件:一个简单类的示例
查看>>
阶乘素因子分解
查看>>
UVA-10212 The Last Non-zero Digit. 分解质因子+容斥定理
查看>>
80端口被占用时的终极解决方法
查看>>
NG-ZORRO 使用相关
查看>>
[algothrim] url pattern mining within same domain site
查看>>
[hihoCoder]HIHO Drinking Game
查看>>
Python变量与赋值
查看>>