推荐阅读最新的文章集合  http://www.mssqlmct.cn/?post=6

 


SQL Server 2012 新特性(一)管理新特性:AlwaysOn


一、准备环境

1、准备4台计算机

  域控制器DC1,IP地址192.168.1.1

  主节点SQL1:IP地址192.168.1.21

  辅助节点SQL2:IP地址192.168.1.22

  辅助节点SQL3:IP地址192.168.1.23

  上述4台服务器的其它配置一致:子网掩码255.255.255.0,默认网关192.168.1.254,DNS为192.168.1.1。


2、准备域环境

  DC1为域contoso.com的域控制器,有关安装域控制器的操作请见前面的博文。

  SQL1、SQL2、SQL3在单机上均安装了SQL Server 2012数据库引擎。请将这3台计算机都加入到contoso.com域。


3、创建群集

  分别在SQL1、SQL2、SQL3在单机上打开“服务器管理器”,“添加功能”,添加“故障转移群集”。

  以域管理员的帐户登入其中一个节点,准备创建群集。打开“故障转移群集管理”,创建一个包含上述3个节点的群集。群集名称为WinCluster1,IP地址为192.168.1.201,仲裁配置为“多数节点”。

  详细的操作已在前面的博文有述。《创建Windows2008群集》http://jimshu.blog.51cto.com/3171847/590414


二、准备AlwaysOn

1、开启功能

  打开“SQL Server 配置管理器”,在左侧的“SQL Server 服务”列表中找到默认的实例。

194620895.png

  在右健菜单中选择“属性”,打开“AlwaysOn高可用性”选项页,确认已经选择了“启用AlwaysOn可用性组”。


150454838.png

  启用后,重新启动这个SQL Server 实例。

  如果没有启用这个功能,那么在配置AlwaysOn时会有以下错误:

200241484.png

  如果事先没有将该节点(计算机)加入到群集,则会报错:

150322234.png


2、打开防火墙端口

  在“管理工具”中打开“高级安全 Windows 防火墙”,添加入站规则,打开TCP1433和TCP5022端口。请参考《Windows 2008 中的防火墙》http://jimshu.blog.51cto.com/3171847/590411

  SQL Server 并不会去检查另一个节点的防火墙是否开放了端口,而是直接就去进行AlwaysOn的配置。如果防火墙未开放上述2个端口,SQL Server操作将超时而未成功,因此将出现以下错误信息:

202303614.png

202228442.png


3、准备登录名

  AlwaysOn中使用了镜像(mirror)技术,因此需要使用域帐户同时连接多个数据库引擎,或者使用证书。否则在配置AlwaysOn的过程中会出现以下提示:

195313519.png

  在这个实验中,我们使用域帐户。打开“SQL Server Management Studio”,为域用户新建登录名,并赋予权限(服务器角色为sysadmin)。由于SQL Server 2012可以为一个用户组建立登录名,因此我们在这里直接为域管理员组创建了登录名。

195640107.png

195700368.png

  创建了登录名,再将SQL Server服务帐户更改为域帐户,并重启这个实例。

150805628.png


4、准备文件夹

  主数据库将在其它节点上进行恢复,恢复后数据库将与原数据库位于硬盘上相同的路径位置。例如:原数据库位于 C:\sqldata ,那么必须为其它节点建立相同的文件夹。否则在配置AlwaysOn的时候会出现以下错误:

200812396.png

  此外,我们在后面的操作中,将主数据库直接备份到共享文件夹,以便于其它节点从这个共享文件夹读取备份数据然后在其本地进行恢复。因此,请在主节点SQL1上共享一个文件夹,例如 \\SQL1\AlwaysOn


5、备份数据库

  加入AlwaysOn可用性组的数据库必须为完整恢复模式,并且必须先做一次完整备份。此后,在选择“可用性组的用户数据库”时,才会显示为“满足先决条件”状态。否则,显示为“需要完整恢复模式”或“需要完整备份”状态。



三、新建可用性组

1、启动向导

  以域管理员的帐号登入SQL1,然后打开“SQL Server Management Studio”。

200201788.png

  展开“AlwaysOn高可用性”,在“可用性组”点右键,在菜单中选择“新建可用性组向导”。

200351186.png


2、配置可用性组名称

200406267.png


3、选择数据库

200420360.png


4、指定副本

200457496.png

  点“添加副本”按钮,出现“连接到服务器”对话框。输入服务器名称,然后连接到辅助角色的数据库实例。

201559305.png

  添加了辅助副本所在的实例之后,查看一下“端点”、“备份首选项”和“侦听器”3个选项页。

200642469.png

200657238.png

200710704.png


5、选择数据同步

200736630.png


6、验证

201915284.png

  由于我们在前面的操作中没有设置侦听器,所以这里会有一个警告信息。我们将在后面配置,所以忽略这个警告。

202041449.png


7、完成

202119255.png

202133794.png


8、检查结果

  回到“SQL Server Management Studio”,可见“AlwaysOn高可用性”--“可用性组”--“AlwaysOn1”。

  再检查 \\SQL1\AlwaysOn 文件夹,可见自动产生了db01、db02数据库的备份文件。

203944716.png

  转到DC1,打开“Active Directory 用户和计算机”和DNS,可见“AlwaysOn1”这个虚拟网络名称(VNN)帐户及其IP地址。



四、添加数据库

1、启动向导

203642159.png

204151397.png


2、选择数据库

204227354.png


3、选择数据同步

204300516.png


4、连接到副本

204404654.png


5、验证

204440470.png


6、完成

204512134.png

204532833.png


7、检查结果

  回到“SQL Server Management Studio”,检查“AlwaysOn高可用性”--“可用性组”--“AlwaysOn1”。例如,此时在SQL2节点,结果如下:

204744485.png

  再检查 \\SQL1\AlwaysOn 文件夹,可见自动产生了 db03 数据库的备份文件。



五、添加侦听器

  根据官方提供的实验手册,仅在“故障转移群集管理”窗口添加侦听器。实践中不推荐此方法,而是直接在SSMS中添加。


1、添加客户端访问点

  在任意一个节点打开“故障转移群集管理”,在左侧的“服务和应用程序”列表中选择“AlwaysOn1”,为其“添加资源”--“客户端访问点”。

205015938.png

205031508.png

205045815.png

205056528.png

205109998.png


2、使资源脱机

  为了将前面的操作所新建的客户端访问点与需要故障转移的资源进行绑定,需要先将资源脱机,然后修改资源的属性。

205246829.png


205315407.png


3、配置依赖关系

205329623.png

205410986.png


4、使资源联机

205424549.png

205449871.png


说明:在SSMS中添加侦听器的界面。推荐!

004133622.png


5、检查结果

  打开“SQL Server Management Studio”,在“可用性组侦听器”列表中可见名为“SqlFailOver”的侦听器。

205532684.png

  转到DC1,打开“Active Directory 用户和计算机”和DNS,可见“SqlFailOver”这个虚拟网络名称(VNN)帐户及其IP地址。

153527270.png

153542253.png



六、添加副本

1、启动向导

210113686.png

210129970.png


2、连接到副本

210222119.png


3、指定副本

210256548.png


4、 选择数据同步

210328845.png


5、验证

210403755.png


6、完成

210434127.png

210451840.png


7、检查结果

210525790.png

  还可以通过“显示面板”查看可用性组的状态。

163627999.png

163739512.png

  在这个“显示面板”的右侧有一个任务栏,可以“启动故障转移向导”、“查看AlwaysOn运行状况事件”、“查看群集仲裁信息”。例如:

164009291.png



七、查看属性

1、群集“WinCluster1”的属性

154129387.png

154147348.png

155855678.png

  其中,在“资源类型”选项页中,用户定义的资源类型有2类:

160004208.png

160017755.png


2、服务和应用程序“SQLSERVER”的属性

  打开“故障转移群集管理”,在左侧列表的“服务和应用程序中”找到“AlwaysOn1”,将其重命名为“SQLSERVER”。结果如下:

211116694.png

  再查看其属性:

211443828.png

160146887.png


3、资源“AlwaysOn1”的属性

211524492.png

211536352.png

211552426.png

211607312.png

211622392.png


4、可用性组“AlwaysOn1”的属性

212121830.png

212137929.png

212149921.png


5、可用性副本的属性

  依次查看3个“可用性副本”的属性,例如SQL1的属性如下:

212227869.png


6、侦听器“SqlFailOver”的属性

212309923.png

  说明:如果通过SSMS添加的侦听器,应当指明端口(默认为1433)。而通过故障转移群集管理器添加的侦听器,似乎没有自动配置一个端口。因此,推荐通过SSMS添加侦听器。


八、模拟故障转移(切换副本)

1、使用“SQL Server Management Studio”(推荐)

212710748.png

212724617.png

212746815.png

  由于SQL3的“可用性模式”是“异步提交”,因此,如果将SQL3指定为新的主副本则可能造成数据丢失。

212927871.png

  我们也可以在“SQL Server Management Studio”中看到SQL2的状态与SQL3不同。SQL2显示为“已同步”,SQL3显示为“正在同步”。

213103762.png

  在“故障转移可用性组:AlwaysOn1”点“下一步”,继续操作。

213209122.png

213225780.png

213249214.png

注意到最后有一个警告信息。

213317587.png


2、使用“故障转移群集管理器”(不推荐)

212600846.png

212618122.png

212630460.png