阿里云-云小站(无限量代金券发放中)
【腾讯云】云服务器、云数据库、COS、CDN、短信等热卖云产品特惠抢购

手把手教你搭建SQL Server AlwaysOn 图文详解

119次阅读
没有评论

共计 33267 个字符,预计需要花费 84 分钟才能阅读完成。

AlwaysOn 是 SQL Server2012 推出的最新的高可用技术,用以取代原有的 SQL Serve 镜像,网上的 AlwaysOn 可以说是非常的多,也可以说是非常的千篇一律,而且很多都是搭建非常顺利的,没有坑的,难道搭建 AlwaysOn 真的可以这麽顺利吗??????

由于公司使用的是最新的 Windows Server 2012 R2,网上用的都是 Windows Server 2008 R2,2012 R2 和 2008 R2 在故障转移集群界面菜单和 AD 服务管理工具

已经有较大变化,有一些步骤跟 Windows Server 2008 R2 可能会不一样。

本文希望能够详细的在 Windows Server 2012 R2 搭建 AlwaysOn 的过程写出来,减少大家踩坑的机会。

实验环境:

准备工作

软件准备

(1)SQL Server 2012 

(2)Windows Server 2012 R2 DataCenter   64

(3)VMware-workstation 10.0

操作系统:都是 Windows Server 2012 R2   DataCenter  64 位(win2012/win2012R2 只有 DataCenter 版本才能使用故障转移集群)

当然,生产环境服务器最好每台服务器都配置两个网卡,一个网卡用作业务,一个网卡用作心跳,当然一个网卡也没有什么问题

至于各个计算机的计算机名我这里不做修改,在真实生产环境计算机名是需要修改的

计算机名

域控:win-felbg10uu7f

node1:win-7107jjj2bcc

node2:win-5pmsdhui0kq

 手把手教你搭建 SQL Server AlwaysOn 图文详解

故障转移集群 VIP 跟 AlwaysOn 的 VIP 的作用是不一样的

故障转移集群 VIP(192.168.66.170)是让你连接故障转移集群管理器的集群用的,而不是让你连接 AlwaysOn 

AlwaysOn 的 VIP(192.168.66.171)是让你连接 AlwaysOn 的

所以故障转移集群 VIP 跟 AlwaysOn 的 VIP 不能一样!


步骤

下面使用 step by step guide 的方式来展示怎麽安装域控

注意:先把各台机器的防火墙关掉。

域控端

1、配置域控 ipipv6 去掉,因为 DNS 服务器就安装在域控上,所以首选 DNS 服务器填写:127.0.0.1 回环地址

手把手教你搭建 SQL Server AlwaysOn 图文详解

2、安装 AD 域服务

手把手教你搭建 SQL Server AlwaysOn 图文详解

 手把手教你搭建 SQL Server AlwaysOn 图文详解

 安装 AD 域服务的同时,操作系统会同时安装好 DNS 服务器

手把手教你搭建 SQL Server AlwaysOn 图文详解

3、点击服务器管理器右上角的小旗帜,弹出对话框,点击“将此服务器提升为域控制器”以提升为域控

手把手教你搭建 SQL Server AlwaysOn 图文详解

4、进入 AD 域服务配置向导,设置域名 abc.com

手把手教你搭建 SQL Server AlwaysOn 图文详解

5、设置 DSRM 密码为123456

默认林中的第一棵域树的根域的域控制器必须担当全局编录服务器和必须安装 DNS 服务,不能是只读域控制器

手把手教你搭建 SQL Server AlwaysOn 图文详解

NetBIOS 名称不需要设置,至于什么是 NetBIOS 名称,可以在本文最后的两本书中进行了解

手把手教你搭建 SQL Server AlwaysOn 图文详解 

AD DS 数据库文件路径保持默认就可以了,当然将日志文件和数据库文件放在不同的磁盘有助提升性能,更多信息可以在本文最后的两本书中进行了解

手把手教你搭建 SQL Server AlwaysOn 图文详解

6、安装完 AD DS 之后会自动重启服务器,重启服务器之后打开DNS 管理器

可以看到域控制器 win-felbg10uu7f.abc.com已经将主机名(win-felbg10uu7f)和 IP 地址(192.168.66.155)注册到 DNS 服务器内

手把手教你搭建 SQL Server AlwaysOn 图文详解

手把手教你搭建 SQL Server AlwaysOn 图文详解

可以看到动态更新已开启

手把手教你搭建 SQL Server AlwaysOn 图文详解

在_tcp文件夹内,_ldap记录和 _gc 记录说明这台服务器已经正确注册为域控制器和担当全局编录服务器

手把手教你搭建 SQL Server AlwaysOn 图文详解

注意:如果在_tcp 文件夹内没有_ldap 记录和_gc 记录相关的记录,那么请重启 Netlogon 服务来重新注册

7、检查 AD 域服务和 Netlogon 服务是否正常启动

手把手教你搭建 SQL Server AlwaysOn 图文详解

手把手教你搭建 SQL Server AlwaysOn 图文详解

8、在 AD 用户和计算机里添加域用户 DCADMIN,请务必记住 DCADMIN 的密码,因为后面第二篇和第三篇都需要用到 DCADMIN 这个域用户

注意:如果域控机器上默认的 Administrator 本地计算机账户没有被禁用的话,在安装完域控之后,Administrator 本地账户会从本地的 SAM 本地账户移动到域账户(这时候本地账户已经不存在 Administrator 这个账户,除非将域控进行降级)

这时候其他非域控机器都可以利用 Administrator 域账户进行登录,但是我们一般不使用 Administrator 域账户,而是新建一个域用户来做,这里就是另外新建一个 DCADMIN 账户

详细可以查看《Windows Server2012 系统配置指南》书

手把手教你搭建 SQL Server AlwaysOn 图文详解

手把手教你搭建 SQL Server AlwaysOn 图文详解

手把手教你搭建 SQL Server AlwaysOn 图文详解

手把手教你搭建 SQL Server AlwaysOn 图文详解

域用户 DCADMIN 创建完毕

手把手教你搭建 SQL Server AlwaysOn 图文详解

9、将这个域用户加入到域计算机组和域管理员组

手把手教你搭建 SQL Server AlwaysOn 图文详解

手把手教你搭建 SQL Server AlwaysOn 图文详解

手把手教你搭建 SQL Server AlwaysOn 图文详解

手把手教你搭建 SQL Server AlwaysOn 图文详解

9、将系统自动更新关闭掉

手把手教你搭建 SQL Server AlwaysOn 图文详解

客户端

1、设置客户端 ipipv6 去掉,注意要设置网关,禁用 TCP/IP 上的 NetBIOS

手把手教你搭建 SQL Server AlwaysOn 图文详解

手把手教你搭建 SQL Server AlwaysOn 图文详解

2、加域,填写域名 abc.com,并 输入刚刚在 AD 域 用户(DCADMIN)和密码

加域之前最好在客户端先 ping 一下 DNS(abc.com)和域控的 IP,看能否 ping 通,如果 ping 不通,加域肯定不成功了,需要进一步排查为什麽 ping 不通

需要先检查一下防火墙,一般都是防火墙的问题

手把手教你搭建 SQL Server AlwaysOn 图文详解

手把手教你搭建 SQL Server AlwaysOn 图文详解

在客户端的网络和共享中心可以看到机器当前已经加入 abc.com 这个域网络

手把手教你搭建 SQL Server AlwaysOn 图文详解

加域之后,在域控的 DNS管理器里能看到新添加的机器的主机和 IP 地址

手把手教你搭建 SQL Server AlwaysOn 图文详解

在 AD用户和计算机里的 Computers 容器里也能看到新添加的机器

手把手教你搭建 SQL Server AlwaysOn 图文详解

3、加域后客户端计算机会自动重启,重启后使用本地 Administrator用户登录计算机,先不要用 DCADMIN 这个域用户来登录计算机

手把手教你搭建 SQL Server AlwaysOn 图文详解

4、打开计算机管理 -》本地用户和组,选择组,选中 Administrators 组,右键 -》添加到组

手把手教你搭建 SQL Server AlwaysOn 图文详解

点击添加

手把手教你搭建 SQL Server AlwaysOn 图文详解

输入域用户(DCADMIN)和密码

手把手教你搭建 SQL Server AlwaysOn 图文详解

手把手教你搭建 SQL Server AlwaysOn 图文详解

这样 DCADMIN 域用户就有了这台客户端计算机的 A dministrator权限

手把手教你搭建 SQL Server AlwaysOn 图文详解

5、将系统自动更新关闭掉

手把手教你搭建 SQL Server AlwaysOn 图文详解

另一台客户端计算机的配置这里就不再叙述了,步骤都是一样的

最后在域控里查看 DNS 和 AD Computers 容器,两个节点都已经添加成功

手把手教你搭建 SQL Server AlwaysOn 图文详解

手把手教你搭建 SQL Server AlwaysOn 图文详解


总结

通过上面的步骤演示,在搭建 AD DS 服务的时候有一些地方是需要注意的,希望大家能够看清楚截图,一步一步进行配置,基本上就没有问题了

现在 AlwaysOn 可用性组已经完全支持 Windows Azure,可以把辅助副本部署到 Windows Azure 上

手把手教你搭建 SQL Server AlwaysOn 图文详解

希望通过这篇文章让大家体会到新一代高可用技术 AlwaysOn 的强大,下一篇是安装并设置故障转移集群

至于 Windows Server 的 AD 域服务的问题可以参考《Windows Server2012 系统配置指南》这本书

地址:http://www.amazon.cn/ 图书 /dp/B00KMQYTD6

 手把手教你搭建 SQL Server AlwaysOn 图文详解

想更深入了解 AD 的可以看这一本书《Windows Server 2012 R2 Active Directory 配置指南》

地址:http://product.china-pub.com/4410540

手把手教你搭建 SQL Server AlwaysOn 图文详解

希望台湾 MVP 戴有炜老师的丰富 Windows Server 方面的知识能给大家带来更多帮助

操作系统的注意事项,硬件配置、软件配置、故障转移集群都在上面两本书有介绍

参考文章

AlwaysON – HADRON Learning Series: – How does AlwaysON Process a Synchronous Commit Request
https://blogs.msdn.microsoft.com/psssql/2011/04/01/alwayson-hadron-learning-series-how-does-alwayson-process-a-synchronous-commit-request/


2016-9-10 补充

在开始本文的操作之前,大家需要留意主副本机器和各个辅助副本机器的扇区是否一致,如果扇区不一致,或者环境不一样有可能导致同步慢或 IP 冲突问题

alwayson 搭建了也白搭

在服务器上运行下面命令,D 盘为 SQL Server 数据文件,日志文件所在盘符

fsutil fsinfo ntfsInfo  D:

手把手教你搭建 SQL Server AlwaysOn 图文详解

如果每个扇区字节数和每个物理扇区字节数这两个值,各个副本显示不同,那么最好不要搭建 AlwaysOn

在副本上每个扇区字节数显示 512,每个物理扇区字节数显示 512

在辅助副本上每个扇区字节数显示 512,每个物理扇区字节数显示 512

这样是没有问题的

或者

在副本上每个扇区字节数显示 512,每个物理扇区字节数显示 4096

在辅助副本上每个扇区字节数显示 512,每个物理扇区字节数显示 512

这样也是没有问题的

或者

在副本上每个扇区字节数显示 512,每个物理扇区字节数显示 512

在辅助副本上每个扇区字节数显示 512,每个物理扇区字节数显示 4096

这样是有问题的

NTFS 对于大于 2GB 的分区,默认簇大小为 8 个扇区(4KB),分配单元默认是 4096 字节是因为内存页是 4kb
簇 = 分配单元 windows7 默认呢的分配单元是 4096 字节,那么一个 6000 字节的文件就需要两个分配单元,分配单元是 windows 读写文件的基本单位
逻辑扇区:512 字节,操作系统将分配单元的读写请求划分为多个 512 字节大小,然后写入到磁盘,其实就是操作系统做了一层转换
物理扇区:512,物理磁盘读写的基本单位,旧磁盘是 512 字节,新磁盘是 4kb
高级格式化:操作系统对盘符进行格式化,按照分配单元大小
低级格式化:磁盘厂家对磁盘做的低级格式化,按照 512 字节大小

由于新磁盘使用了 4kb 字节大小,某些操作系统和应用程序无法适应,所以磁盘厂家退出了 512E 格式,对磁盘增加了一个模拟层,底层是 4kb,模拟层是 512 字节
操作系统对磁盘的读写依然是 512 字节,这样厂家推出的新磁盘就可以向下兼容旧操作系统,因为是模拟出来的,所以名字叫  512-byte Emulation 或 512e
最新操作系统例如 win2012 已经可以支持 4kb 磁盘,所以使用命令 fsutil fsinfo ntfsInfo D: 的时候,如果每扇区和每物理扇区都显示为 4096,那么表示
磁盘使用的是最新的支持 4kb 磁盘,win2012 操作系统对物理扇区进行了对齐,逻辑扇区是 4096,物理扇区是 4096,就是原生 4K 模式,所以名字叫 4K native 或 4Kn

参考文章:
https://support.microsoft.com/en-us/kb/2510009
http://stackoverflow.com/questions/9465451/how-can-i-determine-the-sector-size-in-windows
https://blogs.msdn.microsoft.com/psssql/2011/01/13/sql-server-new-drives-use-4k-sector-size/
https://msdn.microsoft.com/en-us/library/windows/desktop/hh848035%28v=vs.85%29.aspx?f=255&MSPPError=-2147217396
http://ask.zol.com.cn/q/16407.html
http://www.cnblogs.com/diabloxl/p/4422120.html

手把手教你搭建 SQL Server AlwaysOn 图文详解

手把手教你搭建 SQL Server AlwaysOn 图文详解

手把手教你搭建 SQL Server AlwaysOn 图文详解

手把手教你搭建 SQL Server AlwaysOn 图文详解

解决办法:通过 fusionIO 或者一些 SSD 磁盘的管理界面修改磁盘的参数

例如惠普的 fusionIO,进去管理界面,将 4KB 扇区大小改为 512 字节

手把手教你搭建 SQL Server AlwaysOn 图文详解

修改为

手把手教你搭建 SQL Server AlwaysOn 图文详解

估计 Hyper- V 是无法修改磁盘的物理扇区大小,那如果使用 Hyper- v 就只能所有副本都用 Hyper-V,而不能有些副本使用物理机,有些副本使用 Hyper- V 跑在虚拟机里面

京东 IO 卡为第一代产品,与目前最新采购的第三代产品
第一代产品为 512 字节,第三代产品为 4KB
Node_A:第一代产品
Node_B:第三代产品

由于格式化磁盘的时候可以选择分配单元 512 字节~64KB,所以 log block 要适应文件系统的分配单元否则不能原子写入磁盘

手把手教你搭建 SQL Server AlwaysOn 图文详解

手把手教你搭建 SQL Server AlwaysOn 图文详解

https://blogs.msdn.microsoft.com/psssql/2013/05/15/sql-serverstorage-spacesvhdx-and-4k-sector-size/
Is this safe for SQL Server?

The answer is yes.  An I/O subsystem can return a larger sector size than actual, physical sector size as long as all reported values can be evenly divided by 512 bytes.
4096 的块只要能被 512 整除就无问题
As the diagram below shows, SQL Server maintains parity on 512 byte boundaries, for the log, regardless of the reported sector size.  This allows SQL Server to detect a partial write (torn behavior.)  For example, if the system reported a sector size of 4K but the physical sector size was 512 bytes, the I/O subsystem is only guaranteed to flush to a 512 byte mark.  If the first 4, physical sectors are flushed (2K of the 4K aligned block) and a power outage occurs, SQL Server will be able to detect the entire 4K was not properly flushed.

Microsoft SQL Server IO Internals ppt 下载地址

到 Linux 公社资源站下载:

—————————————— 分割线 ——————————————

免费下载地址在 http://linux.linuxidc.com/

用户名与密码都是www.linuxidc.com

具体下载目录在 /2017 年资料 / 1 月 /21 日 / 手把手教你搭建 SQL Server AlwaysOn 图文详解 /

下载方法见 http://www.linuxidc.com/Linux/2013-07/87684.htm

—————————————— 分割线 ——————————————

更多详情见请继续阅读下一页的精彩内容:http://www.linuxidc.com/Linux/2017-01/139766p2.htm

这一篇是手把手教你搭建 SQL Server AlwaysOn 图文详解的第二篇,主要讲述如何搭建故障转移集群,因为 AlwaysOn 是基于 Windows 的故障转移集群的

在讲解步骤之前需要了解一下故障转移集群仲裁配置

下面图片来自《Windows Server 2012 系统配置指南》

手把手教你搭建 SQL Server AlwaysOn 图文详解

四种集群的仲裁配置:

1、多数节点:这种配置不会用到仲裁磁盘,而所谓多数节点就是在正常节点数量占多数的情况下,集群才会提供服务,否则就停止服务。这种配置适用于奇数节点的集群,例如 5 个节点的集群,其正常节点数量必须至少 3 个,集群才会提供服务

2、多数节点和磁盘:适用于偶数节点的集群,他在计算法定数量时会将仲裁磁盘计算进来,例如,4 个节点 + 1 个仲裁磁盘节点的集群,可以将其视为 5 个节点的集群,这时正常节点数量必须至少 3 个,集群才会提供服务

3、多数节点和文件共享:它和(多数节点和磁盘)类似,不过仲裁磁盘改为共享文件夹内的文件

4、没有多数:只有磁盘,只要仲裁磁盘脱机,集群就会停止提供服务(不建议使用,这种方式很早之前已经有了)

简单说一下见证磁盘和见证共享文件夹

见证共享文件夹是 Windows 2008 才推出的见证磁盘方式,因为以前的见证磁盘(简称仲裁盘)需要共享存储,也就是各个节点需要挂载同一个磁盘,这个磁盘叫见证磁盘,是放在共享存储上面的

推出见证共享文件夹之后我们可以不需要高大上的共享存储,用共享文件夹就可以了

我们在使用故障转移集群的时候,只用两种仲裁配置:(多数节点)和(多数节点和文件共享)

如果集群节点是奇数,那么使用多数节点

如果集群节点是偶数,那么使用多数节点和文件共享(需要配置一个共享文件夹,各个节点都能访问这个共享文件夹,并且共享文件夹所在机器不需要加入域)

注意:

域控不需要安装故障转移集群服务和 SQL Server,也不需要加入到故障转移集群
所有机器防火墙都关掉
两个节点都需要安装相同的更新程序,建议不要开启自动更新功能,由系统管理员手动更新

SQL Server 2012  AlwaysOn 只支持最多一个主副本和四个辅助副本,最多允许三个同步提交的可用性副本(包括主副本),最多允许两个自动故障转移副本(包括主副本)


步骤

这次也是 step by step 的方式向大家展示

1、安装故障转移集群,两个节点都同时安装故障转移集群服务

手把手教你搭建 SQL Server AlwaysOn 图文详解

手把手教你搭建 SQL Server AlwaysOn 图文详解

2、两个节点都安装完故障转移集群之后,在其中一个节点上进行注销操作,然后使用 DCADMIN 这个域用户登录计算机

手把手教你搭建 SQL Server AlwaysOn 图文详解

手把手教你搭建 SQL Server AlwaysOn 图文详解

3、打开故障转移集群管理器

手把手教你搭建 SQL Server AlwaysOn 图文详解

 手把手教你搭建 SQL Server AlwaysOn 图文详解

手把手教你搭建 SQL Server AlwaysOn 图文详解

4、在“选择服务器或群集”界面中,单击“浏览”按钮将所有要加入群集的服务器添加进来,然后单击“下一步”按钮。

手把手教你搭建 SQL Server AlwaysOn 图文详解

手把手教你搭建 SQL Server AlwaysOn 图文详解

手把手教你搭建 SQL Server AlwaysOn 图文详解

5、在验证配置向导中最好选择运行所有测试,进行全部检测就可以查看到服务器之间建立群集的所有设置,包括网络、共享磁盘、操作系统等。

手把手教你搭建 SQL Server AlwaysOn 图文详解

手把手教你搭建 SQL Server AlwaysOn 图文详解

手把手教你搭建 SQL Server AlwaysOn 图文详解

 手把手教你搭建 SQL Server AlwaysOn 图文详解

可以查看一下报告

 手把手教你搭建 SQL Server AlwaysOn 图文详解

报告里面一定不能出现失败,否则你需要检查是什么问题导致失败,失败是建立不了故障转移集群的

出现警告要看情况,对于存储的警告,由于目前为止没有添加任何的存储设备,这里可以忽略,还有网络警告

手把手教你搭建 SQL Server AlwaysOn 图文详解

由于各个节点只有一个网卡,正常来说还需要一个心跳网卡,所以这里会出现警告,由于实验环境这个警告可以忽略

手把手教你搭建 SQL Server AlwaysOn 图文详解

集群报告会存放在这个路径下

C:\Windows\Cluster\Reports

手把手教你搭建 SQL Server AlwaysOn 图文详解

6、点击完成

手把手教你搭建 SQL Server AlwaysOn 图文详解

7、创建集群向导

手把手教你搭建 SQL Server AlwaysOn 图文详解

8、输入集群名称和 vip

手把手教你搭建 SQL Server AlwaysOn 图文详解

注意:这个只是集群的管理名称和管理 IP,跟 AlwaysOn 无关

手把手教你搭建 SQL Server AlwaysOn 图文详解

由于我们当前还没有任何存储,所以不勾选将所有符合条件的存储添加到群集

手把手教你搭建 SQL Server AlwaysOn 图文详解

手把手教你搭建 SQL Server AlwaysOn 图文详解

手把手教你搭建 SQL Server AlwaysOn 图文详解

查看报告可以看到 找不到磁盘见证的相应磁盘,因为我们还没加见证共享文件夹或仲裁盘,这里可以忽略

手把手教你搭建 SQL Server AlwaysOn 图文详解

9、群集创建完成

手把手教你搭建 SQL Server AlwaysOn 图文详解

可以在域控的 AD 用户和计算机里看到集群的 virtual name

手把手教你搭建 SQL Server AlwaysOn 图文详解

10、由于我们是两个节点的故障转移集群,所以需要加上共享文件夹,在域控上建立一个共享文件夹,让两个集群节点都可以访问

注意:如果是奇数节点,这一步是不需要做的!

共享文件夹所在机器入域(域网络)和不入域(独立机器)都无所谓

生产环境不要把共享文件夹放在域控上!

手把手教你搭建 SQL Server AlwaysOn 图文详解

注意集群停止服务的条件

手把手教你搭建 SQL Server AlwaysOn 图文详解

 手把手教你搭建 SQL Server AlwaysOn 图文详解

手把手教你搭建 SQL Server AlwaysOn 图文详解

手把手教你搭建 SQL Server AlwaysOn 图文详解

手把手教你搭建 SQL Server AlwaysOn 图文详解

11、在域控上的 C 盘新建一个 quorumshare 文件夹作为共享文件夹

quorumshare 文件夹的权限为 everyone 完全控制和 DCADMIN 域用户的读写权限(保险起见)

手把手教你搭建 SQL Server AlwaysOn 图文详解

手把手教你搭建 SQL Server AlwaysOn 图文详解

手把手教你搭建 SQL Server AlwaysOn 图文详解

12、UNC 路径:\\WIN-FELBG10UU7F\quorumshare

在 quorumshare 文件夹下随便建一个文本文件

手把手教你搭建 SQL Server AlwaysOn 图文详解

13、在两个集群节点上测试能否访问共享文件夹

两个节点都用域用户 DCADMIN 登录,并测试另外两个节点能否访问这个 quorumshare 共享文件夹

手把手教你搭建 SQL Server AlwaysOn 图文详解

14、回到故障转移集群管理器,填写文件共享路径:\\WIN-FELBG10UU7F\quorumshare

手把手教你搭建 SQL Server AlwaysOn 图文详解

手把手教你搭建 SQL Server AlwaysOn 图文详解

手把手教你搭建 SQL Server AlwaysOn 图文详解

手把手教你搭建 SQL Server AlwaysOn 图文详解

注意:如果 quorumshare 文件夹没有 写入权限,那么在填写文件共享路径的时候会被拒绝

手把手教你搭建 SQL Server AlwaysOn 图文详解

15、可以看到共享文件夹下面会生成 VerifyShareWriteAccess.txt 和 Witness.log 两个文件,至于这两个文件的作用大家看它们的文件名就知道了

手把手教你搭建 SQL Server AlwaysOn 图文详解

故障转移集群到这里就已经配置完成

手把手教你搭建 SQL Server AlwaysOn 图文详解

Windows Server2012 系统配置指南

配置群集网络(SQL CLUSTER 的情况,不是 alwayson 的情况)

public 网络:192.168.8.0   客户端可以通过此网络与群集节点通信,也要让群集节点之间可以通过此网络进行通信(当作 private 网络的备用网络 心跳的备用网络),菠萝说过换 alwayson 的镜像 ip 非常麻烦,需要停机

private 网络:192.168.9.0   此网络只用作心跳

iSCSI 网络:192.168.10.0   利用 iSCSI 通信协议与目标服务器通信的专用网络,不可以群集节点之间通信网络,也不可以用来与客户端通信

public 网络
允许在此网络上进行群集网络通信 and 允许客户端通过该网络连接

private 网络
允许在此网络上进行群集网络通信

iSCSI 网络
不允许在此网络上进行群集网络通信

本地盘不用共享存储的情况下

最佳做法:不分开网段,只有一个 public192.168.8.0,两个网卡做 teaming,最好是负载均衡那种,不用 active-backup 主备模式,分担压力

如果分开网段,比如

主副本 网卡 1:192.168.8.20;网卡 2:192.168.9.20

辅助副本 网卡 1:192.168.8.21;网卡 2:192.168.9.21

一旦辅助副本的网卡 2 坏了,要用网卡 1 来代替,变成了跨子网,而且辅助副本的网卡 1 也要承担客户端流量

如果不分开网段但是没做网卡 teaming

主副本 网卡 1:192.168.8.20;网卡 2:192.168.8.21

辅助副本 网卡 1:192.168.8.22;网卡 2:192.168.9.23

一旦辅助副本的网卡 2 坏了,要用网卡 1 来代替,只是辅助副本的网卡 1 承担客户端流量

最佳设置:不分开网段,不管网卡是否做了 teaming

都设置为允许在此网络上进行群集网络通信 and 允许客户端通过该网络连接,也就是保持默��设置

手把手教你搭建 SQL Server AlwaysOn 图文详解

 手把手教你搭建 SQL Server AlwaysOn 图文详解

手把手教你搭建 SQL Server AlwaysOn 图文详解

手把手教你搭建 SQL Server AlwaysOn 图文详解

手把手教你搭建 SQL Server AlwaysOn 图文详解

如果集群节点跟见证共享文件夹不能通信,例如 域控关机了,到达一定时间,在服务器管理器面板里角色和服务器组会显示红色

点击服务可以看到 故障转移集群服务已经挂起

手把手教你搭建 SQL Server AlwaysOn 图文详解

手把手教你搭建 SQL Server AlwaysOn 图文详解

权限问题

在 AD 用户和计算机管理界面 里的  域用户和故障转移集群用户的权限需要添加下面红框的权限,否则创建侦听器的时候有可能报错

手把手教你搭建 SQL Server AlwaysOn 图文详解

手把手教你搭建 SQL Server AlwaysOn 图文详解

Create failed for Availability Group Listener‘SQLCDB01Temp’. (Microsoft.SqlServer.Smo)

The WSFC cluster could not bring the Network Name resource with DNS name‘SQLCDB01Temp’online. The DNS name may have been taken or have a conflict with existing name services, or the WSFC cluster service may not be running or may be inaccessible. Use a different DNS name to resolve name conflicts, or check the WSFC cluster log for more information. The attempt to create the network name and IP address for the listener failed. The WSFC service may not be running or may be inaccessible in its current state, or the values provided for the network name and IP address may be incorrect. Check the state of the WSFC duster and validate the network name and IP address with the network administrator. (Microsoft SQL Server, Error: 19471)

参考文章:https://blogs.msdn.microsoft.com/alwaysonpro/2013/10/30/create-availability-group-listener-fails-with-message-19471-the-wsfc-cluster-could-not-bring-the-network-name-resource-online/


总结

通过上面的步骤演示,故障转移集群配置就完成了,希望大家能够看清楚截图,一步一步进行配置,基本上就没有问题了

下一篇正式讲 SQL Server AlwaysOn 搭建了

相关文章

https://msdn.microsoft.com/zh-cn/library/hh270278(v=sql.110).aspx
https://msdn.microsoft.com/zh-cn/library/hh270280(v=sql.110).aspx
https://msdn.microsoft.com/zh-cn/library/hh270279(v=sql.110).aspx
https://msdn.microsoft.com/zh-cn/library/hh270281(v=sql.110).aspx
https://technet.microsoft.com/zh-cn/library/cc731739.aspx
https://technet.microsoft.com/zh-cn/library/cc733130.aspx
https://technet.microsoft.com/zh-cn/library/cc753341.aspx
https://technet.microsoft.com/en-us/library/cc770620(v=ws.10).aspx
https://msdn.microsoft.com/en-us/library/hh270281.aspx

AlwaysOn 是 SQL Server2012 推出的最新的高可用技术,用以取代原有的 SQL Serve 镜像,网上的 AlwaysOn 可以说是非常的多,也可以说是非常的千篇一律,而且很多都是搭建非常顺利的,没有坑的,难道搭建 AlwaysOn 真的可以这麽顺利吗??????

由于公司使用的是最新的 Windows Server 2012 R2,网上用的都是 Windows Server 2008 R2,2012 R2 和 2008 R2 在故障转移集群界面菜单和 AD 服务管理工具

已经有较大变化,有一些步骤跟 Windows Server 2008 R2 可能会不一样。

本文希望能够详细的在 Windows Server 2012 R2 搭建 AlwaysOn 的过程写出来,减少大家踩坑的机会。

实验环境:

准备工作

软件准备

(1)SQL Server 2012 

(2)Windows Server 2012 R2 DataCenter   64

(3)VMware-workstation 10.0

操作系统:都是 Windows Server 2012 R2   DataCenter  64 位(win2012/win2012R2 只有 DataCenter 版本才能使用故障转移集群)

当然,生产环境服务器最好每台服务器都配置两个网卡,一个网卡用作业务,一个网卡用作心跳,当然一个网卡也没有什么问题

至于各个计算机的计算机名我这里不做修改,在真实生产环境计算机名是需要修改的

计算机名

域控:win-felbg10uu7f

node1:win-7107jjj2bcc

node2:win-5pmsdhui0kq

 手把手教你搭建 SQL Server AlwaysOn 图文详解

故障转移集群 VIP 跟 AlwaysOn 的 VIP 的作用是不一样的

故障转移集群 VIP(192.168.66.170)是让你连接故障转移集群管理器的集群用的,而不是让你连接 AlwaysOn 

AlwaysOn 的 VIP(192.168.66.171)是让你连接 AlwaysOn 的

所以故障转移集群 VIP 跟 AlwaysOn 的 VIP 不能一样!


步骤

下面使用 step by step guide 的方式来展示怎麽安装域控

注意:先把各台机器的防火墙关掉。

域控端

1、配置域控 ipipv6 去掉,因为 DNS 服务器就安装在域控上,所以首选 DNS 服务器填写:127.0.0.1 回环地址

手把手教你搭建 SQL Server AlwaysOn 图文详解

2、安装 AD 域服务

手把手教你搭建 SQL Server AlwaysOn 图文详解

 手把手教你搭建 SQL Server AlwaysOn 图文详解

 安装 AD 域服务的同时,操作系统会同时安装好 DNS 服务器

手把手教你搭建 SQL Server AlwaysOn 图文详解

3、点击服务器管理器右上角的小旗帜,弹出对话框,点击“将此服务器提升为域控制器”以提升为域控

手把手教你搭建 SQL Server AlwaysOn 图文详解

4、进入 AD 域服务配置向导,设置域名 abc.com

手把手教你搭建 SQL Server AlwaysOn 图文详解

5、设置 DSRM 密码为123456

默认林中的第一棵域树的根域的域控制器必须担当全局编录服务器和必须安装 DNS 服务,不能是只读域控制器

手把手教你搭建 SQL Server AlwaysOn 图文详解

NetBIOS 名称不需要设置,至于什么是 NetBIOS 名称,可以在本文最后的两本书中进行了解

手把手教你搭建 SQL Server AlwaysOn 图文详解 

AD DS 数据库文件路径保持默认就可以了,当然将日志文件和数据库文件放在不同的磁盘有助提升性能,更多信息可以在本文最后的两本书中进行了解

手把手教你搭建 SQL Server AlwaysOn 图文详解

6、安装完 AD DS 之后会自动重启服务器,重启服务器之后打开DNS 管理器

可以看到域控制器 win-felbg10uu7f.abc.com已经将主机名(win-felbg10uu7f)和 IP 地址(192.168.66.155)注册到 DNS 服务器内

手把手教你搭建 SQL Server AlwaysOn 图文详解

手把手教你搭建 SQL Server AlwaysOn 图文详解

可以看到动态更新已开启

手把手教你搭建 SQL Server AlwaysOn 图文详解

在_tcp文件夹内,_ldap记录和 _gc 记录说明这台服务器已经正确注册为域控制器和担当全局编录服务器

手把手教你搭建 SQL Server AlwaysOn 图文详解

注意:如果在_tcp 文件夹内没有_ldap 记录和_gc 记录相关的记录,那么请重启 Netlogon 服务来重新注册

7、检查 AD 域服务和 Netlogon 服务是否正常启动

手把手教你搭建 SQL Server AlwaysOn 图文详解

手把手教你搭建 SQL Server AlwaysOn 图文详解

8、在 AD 用户和计算机里添加域用户 DCADMIN,请务必记住 DCADMIN 的密码,因为后面第二篇和第三篇都需要用到 DCADMIN 这个域用户

注意:如果域控机器上默认的 Administrator 本地计算机账户没有被禁用的话,在安装完域控之后,Administrator 本地账户会从本地的 SAM 本地账户移动到域账户(这时候本地账户已经不存在 Administrator 这个账户,除非将域控进行降级)

这时候其他非域控机器都可以利用 Administrator 域账户进行登录,但是我们一般不使用 Administrator 域账户,而是新建一个域用户来做,这里就是另外新建一个 DCADMIN 账户

详细可以查看《Windows Server2012 系统配置指南》书

手把手教你搭建 SQL Server AlwaysOn 图文详解

手把手教你搭建 SQL Server AlwaysOn 图文详解

手把手教你搭建 SQL Server AlwaysOn 图文详解

手把手教你搭建 SQL Server AlwaysOn 图文详解

域用户 DCADMIN 创建完毕

手把手教你搭建 SQL Server AlwaysOn 图文详解

9、将这个域用户加入到域计算机组和域管理员组

手把手教你搭建 SQL Server AlwaysOn 图文详解

手把手教你搭建 SQL Server AlwaysOn 图文详解

手把手教你搭建 SQL Server AlwaysOn 图文详解

手把手教你搭建 SQL Server AlwaysOn 图文详解

9、将系统自动更新关闭掉

手把手教你搭建 SQL Server AlwaysOn 图文详解

客户端

1、设置客户端 ipipv6 去掉,注意要设置网关,禁用 TCP/IP 上的 NetBIOS

手把手教你搭建 SQL Server AlwaysOn 图文详解

手把手教你搭建 SQL Server AlwaysOn 图文详解

2、加域,填写域名 abc.com,并 输入刚刚在 AD 域 用户(DCADMIN)和密码

加域之前最好在客户端先 ping 一下 DNS(abc.com)和域控的 IP,看能否 ping 通,如果 ping 不通,加域肯定不成功了,需要进一步排查为什麽 ping 不通

需要先检查一下防火墙,一般都是防火墙的问题

手把手教你搭建 SQL Server AlwaysOn 图文详解

手把手教你搭建 SQL Server AlwaysOn 图文详解

在客户端的网络和共享中心可以看到机器当前已经加入 abc.com 这个域网络

手把手教你搭建 SQL Server AlwaysOn 图文详解

加域之后,在域控的 DNS管理器里能看到新添加的机器的主机和 IP 地址

手把手教你搭建 SQL Server AlwaysOn 图文详解

在 AD用户和计算机里的 Computers 容器里也能看到新添加的机器

手把手教你搭建 SQL Server AlwaysOn 图文详解

3、加域后客户端计算机会自动重启,重启后使用本地 Administrator用户登录计算机,先不要用 DCADMIN 这个域用户来登录计算机

手把手教你搭建 SQL Server AlwaysOn 图文详解

4、打开计算机管理 -》本地用户和组,选择组,选中 Administrators 组,右键 -》添加到组

手把手教你搭建 SQL Server AlwaysOn 图文详解

点击添加

手把手教你搭建 SQL Server AlwaysOn 图文详解

输入域用户(DCADMIN)和密码

手把手教你搭建 SQL Server AlwaysOn 图文详解

手把手教你搭建 SQL Server AlwaysOn 图文详解

这样 DCADMIN 域用户就有了这台客户端计算机的 A dministrator权限

手把手教你搭建 SQL Server AlwaysOn 图文详解

5、将系统自动更新关闭掉

手把手教你搭建 SQL Server AlwaysOn 图文详解

另一台客户端计算机的配置这里就不再叙述了,步骤都是一样的

最后在域控里查看 DNS 和 AD Computers 容器,两个节点都已经添加成功

手把手教你搭建 SQL Server AlwaysOn 图文详解

手把手教你搭建 SQL Server AlwaysOn 图文详解


总结

通过上面的步骤演示,在搭建 AD DS 服务的时候有一些地方是需要注意的,希望大家能够看清楚截图,一步一步进行配置,基本上就没有问题了

现在 AlwaysOn 可用性组已经完全支持 Windows Azure,可以把辅助副本部署到 Windows Azure 上

手把手教你搭建 SQL Server AlwaysOn 图文详解

希望通过这篇文章让大家体会到新一代高可用技术 AlwaysOn 的强大,下一篇是安装并设置故障转移集群

至于 Windows Server 的 AD 域服务的问题可以参考《Windows Server2012 系统配置指南》这本书

地址:http://www.amazon.cn/ 图书 /dp/B00KMQYTD6

 手把手教你搭建 SQL Server AlwaysOn 图文详解

想更深入了解 AD 的可以看这一本书《Windows Server 2012 R2 Active Directory 配置指南》

地址:http://product.china-pub.com/4410540

手把手教你搭建 SQL Server AlwaysOn 图文详解

希望台湾 MVP 戴有炜老师的丰富 Windows Server 方面的知识能给大家带来更多帮助

操作系统的注意事项,硬件配置、软件配置、故障转移集群都在上面两本书有介绍

参考文章

AlwaysON – HADRON Learning Series: – How does AlwaysON Process a Synchronous Commit Request
https://blogs.msdn.microsoft.com/psssql/2011/04/01/alwayson-hadron-learning-series-how-does-alwayson-process-a-synchronous-commit-request/


2016-9-10 补充

在开始本文的操作之前,大家需要留意主副本机器和各个辅助副本机器的扇区是否一致,如果扇区不一致,或者环境不一样有可能导致同步慢或 IP 冲突问题

alwayson 搭建了也白搭

在服务器上运行下面命令,D 盘为 SQL Server 数据文件,日志文件所在盘符

fsutil fsinfo ntfsInfo  D:

手把手教你搭建 SQL Server AlwaysOn 图文详解

如果每个扇区字节数和每个物理扇区字节数这两个值,各个副本显示不同,那么最好不要搭建 AlwaysOn

在副本上每个扇区字节数显示 512,每个物理扇区字节数显示 512

在辅助副本上每个扇区字节数显示 512,每个物理扇区字节数显示 512

这样是没有问题的

或者

在副本上每个扇区字节数显示 512,每个物理扇区字节数显示 4096

在辅助副本上每个扇区字节数显示 512,每个物理扇区字节数显示 512

这样也是没有问题的

或者

在副本上每个扇区字节数显示 512,每个物理扇区字节数显示 512

在辅助副本上每个扇区字节数显示 512,每个物理扇区字节数显示 4096

这样是有问题的

NTFS 对于大于 2GB 的分区,默认簇大小为 8 个扇区(4KB),分配单元默认是 4096 字节是因为内存页是 4kb
簇 = 分配单元 windows7 默认呢的分配单元是 4096 字节,那么一个 6000 字节的文件就需要两个分配单元,分配单元是 windows 读写文件的基本单位
逻辑扇区:512 字节,操作系统将分配单元的读写请求划分为多个 512 字节大小,然后写入到磁盘,其实就是操作系统做了一层转换
物理扇区:512,物理磁盘读写的基本单位,旧磁盘是 512 字节,新磁盘是 4kb
高级格式化:操作系统对盘符进行格式化,按照分配单元大小
低级格式化:磁盘厂家对磁盘做的低级格式化,按照 512 字节大小

由于新磁盘使用了 4kb 字节大小,某些操作系统和应用程序无法适应,所以磁盘厂家退出了 512E 格式,对磁盘增加了一个模拟层,底层是 4kb,模拟层是 512 字节
操作系统对磁盘的读写依然是 512 字节,这样厂家推出的新磁盘就可以向下兼容旧操作系统,因为是模拟出来的,所以名字叫  512-byte Emulation 或 512e
最新操作系统例如 win2012 已经可以支持 4kb 磁盘,所以使用命令 fsutil fsinfo ntfsInfo D: 的时候,如果每扇区和每物理扇区都显示为 4096,那么表示
磁盘使用的是最新的支持 4kb 磁盘,win2012 操作系统对物理扇区进行了对齐,逻辑扇区是 4096,物理扇区是 4096,就是原生 4K 模式,所以名字叫 4K native 或 4Kn

参考文章:
https://support.microsoft.com/en-us/kb/2510009
http://stackoverflow.com/questions/9465451/how-can-i-determine-the-sector-size-in-windows
https://blogs.msdn.microsoft.com/psssql/2011/01/13/sql-server-new-drives-use-4k-sector-size/
https://msdn.microsoft.com/en-us/library/windows/desktop/hh848035%28v=vs.85%29.aspx?f=255&MSPPError=-2147217396
http://ask.zol.com.cn/q/16407.html
http://www.cnblogs.com/diabloxl/p/4422120.html

手把手教你搭建 SQL Server AlwaysOn 图文详解

手把手教你搭建 SQL Server AlwaysOn 图文详解

手把手教你搭建 SQL Server AlwaysOn 图文详解

手把手教你搭建 SQL Server AlwaysOn 图文详解

解决办法:通过 fusionIO 或者一些 SSD 磁盘的管理界面修改磁盘的参数

例如惠普的 fusionIO,进去管理界面,将 4KB 扇区大小改为 512 字节

手把手教你搭建 SQL Server AlwaysOn 图文详解

修改为

手把手教你搭建 SQL Server AlwaysOn 图文详解

估计 Hyper- V 是无法修改磁盘的物理扇区大小,那如果使用 Hyper- v 就只能所有副本都用 Hyper-V,而不能有些副本使用物理机,有些副本使用 Hyper- V 跑在虚拟机里面

京东 IO 卡为第一代产品,与目前最新采购的第三代产品
第一代产品为 512 字节,第三代产品为 4KB
Node_A:第一代产品
Node_B:第三代产品

由于格式化磁盘的时候可以选择分配单元 512 字节~64KB,所以 log block 要适应文件系统的分配单元否则不能原子写入磁盘

手把手教你搭建 SQL Server AlwaysOn 图文详解

手把手教你搭建 SQL Server AlwaysOn 图文详解

https://blogs.msdn.microsoft.com/psssql/2013/05/15/sql-serverstorage-spacesvhdx-and-4k-sector-size/
Is this safe for SQL Server?

The answer is yes.  An I/O subsystem can return a larger sector size than actual, physical sector size as long as all reported values can be evenly divided by 512 bytes.
4096 的块只要能被 512 整除就无问题
As the diagram below shows, SQL Server maintains parity on 512 byte boundaries, for the log, regardless of the reported sector size.  This allows SQL Server to detect a partial write (torn behavior.)  For example, if the system reported a sector size of 4K but the physical sector size was 512 bytes, the I/O subsystem is only guaranteed to flush to a 512 byte mark.  If the first 4, physical sectors are flushed (2K of the 4K aligned block) and a power outage occurs, SQL Server will be able to detect the entire 4K was not properly flushed.

Microsoft SQL Server IO Internals ppt 下载地址

到 Linux 公社资源站下载:

—————————————— 分割线 ——————————————

免费下载地址在 http://linux.linuxidc.com/

用户名与密码都是www.linuxidc.com

具体下载目录在 /2017 年资料 / 1 月 /21 日 / 手把手教你搭建 SQL Server AlwaysOn 图文详解 /

下载方法见 http://www.linuxidc.com/Linux/2013-07/87684.htm

—————————————— 分割线 ——————————————

更多详情见请继续阅读下一页的精彩内容:http://www.linuxidc.com/Linux/2017-01/139766p2.htm

这一篇是手把手教你搭建 SQL Server AlwaysOn 图文详解的第三篇,这一篇才真正开始搭建 AlwaysOn,前两篇是为搭建 AlwaysOn 做准备的


步骤

这一篇依然使用 step by step 的方式介绍怎麽搭建 AlwaysOn

请先使用本地用户 Administrator 登录这两个集群节点并执行下面的操作,先不要用域用户 DCADMIN 登录

手把手教你搭建 SQL Server AlwaysOn 图文详解

1、两个集群节点都需先安装.NET Framework 3.5(在 Windows Server 2012 R2 中使用添加功能来安装)。

手把手教你搭建 SQL Server AlwaysOn 图文详解

手把手教你搭建 SQL Server AlwaysOn 图文详解

手把手教你搭建 SQL Server AlwaysOn 图文详解

2、各个集群节点本地都要准备好相关软件,在各个节点上独立安装 SQL Server 2012(不能使用群集方式安装),保证各个节点中使用相同的安装目录结构和排序规则!

 手把手教你搭建 SQL Server AlwaysOn 图文详解

 选择全新 SQL Server 独立安装,不要选择新的 SQL Server 故障转移集群安装

 手把手教你搭建 SQL Server AlwaysOn 图文详解

至于安装过程,默认下一步下一步就可以了,跟单机安装 SQL Server 没有区别,这里就忽略安装过程了

手把手教你搭建 SQL Server AlwaysOn 图文详解

注意:因为本人的安装包已经 自带 SP1 补丁包,为了后续避免踩坑,如果没有安装 SP1 或以上补丁包的,请先安装

手把手教你搭建 SQL Server AlwaysOn 图文详解

注意:如果一开始使用域用户 DCADMIN 来登录集群节点机器,并安装 SQL Server 的时候会遇到一个坑,SQL Server 安装程序会连接故障转移集群,但是实际上单机安装 SQL Server 根本不需要连接故障转移集群

手把手教你搭建 SQL Server AlwaysOn 图文详解

手把手教你搭建 SQL Server AlwaysOn 图文详解

本人排查了很久都找不到原因,为什么 SQL Server 安装程序会连接故障转移集群,下面是 SQL Server 安装日志

手把手教你搭建 SQL Server AlwaysOn 图文详解

手把手教你搭建 SQL Server AlwaysOn 图文详解

如果一开始就使用集群节点本地用户 Administrator 登录来安装 SQL Server 就 不会踩到这个坑

3、注销集群节点计算机,然后使用域用户 DCADMIN 登录,然后设置 SQL Server 的启动账户为域用户 DCADMIN

手把手教你搭建 SQL Server AlwaysOn 图文详解

打开服务管理器,先修改 SQL 代理的启动账户为域用户 DCADMIN,然后再修改 SQL 引擎的启动账户为域用户 DCADMIN

手把手教你搭建 SQL Server AlwaysOn 图文详解

点击“位置”,修改查找位置,选中 abc.com
手把手教你搭建 SQL Server AlwaysOn 图文详解

点击“高级”

手把手教你搭建 SQL Server AlwaysOn 图文详解

点击“立即查找”,选中 DCADMIN

手把手教你搭建 SQL Server AlwaysOn 图文详解

手把手教你搭建 SQL Server AlwaysOn 图文详解

点击“确定”

输入域用户 DCADMIN 的密码

手把手教你搭建 SQL Server AlwaysOn 图文详解

重启一下 SQL 代理服务

手把手教你搭建 SQL Server AlwaysOn 图文详解

 重启之后可以看到登录用户为 DCADMIN@abc.com

手把手教你搭建 SQL Server AlwaysOn 图文详解

同样,SQL 引擎服务也需要同样的设置

手把手教你搭建 SQL Server AlwaysOn 图文详解

这样,SQL 引擎服务和 SQL 代理服务都用域用户 DCADMIN 启动

另一个集群节点的 SQL Server 也需要做同样的操作

注意:在集群节点脱离域之后,SQL 引擎服务和 SQL 代理服务都要用本地服务帐号来启动,不能再用域用户来启动

4、将 DCADMIN 域用户加入到两个集群节点的 SQL Server 登录用户中,服务器角色选择 sysadmin

先用 sa 登录 SQL Server

手把手教你搭建 SQL Server AlwaysOn 图文详解

添加登录用户,跟 SQL 服务添加启动账户的步骤一样,将 DCADMIN 域用户添加为登录用户

手把手教你搭建 SQL Server AlwaysOn 图文详解

手把手教你搭建 SQL Server AlwaysOn 图文详解

 手把手教你搭建 SQL Server AlwaysOn 图文详解

 给予 sysadmin 权限

手把手教你搭建 SQL Server AlwaysOn 图文详解

两个集群节点都可以用 DCADMIN 域用户来登录 SQL Server

手把手教你搭建 SQL Server AlwaysOn 图文详解

手把手教你搭建 SQL Server AlwaysOn 图文详解

5、回到 SQL Server 配置管理器,启用 AlwaysOn 可用性组

手把手教你搭建 SQL Server AlwaysOn 图文详解

手把手教你搭建 SQL Server AlwaysOn 图文详解

注意:集群节点一定要能进行通信,如果集群节点之间断开通信,那么启用 AlwaysOn 的时候会报错

手把手教你搭建 SQL Server AlwaysOn 图文详解

重启 SQL Server

手把手教你搭建 SQL Server AlwaysOn 图文详解

如果 AlwaysOn 启用成功,在服务器属性里可以看到启用 HADR 为 True

手把手教你搭建 SQL Server AlwaysOn 图文详解

手把手教你搭建 SQL Server AlwaysOn 图文详解

6、在其中一个集群节点的 SQL Server 中验证各节点的投票数,在其中一个集群节点的 SQL Server 上执行
使用下面 SQL 语句

SELECT * FROM  sys.dm_hadr_cluster_members;

手把手教你搭建 SQL Server AlwaysOn 图文详解

SELECT * FROM SYS.[dm_hadr_cluster]

手把手教你搭建 SQL Server AlwaysOn 图文详解

7、再次确保各节点已经关闭防火墙,如果防火墙没有关闭,那么在创建可用性组的时候会弹出下面错误

无法将数据库“test”联接到可用性副本“xxx”的可用性组“xx”

针对主副本的连接未处于活动状态。无法处理该命令(错误:35250)

手把手教你搭建 SQL Server AlwaysOn 图文详解

手把手教你搭建 SQL Server AlwaysOn 图文详解

8、我们使用自行初始化数据库的方式,所以这一步需要新建一个测试库和测试表并插入一些测试数据(这些动作就不演示了),然后对数据库做一个完整备份 和 日志备份

然后把完整备份文件和日志备份文件搬到 WIN-5PMSDHUI0KQ 机器上依次进行还原,完整备份 -》还原完整备份 -》日志备份 -》还原日志备份
脚本

手把手教你搭建 SQL Server AlwaysOn 图文详解
--在 win-7107jjj2bcc 上执行
CREATE DATABASE [test]

USE [test]
CREATE TABLE [test1]([id] INT,[name] VARCHAR(100))
INSERT INTO [test1] SELECT 1,'test'
手把手教你搭建 SQL Server AlwaysOn 图文详解
手把手教你搭建 SQL Server AlwaysOn 图文详解
--在 win-7107jjj2bcc 上执行
DECLARE @CurrentTime VARCHAR(50), @FileName VARCHAR(200)
SET @CurrentTime = REPLACE(REPLACE(REPLACE(CONVERT(VARCHAR, GETDATE(), 120 ),'-','_'),' ','_'),':','')

        
--(test 数据库完整备份)
SET @FileName = 'c:\DBBackup\test_FullBackup_' + @CurrentTime+'.bak'
BACKUP DATABASE [test]
TO DISK=@FileName WITH FORMAT ,COMPRESSION


  --(test 数据库日志备份) 
SET @FileName = 'c:\DBBackup\test_logBackup_' + @CurrentTime+'.bak'
BACKUP log [test]
TO DISK=@FileName WITH FORMAT ,COMPRESSION
手把手教你搭建 SQL Server AlwaysOn 图文详解
手把手教你搭建 SQL Server AlwaysOn 图文详解
--在 WIN-5PMSDHUI0KQ 上执行

USE [master]
RESTORE DATABASE [test] FROM  DISK = N'C:\DBBackup\test_FullBackup_2015_07_30_093949.bak' WITH  FILE = 1, 
MOVE N'test' TO N'C:\Program Files\Microsoft SQL Server\MSSQL11.MSSQLSERVER\MSSQL\DATA\test.mdf', 
MOVE N'test_log' TO N'C:\Program Files\Microsoft SQL Server\MSSQL11.MSSQLSERVER\MSSQL\DATA\test_log.ldf', 
NOUNLOAD,NORECOVERY,  REPLACE,  STATS = 5

GO





--注意一定要用 NORECOVERY 来还原备份
USE [master]
RESTORE DATABASE [test] FROM  DISK = N'C:\DBBackup\test_logBackup_2015_07_30_105949.bak' WITH  FILE = 1, 
NOUNLOAD,NORECOVERY,  REPLACE,  STATS = 5

GO
手把手教你搭建 SQL Server AlwaysOn 图文详解

自行初始化数据库的好处是:如果我们的辅助副本是跨机房的我们都可以控制初始化的时间,也就是备份和还原的时间,不需要 SQL Server 来帮我们备份还原数据库

在 WIN-5PMSDHUI0KQ 上还原日志备份之后的样子

手把手教你搭建 SQL Server AlwaysOn 图文详解

9、在“Alwayson 高可用性”节点上右键选择“新建可用性组向导

注意:加入到 AlwaysOn 可用性组的数据库必须符合下面要求

(1)数据库的恢复模式必须是“完整”恢复模式

(2)数据库已进行了一次完整备份

(3)需要是用户库,系统库不能加入可用性组

(4)数据库可以读写,只读库不能加入到可用性组

(5)数据库处于多用户模式

(6)数据库没有使用 AUTO_CLOSE

(7)不属于任何其他的可用性组

(8)数据库没有配置数据库镜像

一个可用性组最大支持 100 个数据库

手把手教你搭建 SQL Server AlwaysOn 图文详解

手把手教你搭建 SQL Server AlwaysOn 图文详解

10、点击“下一步”,输入一个从未使用过的高可用性组名称 testAG

 手把手教你搭建 SQL Server AlwaysOn 图文详解

11、点击下一步,选择要添加的数据库

手把手教你搭建 SQL Server AlwaysOn 图文详解

12、点击“下一步”,使用添加副本来将其他节点添加到可用性组中,并选择自动故障转移节点和同步提交节点,因为我们只有两个节点

手把手教你搭建 SQL Server AlwaysOn 图文详解

我们将辅助副本设置为可读,能够自动故障转移,同步提交模式

手把手教你搭建 SQL Server AlwaysOn 图文详解

13、点击“端点”tab 页面设置端点

手把手教你搭建 SQL Server AlwaysOn 图文详解

手把手教你搭建 SQL Server AlwaysOn 图文详解

注意:端点 URL 使用 IP 的方式,不要用 FQDN 长名的方式,因为服务器通常会有两个网卡,一个 public 网卡,一个 private 网卡,端点建议使用 private 网卡地址

这样在端点直接传送的数据就会经由 private 网卡来传送,使用TCP://test.abc.com:5022 这种 FQDN 长名的方式是不能保证端点数据通过 private 网卡来传送

SQL Server 服务账户使用域用户 DCADMIN 来进行身份验证,避免使用证书的方式

14、“备份首选项”和“侦听器”不需要设置,保持默认就行,可用性侦听器我们后面再添加,可以直接点击“下一步”

手把手教你搭建 SQL Server AlwaysOn 图文详解

点击“是”

15、选择初始数据同步,这里选择“仅联接”模式

手把手教你搭建 SQL Server AlwaysOn 图文详解

 16、点击“下一步”来验证配置,对应侦听器配置警告可以忽略,后期来添加侦听器

因为使用的是“仅联接”数据库初始化方式,验证跳过像可用磁盘空间这样的检查

 手把手教你搭建 SQL Server AlwaysOn 图文详解

17、点击“下一步”来检查并确认之前的配置信息,若无误,点击“完成”。另外,此处也可保存建立可用性组脚本,以便分步诊断故障之用。

 手把手教你搭建 SQL Server AlwaysOn 图文详解

18、所有摘要均成功完成,显示绿色对勾。如果出现黄色警告,则需进行进一步判断是否成功。若出现红色错误,表示 AG 创建不成功

手把手教你搭建 SQL Server AlwaysOn 图文详解

手把手教你搭建 SQL Server AlwaysOn 图文详解

注意:如果大家使用奇数集群节点,并且仲裁配置使用的是节点多数,那么在创建可用性组完毕的时候,WSFC 仲裁投票配置会显示警告

点击警告链接会弹出下面的对话框,这个警告其实可以不用理会

 手把手教你搭建 SQL Server AlwaysOn 图文详解

手把手教你搭建 SQL Server AlwaysOn 图文详解

19、查看服务器和数据库的变化

主副本

数据库变为已同步

手把手教你搭建 SQL Server AlwaysOn 图文详解

辅助副本

辅助副本这时候是可读的,在主副本上对 test1 表做的更改都能同步到辅助副本上的 test1

手把手教你搭建 SQL Server AlwaysOn 图文详解

再看一下故障转移集群管理器

可用性组变为一个集群角色

手把手教你搭建 SQL Server AlwaysOn 图文详解

 手把手教你搭建 SQL Server AlwaysOn 图文详解

点击显示面板可以显示可用性面板

手把手教你搭建 SQL Server AlwaysOn 图文详解

手把手教你搭建 SQL Server AlwaysOn 图文详解

手把手教你搭建 SQL Server AlwaysOn 图文详解

20、在创建可用性组后,在“可用性组侦听器”上右键添加侦听器来创建侦听器,选择静态 IP 的网络模式(尽量不要选择 DHCP 网络模式),

输入一个从未使用过的名称(该名称将被用来创建网络名称资源)和访问端口

手把手教你搭建 SQL Server AlwaysOn 图文详解

手把手教你搭建 SQL Server AlwaysOn 图文详解

点击确定

手把手教你搭建 SQL Server AlwaysOn 图文详解

创建成功

手把手教你搭建 SQL Server AlwaysOn 图文详解

在域控的 DNS 管理器上会注册一条 A 记录

手把手教你搭建 SQL Server AlwaysOn 图文详解

AD 里的 Computers 容器里会添加一个故障转移集群虚拟网络名称账户

手把手教你搭建 SQL Server AlwaysOn 图文详解

在故障转移集群管理器里的角色节点,可以看到客户端访问名称和 IP 地址,客户端通过这个访问名称进行访问数据库

手把手教你搭建 SQL Server AlwaysOn 图文详解

手把手教你搭建 SQL Server AlwaysOn 图文详解

使用侦听器名称进行登录 SQL Server

手把手教你搭建 SQL Server AlwaysOn 图文详解

手把手教你搭建 SQL Server AlwaysOn 图文详解

当然也可以用 listener IP 来连接SQL Server

手把手教你搭建 SQL Server AlwaysOn 图文详解

手把手教你搭建 SQL Server AlwaysOn 图文详解

在辅助副本添加登录用户,让主副本上的登录用户也可以读取辅助副本数据
步骤 1:查看主库上该账号的 sid [test]为库名
SELECT * FROM [test]..sySUSErs
比如:dalogin 0x99AD266AFD26F841B3E49EF9633B0D4B

步骤 2:在副本数据库上创建对应账号,其中 sid 对应的值是主库上所查到的 sid 的值
CREATE LOGIN [dalogin] WITH PASSWORD=N’xxxxxxx’,
SID =0x99AD266AFD26F841B3E49EF9633B0D4B, DEFAULT_DATABASE=[test],
 CHECK_EXPIRATION=OFF, CHECK_POLICY=OFF

报表账号设置
在主副本中,执行:
use 库名
go
grant exec to 报表账号连接所用的用户


可用性组的基本管理

注意:尽量用 SSMSUITSQL 语句来操作可用性组,不要用故障转移集群管理器来操

故障转移

首先使用 侦听器名称来登录 SQL Server,查看当前是在主副本是在哪个机器

手把手教你搭建 SQL Server AlwaysOn 图文详解

手动故障转移

选中 testAG 这个可用性组,右键》故障转移

手把手教你搭建 SQL Server AlwaysOn 图文详解

手把手教你搭建 SQL Server AlwaysOn 图文详解

点击“下一步”

手把手教你搭建 SQL Server AlwaysOn 图文详解

点击“下一步”

手把手教你搭建 SQL Server AlwaysOn 图文详解

连接到 WIN-5PMSDHUIOKQ这台辅助副本机器

手把手教你搭建 SQL Server AlwaysOn 图文详解

手把手教你搭建 SQL Server AlwaysOn 图文详解

点击“完成”

手把手教你搭建 SQL Server AlwaysOn 图文详解

开始进行故障转移

手把手教你搭建 SQL Server AlwaysOn 图文详解

手把手教你搭建 SQL Server AlwaysOn 图文详解

再一次执行查询

手把手教你搭建 SQL Server AlwaysOn 图文详解

已经故障转移到 WIN-5PMSDHUIOKQ 这台机

查看一下 testAG 可用性组的属性

手把手教你搭建 SQL Server AlwaysOn 图文详解

手把手教你搭建 SQL Server AlwaysOn 图文详解

执行下面 SQL 语句,将 WIN-7107JJJ2BCC 机器设置为可读副本

USE [master]
GO
ALTER AVAILABILITY GROUP [testAG]
MODIFY REPLICA ON N'WIN-7107JJJ2BCC' WITH (SECONDARY_ROLE(ALLOW_CONNECTIONS = ALL))
GO

执行下面 SQL 语句测试一下

在当前主副本执行

insert into test1 select 3, 'test3'

手把手教你搭建 SQL Server AlwaysOn 图文详解

可以看到数据已经同步过来 WIN-7107JJJ2BCC 机器,并且数据库可读

可读辅助副本是只读的,如果要对它进行数据更改则会报错

print 'servername: '+@@SERVERNAME 


insert into [test].[dbo].[test1] select 4, 'test4'

手把手教你搭建 SQL Server AlwaysOn 图文详解

AlwaysOn 相关视图

--通过这两个视图可以查询 AlwaysOn 延迟
SELECT  b.replica_server_name ,
        a.*
FROM    sys.dm_hadr_database_replica_states a
        INNER JOIN sys.availability_replicas b ON a.replica_id = b.replica_id 

--可用性组所在 Windows 故障转移集群
SELECT * FROM sys.dm_hadr_cluster;
SELECT * FROM sys.dm_hadr_cluster_members ;
SELECT * FROM sys.dm_hadr_cluster_networks;
SELECT * FROM sys.dm_hadr_instance_node_map;
SELECT * FROM sys.dm_hadr_name_id_map

--可用性组
SELECT * FROM sys.availability_groups;
SELECT * FROM sys.availability_groups_cluster;
SELECT * FROM sys.dm_hadr_availability_group_states ;

--可用性副本
SELECT * FROM sys.availability_replicas;
SELECT * FROM sys.[availability_read_only_routing_lists]
SELECT * FROM sys.dm_hadr_availability_replica_cluster_nodes;
SELECT * FROM sys.[dm_hadr_availability_replica_cluster_states]
SELECT * FROM sys.[dm_hadr_availability_replica_states]

--可用性数据库
SELECT * FROM sys.availability_databases_cluster;
SELECT * FROM sys.dm_hadr_database_replica_cluster_states;
SELECT * FROM sys.[dm_hadr_auto_page_repair]
SELECT * FROM sys.[dm_hadr_database_replica_states]

--可用性组 listener
SELECT * FROM sys.availability_group_listener_ip_addresses;
SELECT * FROM sys.availability_group_listeners;
SELECT * FROM sys.dm_tcp_listener_states;



--添加只读路由列表
ALTER AVAILABILITY GROUP [agtest2]
MODIFY REPLICA ON N'WIN-5PMSDHUI0KQ' WITH (SECONDARY_ROLE(ALLOW_CONNECTIONS= READ_ONLY));


ALTER AVAILABILITY GROUP [agtest2]
modify REPLICA ON N'WIN-5PMSDHUI0KQ' WITH (SECONDARY_ROLE(READ_ONLY_ROUTING_URL=N'TCP://192.168.66.157:1433'))

ALTER AVAILABILITY GROUP [agtest2]
MODIFY REPLICA ON N'WIN-4AE61RVA6UV' WITH (SECONDARY_ROLE(ALLOW_CONNECTIONS= READ_ONLY));

ALTER AVAILABILITY GROUP [agtest2]
modify REPLICA ON N'WIN-4AE61RVA6UV' WITH (SECONDARY_ROLE(READ_ONLY_ROUTING_URL=N'TCP://192.168.66.158:1433'))
 

总结

AlwaysOn 搭建步骤就介绍到这里,希望大家跟着我来体验一下 AlwaysOn 的强大

同样的,添加一个辅助副本的操作:加域、加入故障转移集群、更改仲裁配置、添加辅助副本 

按照文章的来操作相信添加辅助副本也不难

还有一个就是遇到问题多看看 SQL Server errorlog 和 WSFC 的事件日志

手把手教你搭建 SQL Server AlwaysOn 图文详解

手把手教你搭建 SQL Server AlwaysOn 图文详解

对于更多信息可以参考《SQL Server 2012 实施与管理实战指南》书本 PDF 下载见 http://www.linuxidc.com/Linux/2016-01/127450.htm

地址:

相关文章

http://www.linuxidc.com/Linux/2017-01/139768.htm

http://www.linuxidc.com/Linux/2017-01/139769.htm

http://www.linuxidc.com/Linux/2017-01/139770.htm

http://blogs.msdn.com/b/psssql/archive/2012/09/07/how-it-works-sql-server-alwayson-lease-timeout.aspx

http://blogs.msdn.com/b/alwaysonpro/archive/2014/11/26/diagnose-unexpected-failover-or-availability-group-in-resolving-state.aspx

https://msdn.microsoft.com/zh-cn/library/ff878308%28v=sql.120%29.aspx?f=255&MSPPError=-2147217396

 http://www.linuxidc.com/Linux/2017-01/139771.htm 创建了一个弱事件,但它位于错误对象上 下载补丁解决 (https://www.microsoft.com/en-us/download/details.aspx?id=36468)

http://blogs.msdn.com/b/alwaysonpro/archive/2013/10/30/errors-while-trying-to-create-an-availability-group-listener.aspx  19471 错误

创建侦听器错误 19471,19476 问题
http://blogs.msdn.com/b/alwaysonpro/archive/2013/10/30/errors-while-trying-to-create-an-availability-group-listener.aspx
http://blogs.msdn.com/b/alwaysonpro/archive/2014/03/25/create-listener-fails-with-message-the-wsfc-cluster-could-not-bring-the-network-name-resource-online.aspx

如有不对的地方,欢迎大家拍砖 o(∩_∩)o 

2015-11-13 补充

手把手教你搭建 SQL Server AlwaysOn 图文详解

两个节点的 AlwaysOn,用共享文件夹做见证磁盘

当自动故障切换的时候,有时候出现,辅助副本正在解析的现象,之前以为是仲裁丢失(WSFC 与文件共享见证失去联系),导致 WSFC 挂掉,后来发现原因是 WSFC 控制面板里的角色属性里面的最大故障数的问题而导致的

推荐将指定时段内的最大故障数设置为 10 

手把手教你搭建 SQL Server AlwaysOn 图文详解

手把手教你搭建 SQL Server AlwaysOn 图文详解

手把手教你搭建 SQL Server AlwaysOn 图文详解

LogDate    ProcessInfo    Text
2015-11-13 15:28:56.140    spid46s    State information for database 'test' - Hardended Lsn: '(36:424:1)'    Commit LSN: '(36:408:1)'    Commit Time: 'Nov 13 2015  3:26PM'
2015-11-13 15:28:56.140    spid46s    The availability group database "test" is changing roles from "SECONDARY" to "RESOLVING" because the mirroring session or availability group failed over due to role synchronization. This is an informational message only. No user action is required.
2015-11-13 15:28:56.140    spid48s    AlwaysOn Availability Groups connection with primary database terminated for secondary database 'test' on the availability replica 'NODE1' with Replica ID: {40bfe7bb-407e-46a3-911b-147a468abedf}. This is an informational message only. No user action is required.

----------------------------------------------------------------
2015-11-13 15:28:56.140    spid29s    The state of the local availability replica in availability group 'testAG' has changed from 'SECONDARY_NORMAL' to 'RESOLVING_NORMAL'.  The state changed because the availability group state has changed in Windows Server Failover Clustering (WSFC).  For more information, see the SQL Server error log, Windows Server Failover Clustering (WSFC) management console, or WSFC log.
2015-11-13 15:28:56.140    spid29s    AlwaysOn: The local replica of availability group 'testAG' is going offline because the corresponding resource in the Windows Server Failover Clustering (WSFC) cluster is no longer online. This is an informational message only. No user action is required.
-----------------------------------------------------------------


2015-11-13 15:26:46.160    spid48s    The recovery LSN (36:336:1) was identified for the database with ID 7. This is an informational message only. No user action is required.
2015-11-13 15:26:46.160    spid48s    Error: 35285, Severity: 16, State: 1.
2015-11-13 15:26:46.160    spid48s    AlwaysOn Availability Groups connection with primary database established for secondary database 'test' on the availability replica 'NODE1' with Replica ID: {40bfe7bb-407e-46a3-911b-147a468abedf}. This is an informational message only. No user action is required.
2015-11-13 15:26:46.150    spid48s    The recovery LSN (36:336:1) was identified for the database with ID 7. This is an informational message only. No user action is required.
2015-11-13 15:26:46.150    spid48s    Error: 35285, Severity: 16, State: 1.
2015-11-13 15:26:46.140    spid48s    AlwaysOn Availability Groups connection with primary database established for secondary database 'test' on the availability replica 'NODE1' with Replica ID: {40bfe7bb-407e-46a3-911b-147a468abedf}. This is an informational message only. No user action is required.
2015-11-13 15:26:42.610    spid46s    A connection for availability group 'testAG' from availability replica 'NODE2' with id  [4F4BAEC0-1FB9-4CB3-829A-85C35D8A06D4] to 'NODE1' with id [40BFE7BB-407E-46A3-911B-147A468ABEDF] has been successfully established.  This is an informational message only. No user action is required.
2015-11-13 15:26:42.110    spid46s    State information for database 'test' - Hardended Lsn: '(36:336:1)'    Commit LSN: '(36:320:21)'    Commit Time: 'Nov 13 2015  3:13PM'
2015-11-13 15:26:42.110    spid46s    The availability group database "test" is changing roles from "RESOLVING" to "SECONDARY" because the mirroring session or availability group failed over due to role synchronization. This is an informational message only. No user action is required.
2015-11-13 15:26:42.080    spid29s    The state of the local availability replica in availability group 'testAG' has changed from 'RESOLVING_NORMAL' to 'SECONDARY_NORMAL'.  The state changed because the availability group state has changed in Windows Server Failover Clustering (WSFC).  For more information, see the SQL Server error log, Windows Server Failover Clustering (WSFC) management console, or WSFC log.
2015-11-13 15:15:53.960    spid43s    State information for database 'test' - Hardended Lsn: '(36:336:1)'    Commit LSN: '(36:320:21)'    Commit Time: 'Nov 13 2015  3:13PM'
2015-11-13 15:15:53.960    spid43s    The availability group database "test" is changing roles from "SECONDARY" to "RESOLVING" because the mirroring session or availability group failed over due to role synchronization. This is an informational message only. No user action is required.
2015-11-13 15:15:53.950    spid30s    AlwaysOn Availability Groups connection with primary database terminated for secondary database 'test' on the availability replica 'NODE1' with Replica ID: {40bfe7bb-407e-46a3-911b-147a468abedf}. This is an informational message only. No user action is required.
2015-11-13 15:15:53.950    spid29s    The state of the local availability replica in availability group 'testAG' has changed from 'SECONDARY_NORMAL' to 'RESOLVING_NORMAL'.  The state changed because the availability group state has changed in Windows Server Failover Clustering (WSFC).  For more information, see the SQL Server error log, Windows Server Failover Clustering (WSFC) management console, or WSFC log.
2015-11-13 15:15:53.950    spid29s    AlwaysOn: The local replica of availability group 'testAG' is going offline because the corresponding resource in the Windows Server Failover Clustering (WSFC) cluster is no longer online. This is an informational message only. No user action is required.
2015-11-13 15:14:47.610    spid23s    The recovery LSN (36:328:2) was identified for the database with ID 7. This is an informational message only. No user action is required.
2015-11-13 15:14:47.610    spid23s    Error: 35285, Severity: 16, State: 1.
2015-11-13 15:14:47.600    spid23s    AlwaysOn Availability Groups connection with primary database established for secondary database 'test' on the availability replica 'NODE1' with Replica ID: {40bfe7bb-407e-46a3-911b-147a468abedf}. This is an informational message only. No user action is required.
2015-11-13 15:14:47.600    spid30s    1 transactions rolled forward in database 'test' (7:0). This is an informational message only. No user action is required.
2015-11-13 15:14:47.600    spid30s    The recovery LSN (36:328:2) was identified for the database with ID 7. This is an informational message only. No user action is required.
2015-11-13 15:14:47.600    spid30s    Error: 35285, Severity: 16, State: 1.
2015-11-13 15:14:47.590    spid30s    AlwaysOn Availability Groups connection with primary database established for secondary database 'test' on the availability replica 'NODE1' with Replica ID: {40bfe7bb-407e-46a3-911b-147a468abedf}. This is an informational message only. No user action is required.
2015-11-13 15:14:47.550    spid30s    Starting up database 'test'.
2015-11-13 15:14:47.550    spid30s    State information for database 'test' - Hardended Lsn: '(36:328:1)'    Commit LSN: '(0:0:0)'    Commit Time: 'Jan  1 1900 12:00AM'

View Code

2015-12- 9 补充

卸载集群

1、先逐个逐出节点

手把手教你搭建 SQL Server AlwaysOn 图文详解

2销毁集群,集群最后一个节点不能逐出只能销毁集群,有两种方法,1 用命令  2 在界面上右键 -》销毁集群

方法一:集群 node(随便一个集群node)上执行下面命令,不能在DC 上执行,因为 DC 没有安装故障转移集群,sqltestdemo1 为集群名,方法一删除得彻底一点

Get-Cluster sqltestdemo1 | Remove-Cluster -Force -CleanupAD

方法二:集群 -》更多操作 -》销毁集群

手把手教你搭建 SQL Server AlwaysOn 图文详解

3、销毁集群后在每个集群上的 powershell 里运行下面命令,以清除一些垃圾

Clear-ClusterNode

手把手教你搭建 SQL Server AlwaysOn 图文详解

4、在域控的 AD 用户和计算机界面里面把集群虚拟名称删除掉

手把手教你搭建 SQL Server AlwaysOn 图文详解

5、重新启用和禁用 alwayson,在 alwayson 的各个节点上都要操作一遍

手把手教你搭建 SQL Server AlwaysOn 图文详解

删除可用性组

1、删除辅助副本

USE [master]
GO
ALTER AVAILABILITY GROUP [HAGroup01]
REMOVE REPLICA ON N'SQLSVR2';
GO

2、删除可用性数据库

USE [master]
GO
ALTER AVAILABILITY GROUP [HAGroup01]
REMOVE DATABASE [SQLDB02];
GO

3、删除侦听器

USE [master]
GO
ALTER AVAILABILITY GROUP [HAGroup01]
REMOVE LISTENER N'SQLAG01';
GO

4、删除可用性组

USE [master]
GO
DROP AVAILABILITY GROUP [HAGroup01];
GO

5、在域控的 AD 用户和计算机界面里面把侦听器虚拟名称删除掉

手把手教你搭建 SQL Server AlwaysOn 图文详解

alwayson 注意问题

关于 AlwaysOn 备份

msdn 上和《SQL Server2012 实施与管理实战指南》上都没有说道主副本所支持的备份类型

经过测试,主副本跟单实例的 SQL Server 一样,完整备份、差异备份、日志备份都支持

手把手教你搭建 SQL Server AlwaysOn 图文详解

故障切换判断条件

第一步
lookalive 5 秒 / 次 telnet 1433 端口 超时 30 秒
第二步
isalive    60 秒 / 次 sp_server_diagnoist 超时 60 秒 超时后再执行 3 次以防误判

从 sql server2012 开始使用 sp_server_diagnoist 比 select @@servername 判断更准确
防止 sqlserver 压力大导致的误判
《SQL Server2012 实施和管理实战指南》P42 P50 P53

副本之间 10 秒 / 次 相互 ping,如果不通,比如辅助副本不通,会显示为 disconnect

关于仲裁:http://www.tech-coffee.net/understand-failover-cluster-quorum/

这一篇是手把手教你搭建 SQL Server AlwaysOn 图文详解的第四篇,这一篇开始搭建异地机房节点

注意点 1

注意异地节点最好至少有 2 个 AG 节点,否则在本地节点进行手动故障转移的时候会出现仲裁警告,提示 WSFC 集群有脱机危险

在异地节点只有一个的情况下,虽然 Windows2012R2 有动态仲裁机制,但是,当本地节点非优雅宕机的情况下,整个 WSFC 集群有可能得不到任何票数

也就是异地节点也得不到票数而导致整个 WSFC 集群脱机!!

注意点 2

当进行手动故障转移的时候,更新 DNS 缓存需要 10 分钟,所以当进行手动故障转移之后,用侦听器 ip 连接 SQL Server 会很慢,这是因为还在更新 DNS 缓存


步骤

这一篇依然使用 step by step 的方式介绍怎麽搭建 AlwaysOn 异地机房节点

新加异地机房节点机器名:

1、在异地节点上安装故障转移集群

2、在本地机房节点机器上打开故障转移集群管理器,添加一个节点

手把手教你搭建 SQL Server AlwaysOn 图文详解

3、验证配置

 手把手教你搭建 SQL Server AlwaysOn 图文详解

4、解决新加节点 OU 不同问题,只需修改组织单位 ou,不需要修改站点 site,因为如果本地机房和异地机房的域设置了 site,在验证配置的时候会警告,当然可以忽略也可以修正

因为只是警告已而,忽略也无所谓

5、添加节点成功

手把手教你搭建 SQL Server AlwaysOn 图文详解

6、在新节点上安装好 SQL Server 并优化 SQL Server,这里忽略安装和优化步骤

7、把异地机房新节点添加到 alwayson 可用性组里,打开 alwayson 的可用性属性界面,可用性组名称为:AGWMSJXC

可以看到添加了异地机房节点之后,这个异地机房节点还没有联接到可用性组,也就是当前可用性组还没识别到这个异地机房节点

手把手教你搭建 SQL Server AlwaysOn 图文详解

8、对侦听器添加另一个子网的 VIP,这一步,如果可用性组没有启用可用性组侦听器那么这一步可以忽略

如果可用性组启用了侦听器,那么需要分两种情况

1、异地节点的网段跟本地机房是一样的,比如都是 192.168.1.x,那么这一步也不需要做

2、异地节点的网段跟本地机房是不一样的,也就是跨子网,比如本地机房是 192.168.1.x,异地机房是 192.168.10.x,那么这一步需要做

手把手教你搭建 SQL Server AlwaysOn 图文详解

手把手教你搭建 SQL Server AlwaysOn 图文详解

现在侦听器 IP 有两个,一个是本地机房网段的 IP,一个是异地机房网段的 IP

手把手教你搭建 SQL Server AlwaysOn 图文详解

添加了新的侦听器 vip 之后,故障转移集群管理器里会自动将这个侦听器 vip 资源脱机

9、新建一个测试可用性组,主要用来打通 / 开启本地节点和异地节点的 5022 端口

 手把手教你搭建 SQL Server AlwaysOn 图文详解

建好之后,在原 AG 刷新一下会看到异地节点 JXCA-WMS08 已经自动联接到可用性组 AGWMSJXC

10、对数据库进行备份还原到异地节点 JXCA-WMS08,在异地节点 JXCA-WMS08 上进行操作,将数据库逐个点击联接到可用性组

手把手教你搭建 SQL Server AlwaysOn 图文详解

11、异地节点添加完成

手把手教你搭建 SQL Server AlwaysOn 图文详解

12、手动故障转移主副本到异地节点

注意当只有一个异地节点的时候,正在验证 WSFC 仲裁投票配置那一栏会出现警告!

手把手教你搭建 SQL Server AlwaysOn 图文详解

故障转移之后会发现异地节点的侦听器 ip 联机,本地节点的侦听器 ip 脱机

手把手教你搭建 SQL Server AlwaysOn 图文详解

13、在异地节点上使用异地节点侦听器 ip 连接 SQL Server,并写入测试数据

手把手教你搭建 SQL Server AlwaysOn 图文详解

14、把主副本手动故障转移回来本地节点

手把手教你搭建 SQL Server AlwaysOn 图文详解

15、用本地节点侦听器 ip 连接 SQL Server,发现刚才对异地节点侦听器 ip 的数据写入都已经同步过来本地

 手把手教你搭建 SQL Server AlwaysOn 图文详解

附上结构图

两个网段,所以会有两个侦听器 IP,但是同一个时刻只有一个侦听器 IP 是联机状态,在 WSFC 集群管理器里查看

主站点:192.168.6x

DR 站点:192.168.7.x

手把手教你搭建 SQL Server AlwaysOn 图文详解

故障转移到 DR 站点之后

手把手教你搭建 SQL Server AlwaysOn 图文详解

参考文章:

http://www.linuxidc.com/Linux/2017-01/139767.htm

http://www.tech-coffee.net/understand-failover-cluster-quorum/

如有不对的地方,欢迎大家拍砖 o(∩_∩)o

本文永久更新链接地址:http://www.linuxidc.com/Linux/2017-01/139766.htm

正文完
星哥说事-微信公众号
post-qrcode
 
星锅
版权声明:本站原创文章,由 星锅 2022-01-22发表,共计33267字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
【腾讯云】推广者专属福利,新客户无门槛领取总价值高达2860元代金券,每种代金券限量500张,先到先得。
阿里云-最新活动爆款每日限量供应
评论(没有评论)
验证码
【腾讯云】云服务器、云数据库、COS、CDN、短信等云产品特惠热卖中