Windows Server 2012搭建SQL Server Always On踩坑全记录
环境信息:
Windows Server 2012 R2
Sql Server 2012
整个搭建集群的过程主要分为3步:
- 1.配置预控,并把机器加域。
- 2.配置windows故障转移集群(Windows Failover Cluster)
- 3.配置SQL Server Always On High Availability Group(AG)
踩坑全记录
-
预控配置
比较好配置,需要注意的是非预控机器在加入域之前需要将dns指向预控。这里遇到的一个坑,在给node2节点加域时提示
虚拟机使用华为私有云申请,申请的服务器的sid因为与node1节点一致导致,重新生成sid即可,方法:
C:\Windows\System32\sysprep\sysprep.exe
勾选通用项,并开始。
-
配置windows故障转移集群。
Node1上添加node2节点时提示“无法访问远程注册表,请确保远程服务器注册表服务已运行,并已启动远程管理”。
从字面意思来看,放这诊断注册表服务已经windows策略上,发现服务与策略配置都没问题。最后在node1上尝试添加本地节点node1时提示“本地没有安装故障转移工具”,在去windows服务里查询,果然只勾选了故障转移管理工具选项,实际并未安装故障转移集群(windows服务里是两个选型,勾选集群管理工具并不会级联集群服务)勾选上,问题解决。由于提示的误导,诊断了很长时间。
配置SQL Server AG
-
安装SQL server失败
因为没有安装.net framework 3.5。 windows server 2012 R2 无法安装.net framework 3.5的问题很普遍,在网上查了下都是使用手动制定个sxs本地文件路径,配置安装。网上很难找到sxs下载资源包,csdn上都是需要积分的,又需要可以私信我。
- 配置Sql Server Available Group时,创建AG 提示node2上指定文件目录不存在。
此问题是因为我node1和node2上的sql server 都使用的命名实例,node1上还有个默认实例,并且命名实例名称不同导致,误导node2去默认实例的文件夹上去找了,实际并没有安装默认实例。有的解决方案是通过写sql语句手动map到新的路径上,这种可以解决。
我直接在node2上直接新装了个默认实例,问题直接解决,简单粗暴。
-
配置Listener 侦听器
配置侦听器过程比较简单,指定一个静态IP地址,并指定默认端口号1433,不过在配置完侦听器有个特别奇葩的现象,只能在主节点上ping通侦听器name或者IP,在其他副本任何机器上无法ping通,也无法使用Sql Management Studio连接(在主节点上可以连接)。
数据库同步无问题,不过因为应用在连接集群时需要使用侦听器地址去连接,这个问题就导致外部应用无法连接集群,集群不work。从预控以及DNS的记录来看,一切正常.
在*以及TechNet上查了很多帖子,有很多人遇到相同的问题,不过解决方案基本都不work。最后怀疑是网络问题,就联系网络管理员帮忙看,最后一起讨论了一番,果然是因为侦听器IP和name并没有在华为私有云上绑定暴露,所以也就认证了其他服务器无法ping通,而只有主节点才可以连的问题。网络管理员处理完后,问题解决。
结束语
整个搭建过程大概耗时一天半,期间更多的是环境问题以及多个节点上的重复工作,整个搭建过程还算顺利。之后在windows server 2016,SQL Server 2016 环境上,成功搭建无域的SQL AG环境,依旧踩到了很多坑,大家遇到问题私信我。
如果你也遇到了我列的坑,那希望这篇文章能够帮助到您。最全配置文档,关注公众号,私信作者。
喜欢记得扫描下方二维码关注哦~
本文由博客群发一文多发等运营工具平台 OpenWrite 发布