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

  1. 安装SQL server失败

    因为没有安装.net framework 3.5。 windows server 2012 R2 无法安装.net framework 3.5的问题很普遍,在网上查了下都是使用手动制定个sxs本地文件路径,配置安装。网上很难找到sxs下载资源包,csdn上都是需要积分的,又需要可以私信我。

  1. 配置Sql Server Available Group时,创建AG 提示node2上指定文件目录不存在

此问题是因为我node1和node2上的sql server 都使用的命名实例,node1上还有个默认实例,并且命名实例名称不同导致,误导node2去默认实例的文件夹上去找了,实际并没有安装默认实例。有的解决方案是通过写sql语句手动map到新的路径上,这种可以解决。
我直接在node2上直接新装了个默认实例,问题直接解决,简单粗暴。

  1. 配置Listener 侦听器

    配置侦听器过程比较简单,指定一个静态IP地址,并指定默认端口号1433,不过在配置完侦听器有个特别奇葩的现象,只能在主节点上ping通侦听器name或者IP,在其他副本任何机器上无法ping通,也无法使用Sql Management Studio连接(在主节点上可以连接)。

    数据库同步无问题,不过因为应用在连接集群时需要使用侦听器地址去连接,这个问题就导致外部应用无法连接集群,集群不work。从预控以及DNS的记录来看,一切正常.

    在StackOverflow以及TechNet上查了很多帖子,有很多人遇到相同的问题,不过解决方案基本都不work。最后怀疑是网络问题,就联系网络管理员帮忙看,最后一起讨论了一番,果然是因为侦听器IP和name并没有在华为私有云上绑定暴露,所以也就认证了其他服务器无法ping通,而只有主节点才可以连的问题。网络管理员处理完后,问题解决。

结束语

整个搭建过程大概耗时一天半,期间更多的是环境问题以及多个节点上的重复工作,整个搭建过程还算顺利。之后在windows server 2016,SQL Server 2016 环境上,成功搭建无域的SQL AG环境,依旧踩到了很多坑,大家遇到问题私信我。
如果你也遇到了我列的坑,那希望这篇文章能够帮助到您。最全配置文档,关注公众号,私信作者。

​喜欢记得扫描下方二维码关注哦~

本文由博客群发一文多发等运营工具平台 OpenWrite 发布

Windows Server 2012搭建SQL Server Always On踩坑全记录的更多相关文章

  1. SQL Server 2012:SQL Server体系结构——一个查询的生命周期(第1部分)

    为了缩小读取操作所涉及范围,本文首先着眼于简单的SELECT查询,然后引入执行更新操作有关的附加过程.最后你会读到,优化性能时SQLServer使用还原工具的相关术语和流程. 关系和存储引擎 如图所示 ...

  2. SQL Sever 各版本下载 SQL Server 2012下载SQL Server 2008下载SQL Server 2005

    SQL Server 2012SQL Server 2012 开发版(DVD)(X64,X86)(中文简体)ed2k://|file|cn_sql_server_2012_developer_edit ...

  3. SQL Server 2012:SQL Server体系结构——一个查询的生命周期(第2部分)

    计划缓存(Plan Cache) 如果SQL Server已经找到一个好的方式去执行一段代码时,应该把它作为随后的请求重用,因为生成执行计划是耗费时间且资源密集的,这样做是有有意义的. 如果没找到被缓 ...

  4. VMware Workstation 11 搭建windows server 2012 之sql server 2012集群常见问题整理

    1.windows server 2012内置支持iSCSI发起程序无需额外安装,iSCSI Software Target 可作为“文件和存储服务”角色下的内置功能使用 2.拷贝虚拟机的文件加入域时 ...

  5. [Windows Server 2012] 安装SQL Server 2012

    ★ 欢迎来到[护卫神·V课堂],网站地址:http://v.huweishen.com★ 护卫神·V课堂 是护卫神旗下专业提供服务器教学视频的网站,每周更新视频.★ 本节我们将带领大家:安装SQL S ...

  6. windows server 2012 安装sql server集群

    第一步:准备工作 虚拟环境下模拟创建: 准备好3台虚拟机 操作系统,WindowsServer2012R2 操作系统安装完成后,需要注意如果虚拟机是克隆出来的,后面操作集群的时候需要计算机的sid不同 ...

  7. SQL Server 2012:SQL Server体系结构——一个查询的生命周期(第3部分)(完结)

    一个简单的更新查询 现在应该知道只读取数据的查询生命周期,下一步来认定当你需要更新数据时会发生什么.这个部分通过看一个简单的UPDATE查询,修改刚才例子里读取的数据,来回答. 庆幸的是,直到存取方法 ...

  8. [Tool] Windows 8.1安装SQL Server

    [Tool] Windows 8.1安装SQL Server 问题情景 因为工作的关系,需要在Windows 8.1.64Bit设备上安装SQL Server 2012.本来以为是个只要按下一步就可以 ...

  9. 在Windows Server 2012 R2中搭建SQL Server 2012故障转移集群

    需要说明的是我们搭建的SQL Server故障转移集群(SQL Server Failover Cluster)是可用性集群,而不是负载均衡集群,其目的是为了保证服务的连续性和可用性,而不是为了提高服 ...

随机推荐

  1. 小程序中map的取值和赋值

    1.初始化 resultMap: { "near": [], "join": [], "publish": [] } 2.js中直接取 co ...

  2. 吴裕雄--天生自然python学习笔记:python 用 Open CV抓取摄像头视频图像

    Open CV 除了可以读取.显示静态图片外 , 还可 以加载及播放动态影片, 以 及 读取内置或外接摄像头的图像信息 . 很多笔记本电脑都具有摄像头 , OpenCV 可通过 VideoC aptu ...

  3. RubyMain2016.2配置自动同步代码到服务器功能

    可以参考rubymain帮助文档:https://www.jetbrains.com/help/ruby/deployment-in-rubymine.html 在rubymain工具的Tools&g ...

  4. day40-进程-生产者消费者模型进阶

    #1.队列的数据是安全的,因为队列内置了一把锁,大家都来抢占资源的时候,A在操作数据的时候,B就无法操作该数据. # 下面代码有两个生产者和三个消费者,包子吃完之后,接着放的两个None被marry和 ...

  5. android 9.0 http无法访问问题

    在res/xml下新建network-security-config.xml <?xml version="1.0" encoding="utf-8"?& ...

  6. Xcode查看iOS崩溃与崩溃日志分析

    一.造成崩溃的原因 1.代码中存在bug 2.Watchdog 超时机制 3.用户强制退出 4.低内存终止 5.其他违法系统规则的操作,大部分是内存问题 二.崩溃的类型 1.信号错误类 (1)EXC_ ...

  7. [2015普及组-D]推销员 思维que

    题:https://www.cometoj.com/problem/0221 #include<iostream> #include<cstring> #include< ...

  8. getHibernateTemplate()的find用法大全

    一.find(String queryString); 示例:this.getHibernateTemplate().find("from bean.User"); 返回所有Use ...

  9. PLL到底是个啥么东西呢?

    ——————————————————更新于20180826———————————————————————————— PLL:完成两个电信号的相位同步的自闭环控制系统叫锁相环.用电压控制延时,用到了VC ...

  10. Python类变量与实例变量及成员函数修饰方式说明(与Java定义方式进行类比)

    Python类中的变量有类变量和实例变量之分. 类变量:变量绑定在类上,同一个类之间的共享变量,类比于Java中的静态变量static 公有变量定义 Java 的定义方式 class Test{ pu ...