时间:2017-1-2来源:本站原创作者:佚名
使用了SqlserverAlwayson技术后,假如采用的配置是默认配置,会出现PrimaryserverCPU很高的情况发生,比如默认配置如下:

需要自定义来解决这个问题。

我们先来看看上图中的这些选项的意义

主角色中的连接

允许所有连接

如果当前server是primary角色时,primaryinstance允许所有连接(如:读/写/管理)

允许读/写连接

如果当前server是primary角色时,primaryinstance只允许读/写连接(如果通过ssms连接,将报错、sqlcmd也是报错)

可读辅助副本

如果当前server是primary角色时,所有的secondaryservers都是可以看的(通过ssms能看结构、数据,但不能更改)

仅读意向

如果当前server是primary角色时,所有的secondaryservers只允许读连接(需要在建立连接时加入key来标明为只读连接:ApplicationIntent=ReadOnly)

如果当前server是primary角色时,所有的secondaryservers都不可以看(通过ssms能连接,但是看不了,会报错,如下)

建立读写分离的方法:

第一种

设置某具体“可用性组”的属性为:可读副本为“是”

客户端通过直连副本方式实现将select的流量转发过去

暴露出去的ip地址至少2个:侦听器ip和副本ip(如果副本多个,则可用ip哈希来进行更多的自定义)

第二种

设置某具体“可用性组”的属性为:可读辅助副本为“仅读意向”

执行sql脚本,建立read指针

执行sql脚本,建立primary,readdburlist关系

暴露出去的ip地址只有1个:侦听器IP

第一种方式能够进行更多地自定义,但是已经脱离sqlserveralwayson技术了,因此不讨论了

第二种方式对于客户端来讲更傻瓜点,但是自定义力度小,全依托于ms未来怎么改进这块了,而且这里有些坑。。。

下面来说说这些坑:

坑1:UI图形界面设置后,还需要执行脚本来建立读写分离支持

建立read指针-在当前的primary上为每个sqlserverinstance建立[instancename=instancetcpurl]Map

--由于这里有2个instance(包括了primary角色的),因此在primary上分别为这2个instance建立关系ALTERAVAILABILITYGROUP[alwayson]MODIFYREPLICAONNLAB-SQL1WITH(SECONDARY_ROLE(READ_ONLY_ROUTING_URL=Ntcp://LAB-SQL1.lab-sql.







































白癜风医院西安哪家好
白癜风可以完全治愈吗

转载请注明原文网址:http://www.helimiaopu.com/bbqb/4352.html

------分隔线----------------------------