SqlServer2012的AlwaysOn技术 可以同时连多个只读副本吗?

时间:2022-09-17 04:31:33
为三个replica分别设置readonly routing的顺序。以SQL108W2K8R21为例,当SQL108W2K8R21成为Primary replica时,readonly routing的顺序依次为SQL108W2K8R22->SQL108W2K8R23-> SQL108W2K8R21. Listener会将客户端的请求导向到SQL108W2K8R22,如果SQL108W2K8R22不可用,导向到SQL108W2K8R23,以此类推。

alter availability group ag MODIFY REPLICA ON N'SQL108W2K8R21' WITH (PRIMARY_ROLE(READ_ONLY_ROUTING_LIST=(N'SQL108W2K8R22', N'SQL108W2K8R23', N'SQL108W2K8R21')))

alter availability group ag MODIFY REPLICA ON N'SQL108W2K8R22' WITH (PRIMARY_ROLE(READ_ONLY_ROUTING_LIST=(N'SQL108W2K8R21', N'SQL108W2K8R23', N'SQL108W2K8R22')))

alter availability group ag MODIFY REPLICA ON N'SQL108W2K8R23' WITH (PRIMARY_ROLE(READ_ONLY_ROUTING_LIST=(N'SQL108W2K8R21', N'SQL108W2K8R22', N'SQL108W2K8R23')))


网上的一段配置,SQL108W2K8R21为主副本,SQL108W2K8R22,SQL108W2K8R23位只读副本

客户端连接:
Server=AgListener;database=agdb1;Integrated Security=SSPI;ApplicationIntent=Readonly


看上面的描述应该只会连接到一个只读副本上,而不是随机的连接两个只读副本, 情况是这样吗?
怎么样配置才可以所有只读副本一起使用

9 个解决方案

#1


[sql 2012 alwayson只读路由,只能连接到可用的第一个辅助副本上。不能实现所有可读副本都分配到连接;,
引用 1 楼 u013226693 的回复:
sql 2012 alwayson只读路由,只能连接到可用的第一个辅助副本上。不能实现所有可读副本都分配到连接;


有没有大神可以自己搞一个监听器让它随机访问可读副本,实现可读服务器的负载均衡?

或者有其他的解决方案实现负载均衡吗?,
引用 2 楼 webchengping 的回复:
Quote: 引用 1 楼 u013226693 的回复:

sql 2012 alwayson只读路由,只能连接到可用的第一个辅助副本上。不能实现所有可读副本都分配到连接;


有没有大神可以自己搞一个监听器让它随机访问可读副本,实现可读服务器的负载均衡?

或者有其他的解决方案实现负载均衡吗?

实现LB的方式很多啊,软负载可以考虑LVS,硬负载有F5,看你想花多少钱了,
引用 3 楼 u013226693 的回复:
实现LB的方式很多啊,软负载可以考虑LVS,硬负载有F5,看你想花多少钱了


Sqlserver2014,副本都增到9个了,一次只有一个只读副本能访问,其他的呆那不干活, 这是什么设计思想?

, alwayson毕竟是从12才有的新功能,实现LB还有一段路要走,据说SQL 2016将加入LB的功能。目前只能通过第三方实现负载均衡,
引用 5 楼 u013226693 的回复:
alwayson毕竟是从12才有的新功能,实现LB还有一段路要走,据说SQL 2016将加入LB的功能。目前只能通过第三方实现负载均衡

MSSQL2016支持secondary nodes的LB.,
引用 5 楼 u013226693 的回复:
alwayson毕竟是从12才有的新功能,实现LB还有一段路要走,据说SQL 2016将加入LB的功能。目前只能通过第三方实现负载均衡


DBTWIN集群的负载均衡效果很好,整体性能大大提高,
引用 4 楼 webchengping 的回复:
Quote: 引用 3 楼 u013226693 的回复:

实现LB的方式很多啊,软负载可以考虑LVS,硬负载有F5,看你想花多少钱了


Sqlserver2014,副本都增到9个了,一次只有一个只读副本能访问,其他的呆那不干活, 这是什么设计思想?


多个副本,可以根据不同业务分别访问不同的副本吧,,,不非要通过侦听器来判断,只从一台副本读取数据。。
我个人是这么理解的, hello,楼主你好   
目前我也在配置,但是在最后设置只读的时候,就算smss工具加了readonly的参数,还是会把我分配到主副本上去,不知道是我哪里配置不对,可以指点下吗?  谢谢你]

#1


[sql 2012 alwayson只读路由,只能连接到可用的第一个辅助副本上。不能实现所有可读副本都分配到连接;,
引用 1 楼 u013226693 的回复:
sql 2012 alwayson只读路由,只能连接到可用的第一个辅助副本上。不能实现所有可读副本都分配到连接;


有没有大神可以自己搞一个监听器让它随机访问可读副本,实现可读服务器的负载均衡?

或者有其他的解决方案实现负载均衡吗?,
引用 2 楼 webchengping 的回复:
Quote: 引用 1 楼 u013226693 的回复:

sql 2012 alwayson只读路由,只能连接到可用的第一个辅助副本上。不能实现所有可读副本都分配到连接;


有没有大神可以自己搞一个监听器让它随机访问可读副本,实现可读服务器的负载均衡?

或者有其他的解决方案实现负载均衡吗?

实现LB的方式很多啊,软负载可以考虑LVS,硬负载有F5,看你想花多少钱了,
引用 3 楼 u013226693 的回复:
实现LB的方式很多啊,软负载可以考虑LVS,硬负载有F5,看你想花多少钱了


Sqlserver2014,副本都增到9个了,一次只有一个只读副本能访问,其他的呆那不干活, 这是什么设计思想?

, alwayson毕竟是从12才有的新功能,实现LB还有一段路要走,据说SQL 2016将加入LB的功能。目前只能通过第三方实现负载均衡,
引用 5 楼 u013226693 的回复:
alwayson毕竟是从12才有的新功能,实现LB还有一段路要走,据说SQL 2016将加入LB的功能。目前只能通过第三方实现负载均衡

MSSQL2016支持secondary nodes的LB.,
引用 5 楼 u013226693 的回复:
alwayson毕竟是从12才有的新功能,实现LB还有一段路要走,据说SQL 2016将加入LB的功能。目前只能通过第三方实现负载均衡


DBTWIN集群的负载均衡效果很好,整体性能大大提高,
引用 4 楼 webchengping 的回复:
Quote: 引用 3 楼 u013226693 的回复:

实现LB的方式很多啊,软负载可以考虑LVS,硬负载有F5,看你想花多少钱了


Sqlserver2014,副本都增到9个了,一次只有一个只读副本能访问,其他的呆那不干活, 这是什么设计思想?


多个副本,可以根据不同业务分别访问不同的副本吧,,,不非要通过侦听器来判断,只从一台副本读取数据。。
我个人是这么理解的, hello,楼主你好   
目前我也在配置,但是在最后设置只读的时候,就算smss工具加了readonly的参数,还是会把我分配到主副本上去,不知道是我哪里配置不对,可以指点下吗?  谢谢你]