SQL Server 2016 AlwaysOn 安装及配置介绍

时间:2017-03-11 14:53:05   收藏:0   阅读:11760

SQL Server 2016  AlwaysOn 安装及配置介绍

Always On 可用性组功能是一个提供替代数据库镜像的企业级方案的高可用性和灾难恢复解决方案。 SQL Server 2012 中引入了 Always On 可用性组功能,此功能可最大程度地提高一组用户数据库对企业的可用性。 “可用性组” 针对一组离散的用户数据库(称为“可用性数据库” ,它们共同实现故障转移)支持故障转移环境。 一个可用性组支持一组读写主数据库以及一至八组对应的辅助数据库。 (可选)可使辅助数据库能进行只读访问和/或某些备份操作。

可用性组在可用性副本级别进行故障转移。 可用性组 (availability group)一个容器,用于一组共同实现故障转移的数据库(“可用性数据库”)。可用性数据库 (availability database)属于可用性组的数据库。 对于每个可用性数据库,可用性组将保留一个读写副本(“主数据库”)和一个到八个只读副本(“辅助数据库”)。主数据库 (primary database)可用性数据库的读写副本。辅助数据库 (secondary database)可用性数据库的只读副本。可用性副本,可用性组的实例化,该可用性组由特定的 SQL Server 实例承载,并维护属于该可用性组的每个可用性数据库的本地副本。 存在两种类型的可用性副本:一个 主副本 和一至八个 辅助副本。主副本 (primary replica)使主数据库可用于来自客户端的读写连接并用于将每个主数据库的事务日志记录发送到每个辅助副本的可用性副本。辅助副本 (secondary replica)维护各可用性数据库的辅助副本的可用性副本,充当可用性组的潜在故障转移目标。 或者,辅助副本可以支持对辅助数据库进行只读访问,并支持对辅助数据库创建备份。可用性组侦听器 (availability group listener)一个服务器名称,客户端可连接到此服务器以访问 AlwaysOn 可用性组的主要副本或次要副本中的数据库。 可用性组侦听器将传入连接定向到主副本或只读辅助副本。

需要注意的是:每个可用性副本都必须驻留在单个 Windows Server 故障转移群集 (WSFC) 群集的不同节点中。

支持替代可用性模式,如下所示:

支持几种形式的可用性组故障转移:自动故障转移、计划的手动故障转移(通常简称为“手动故障转移”)和强制的手动故障转移(通常简称为“强制故障转移”)

通过使用活动辅助功能,可更好地利用辅助硬件资源,从而提高 IT 效率并降低成本。 此外,通过将读意向应用程序和备份作业转移到辅助副本,有助于提高针对主副本的性能。

大概介绍完后,我们开始今天的安装及配置介绍,

环境介绍:

技术分享

我们再次跳过DC的环境部署,如果需要参考,请查看本地博客中关于DC的相关文章。

技术分享

我们首先准备第一台SQLServer服务器,

技术分享

然后开始安装SQLServer2016

技术分享

选择需要安装的SQL Server功能角色,其实我们一般只安装数据库引擎即可。再次我们基本都安装了。

技术分享

创建默认实例

技术分享

服务器配置,我们选择混合模式

技术分享

安装完成

技术分享

我们安装完之后,通过SSMS连接,需要注意的是SQL Server 2016开始需要单独安装SSMS工具,我们可以通过以下链接进行下载安装。

https://docs.microsoft.com/en-us/sql/ssms/sql-server-management-studio-ssms

https://docs.microsoft.com/en-us/sql/ssms/download-sql-server-management-studio-ssms 英文版本

技术分享

接下来我们准备第二台SQL Server

技术分享

确认信息后,开始安装

技术分享

安装完成

技术分享

因为我们需要创建AlwayOn高可用,所以需要将两台节点增加到故障转移群集中,所以我们需要安装故障转移群集角色,我们开始安装故障转移群集中,我们该服务和SQLServer安装在一台。

首先是第一台-SQL2016-01

技术分享

安装完成

技术分享

然后第二台也安装完成--SQL2016-02

技术分享

打开群集管理器后,接下来我们就是配置集群了,在配置群集之前建议先验证集群,将两个SQL Server服务器增加到节点中

技术分享

因为我们是测试环境,没有配置心跳线,所以网络会有警告

技术分享

验证没有问题后,我们开始创建集群,定义集群名称及网络地址

SQLCLU 192.168.5.17

技术分享

确认信息,开始创建

技术分享

因为我们没有添加仲裁,所以会提示一下信息,当然,我们也可以在后面单独配置仲裁

技术分享

群集创建完成。

技术分享

我们查看节点信息

技术分享

接下来我们需要配置仲裁---群集名称--右击---更多操作--配置仲裁设置

技术分享

在此我们选择高级仲裁配置

技术分享

选择所有节点

技术分享

我们再次配置文件共享见证,可以根据自己的环境进行选择配置

技术分享

我们使用文件仲裁见证,服务器放在了DC上,所以提前需要在DC上创建一个共享文件夹

技术分享

指定文件共享路劲到DC服务器上的共享文件夹

技术分享

确认信息

技术分享

创建完成

技术分享

接下来就是我们创建一个数据库及表信息DB1

技术分享

插入一些数据

技术分享

都安装后,我们开始创建高可用组

我们通过SSMS右击--AlwayOn High Avaliablity 会有一个提示,

意思是必须为服务器实例启用AlwaysOn功能,之后才能在此实例上创建可用性组,若要启用AlowaysOn,请打开SQL Server配置管理器,右键单击SQL Server实例名称,选择属性,然后使用SQL Server属性对话框的AlwaysOn高可用性选项卡,

技术分享

https://msdn.microsoft.com/en-us/library/ff878259.aspx

我们使用SSMS连接到SQL Server后,在服务器属性对话框中,单击一般页面。 的HADR启用属性显示下列值之一:

技术分享

使用SQL Server Configuration Manager进行配置,我们打开SQL Server 配置管理器

技术分享

打开SQL SERVER配置管理器后,我们打开SQL Server服务

技术分享

我们将SQL Server服务的登录账户换成域账户

技术分享

然后我们勾选启用AlwayOn可用性组---

技术分享

保存后,我们需要重启数据库服务

技术分享

我们同样把第二台服务器的AlwaysOn打开

技术分享

技术分享

我们在创建高可用组之前,先创建一个共享文件夹,然后赋予权限

我们文件夹是在DC上创建的,需要注意的是,该共享文件夹只是临时的,创建完高可用组后就不会用到的。所以共享路劲创建在哪都无所谓

技术分享

接下来我们就可以配置可用性组了

技术分享

定义高可用组名称—DB-Always

技术分享

创建高可用组前,我们需要对数据库进行完整备份。

技术分享

我们先对数据库进行备份。

技术分享

备份完成

技术分享

接下来回到创建高可用性组的想到就可以满足条件了

技术分享

默认只有一个副本,因为我们有两台服务器,所以我们就可以添加副本

技术分享

连接第二个节点

技术分享

我们按照自己的生产环境进行配置,即可。

技术分享

技术分享

我们提前在DC上创建了一个共享目录

技术分享

我们先不创建侦听器

技术分享

选择同步目录,需要注意的是,该同步目录只是在一开始创建高可用性组的时候才可以用到,所以路劲无所谓

技术分享

确认信息

技术分享

创建完成

技术分享

创建完成后,我们可以看见相关的配置信息

技术分享

接下来就是创建侦听器侦听器

   AlwaysOn创建后,客户端就需要进行连接,为了让应用程序能够透明地连接到主副本而不受故障故障转移的影响,我们需要创建一个侦听器,侦听器就是一个虚拟的网络名称,可以通过这个虚拟网络名称访问可用性组,而不用关心连接的是哪一个节点,它会自动将请求转发到主节点,当主节点发生故障后,辅助节点会变为主节点,侦听器也会自动去侦听主节点。

一个侦听器包括虚拟IP地址、虚拟网络名称、端口号三个元素,一旦创建成功,虚拟网络名称会注册到DNS中,同时为可用性组资源添加IP地址资源和网络名称资源。用户就可以使用此名称来连接到可用性组中。与故障转移群集不同,除了使用虚拟网络名称之外,主副本的真实实例名还可以被用来连接。

   SQL Server2012早期版本的SQL Server只有在实例启动的时候地会尝试绑定IP和端口,但是SQL Server2012却允许在副本实例处于运行状况的时候随时绑定新的IP地址、网络名称和端口号。因此可以为随时为为可用性组添加侦听器,而且这个操作会立即生效。当添加了侦听器之后,在SQL Server的错误日志中可以看到类似:在虚拟网络名称上停止和启动侦听器的消息。

   要注意的是,SQLBrowser服务是不支持Listener的。这是因为应用程序在使用Listener的虚拟网络名连接SQLServer时,是以一个默认实例的形式进行访问的(只有主机名,没有实例名),因此客户端根本就不会去尝试使用SQLBrowser服务。

我们创建一个侦听器

技术分享

为侦听器定义一个名称和IP地址

技术分享

创建完成

技术分享

我们可以看见集群角色会自动配置好角色----是监听器的地址

技术分享

最近后我们通过集群地址

192.168.5.17

alwayon地址也可以登录

192.168.5.16

技术分享

接下来我们切换一下

切换前我们需要注意一个问题

切换的时候不能在集群管理器里面切换,需要在高可用性组下切换,不然会有问题,就算切换成功了,有些数据也会出现问题

我们首先在集群管理器里面查看节点所有者

技术分享

技术分享

接下来我们切换--右击高可用性组----故障转移

技术分享

通过想到切换

技术分享

因为我们只有两个节点,所以会显示节点2

技术分享

我们需要手动连接节点2

技术分享

开始连接

技术分享

连接完成

技术分享

确认信息

技术分享

切换完成

技术分享

我们就可以看见SQL2016-02就是主节点了

技术分享

各副本间的数据同步

   AlwaysOn必须要维护各副本间的数据一致性,当主副本上的数据发生变化,会同步到辅助副本上。这里AlwaysOn通过三个步骤来完成:

步骤1:主副本记录发生变化的数据;

步骤2:将记录传输到各个辅助副本;

步骤3:把数据变化操作在辅助副本上执行一遍。

具体实现如下:

   在主副本和辅助副本上,SQL Server都会启动相应的线程来完成相应的任务。对于一般的SQL Server服务器,即没有配置高可用性,会运行Log Writer的线程,当发生数据修改事务时,此线程负责将本次操对应的日志信息记录到日志缓冲区中,然后再写入到物理日志文件。但如果配置了AlwaysOny主副本的数据库,SQL Server会为它建立一个叫Log Scanner的线程,不间断的工作,负责将日志从日志缓冲区或日志文件里读出,打包成日志块,发送到辅助副本。因此可以保证发生的数据变化,不断送给各辅助副本。

  辅助副本上存在固化和重做两个线程完成数据更新操作,固化线程会将主副本Log Scanner所发过来的日志块写入辅助副本磁盘上的日志文件里,因此称为固化,然后重做线程负责从磁盘上读取日志块,将日志记录对应的操作重演一遍,此时主副本和辅助副本上的数据就一致了。重做线程每隔固定的时间点,会跟主副本通信,告知自己的工作进度。主副本由此知道两边数据的差距。Log Scanner负责传送日志块,不需要等待Log Writer完成日志固化;辅助副本完成日志固化以后就会发送消息到主副本,告知数据传输完成,而不需要等待重做完成,这样各自独立的设计,是尽可能减少 AlwaysOn所带来的操作对数据库性能的影响。

本文出自 “高文龙” 博客,谢绝转载!

评论(0
© 2014 mamicode.com 版权所有 京ICP备13008772号-2  联系我们:gaon5@hotmail.com
迷上了代码!