SQLServer2016 AlwaysOn AG基于工作组的搭建笔记
最近搭建了一套SQLServer2016 AlwaysOn AG。
(后记:经实际测试,使用SQLServer2012 也同样可以在Winserver2016上搭建基于工作组的AlwaysOn AG,其实基于工作组的AG仅仅只是WindowsServer2016的WSFC新功能。)
笔者是采用修改各节点的hosts文件,以及修改计算机名的dns后缀,来避免需要另外一台DNS服务器。
上面128,129,130三个IP属于AlwaysOn的三个节点服务器
IP100属于可用性组侦听器IP
IP150属于群集
途中遇到的问题点记录于此:
1.如果不是采用administrator这个内置管理员账号而采用其它的管理员帐户(每个节点都需要同样的管理员帐户),则在搭建群集前,需要使用Powershell添加如下注册表项:
new-itemproperty -path HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System -Name LocalAccountTokenFilterPolicy -Value 1
否则,在创建群集添加服务器时会报错。
----------------------------------------------------------------------------------------
2.在执行
ALTER DATABASE [SQL2016] SET HADR AVAILABILITY GROUP = [AG2016]
时出错,sp_readerrorlog可以找到如下错误:
Database Mirroring login attempt by user 'NT AUTHORITY\ANONYMOUS LOGON.' failed with error: 'Connection handshake failed. The login 'NT AUTHORITY\ANONYMOUS LOGON' does not have CONNECT permission on the endpoint. State 84.'. [CLIENT: 192.168.206.128]
解决方法:
这其实以前在玩镜像时也遇到过,一种解决方法是修改SQL Server实例的属性,将登录身份改为同样的本地管理员帐户,并将该用户添加到SQLServer的登录名中,同时需要给sysadmin授权。修改之后,重启SQL Server实例。(各节点都需要操作一遍)
另一种方法是按照上面报错信息,将NT AUTHORITY\ANONYMOUS LOGON添加到SQLServer的登录名中,同时需要给sysadmin授权。修改之后,重启SQL Server实例。(各节点都需要操作一遍)
----------------------------------------------------------------------------------------
3.添加侦听器时遇到如下错误:
消息 41066,级别 16,状态 0,第 3 行
无法使 Windows Server 故障转移群集(WSFC)资源(ID“32b92e1c-37e2-4ae1-a045-d691c45011a7”)联机(错误代码 5942)。WSFC 服务可能未在运行、可能在其当前状态下无法访问,或是 WSFC 资源未处于可接受请求的状态。有关此错误代码的信息,请参阅 Windows 开发文档中的“系统错误代码”。
消息 19476,级别 16,状态 4,第 3 行
尝试为侦听器创建网络名称和 IP 地址失败。WSFC 服务可能未在运行或在其当前状态下无法访问,或者为网络名称和 IP 地址提供的值可能不正确。请检查 WSFC 群集的状态并且由网络管理员来验证该网络名称和 IP 地址。
解决方法:
这是因为未将侦听器IP的DNS记录添加到hosts文件中导致,添加即可。
----------------------------------------------------------------------------------------
4.只读路由的负载均衡不起作用
因为我仍然按照以前SQLServer2012时期的脚本来搭的AlwaysOn只读路由。
创建SQLServer2016的负载均衡只读路由的脚本应该如下:
ALTER AVAILABILITY GROUP ag MODIFY REPLICA ON N’WIN02′ WITH (PRIMARY_ROLE (READ_ONLY_ROUTING_LIST=((‘WIN01’, ‘WIN03’), ‘WIN02’)));
跟以前的变更之处上上边(‘WIN01’, ‘WIN03’)的脚本处。
使用脚本查询路由可以得到这样的结果(WIN01和WIN03节点都是第一路由优先级):
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
使用SQLCMD测试时,几乎是以1:1的比例来分配的负载。而使用SSMS时则不是这样,会出现连续N次都是WIN01,之后连续N次都是WIN03。
----------------------------------------------------------------------------------------
最后,使用最新的SSMS管理工具,可以直接从图形化界面进行操作创建AlwaysOn可用性组(稍老的版本好像会缺少部分脚本)。
本文链接地址:http://www.cnblogs.com/ajiangg/p/6424900.html
参考链接:
http://www.cnblogs.com/ajiangg/p/3636019.html
http://www.cnblogs.com/ajiangg/p/3668936.html
http://www.cnblogs.com/ajiangg/p/3636082.html
最新文章
- 第六百零七八天 how can I 坚持
- Java 开发技巧
- ios -- 教你如何轻松学习Swift语法(二)
- HGE游戏引擎之hgeQuad结构体的使用(用于渲染图片)
- Android用户界面 UI组件--TextView及其子类(五) DigitalClock,AnalogClock,RadioButton,CheckBox,ToggleButton汇总
- 优秀的弹窗插件 jquery.lightbox_me.js
- Java中可变长参数的方法
- BestCoder Round #46
- 【Python】 基于秘钥的对称加密
- 自行实现高性能MVC WebAPI
- python中的线程技术
- ​Django-model
- symfony-表单学习
- (十)创建ROS消息和ROS服务
- shiro缓存机制
- 一键安装Docker图形化管理界面-Shipyard
- JAVA类变量(静态变量)
- 面试题30:KMP 字符串查找
- C/C++互相调用
- CSS(五):背景、列表、超链接伪类、鼠标形状控制属性
热门文章
- C#4并行计算
- leetcode — minimum-window-substring
- C语言 标准输入 清空缓存
- Jenkins+Git+Gitlab+Ansible实现持续集成自动化部署静态网站(一)--技术流ken
- centos7部署DNS-1
- 【golang-GUI开发】struct tags系统(一)
- 在Fragment中保存WebView状态
- H5 贪吃蛇源码
- [日常]nginx与网络事件模型
- Java java jdbc thin远程连接并操作Oracle数据库