SQL Server 2016 Failover Cluster+ ALwaysOn(三)

SQL Server 2016 Failover Cluster+ ALwaysOn(三)
咱们前面两篇文章介绍了SQL Server 2016 Failover Cluster的配置,同时又介绍配置新增AlwaysOn节点的先前条件,今天咱们主要介绍Always的详细配置。咱们前面已经提到了,若是要实现SQL Server 2016 Failover Cluster+ ALwaysOn,SQL Server Failover Cluster两个节点或者多个节点安装一个SQL 实例,而后ALwaysOn也须要安装一个单独的实例,虽然AlwaysOn节点必需要加入Faillover Cluster中,可是要建立AlwaysOn必需要它和以前的SQL群集实例之间建立AlwaysOn可用性组关系。另外AlwaysOn功能的开启是在实例级设置的,这里一共有2个SQL实例,因此就须要对这2个SQL实例分别进行设置。对于SQL群集实例,在其任一全部者节点上使用SQL Server configuration manager设置一次就能够了(重启SQL服务后生效)。
咱们仍是继续回顾上面的架构图
SCHEMA
接下来咱们配置ALwaysOn High Availability,咱们发现提示错误,可是有引导咱们如何配置
Failover + ALwaysOn
咱们经过SSMS右击--AlwayOn High Avaliablity 会有一个提示,意思是必须为服务器实例启用AlwaysOn功能,以后才能在此实例上建立可用性组,若要启用AlowaysOn,请打开SQL Server配置管理器,右键单击SQL Server实例名称,选择属性,而后使用SQL Server属性对话框的AlwaysOn高可用性选项卡,咱们连接集群地址,点击ALways High Availability,提示咱们开启的方法了
注意:咱们使用SSMS链接到SQL Server后,在服务器属性对话框中,单击通常页面。 的HADR启用属性
显示下列值之一:真正的若是启用了老是在可用性组织;假,若是老是在可用性组是禁用的。
Failover + ALwaysOn
因此咱们要开启功能
Failover + ALwaysOn
SQL Server服务---属性--右击
Failover + ALwaysOn
咱们将SQL Server服务的登陆帐户换成域帐户
Failover + ALwaysOn
咱们勾选启用AlwayOn可用性组
Failover + ALwaysOn
应用--确认后,须要重启数据库服务
Failover + ALwaysOn
正在重启服务
Failover + ALwaysOn
第二台服务器的AlwaysOn当节点切换到节点2的时候,发先是自动勾选的;因此不用勾选;另外当角色不在操做的节点的时候,咱们就会发现LWAYSON高可用没法操做;属于正常现
象;咱们能够经过系统提示的信息就会知道
Failover + ALwaysOn
咱们再次查看角色的状态:如下状态属于正常现象,缘由是因为启用了ALwaysOn高可用
Failover + ALwaysOn
这种状况下能够选择在节点上3安装一个SQL命名实例,而后在它和以前的SQL群集实例之间建立AlwaysOn可用性组关系。
另外AlwaysOn功能的开启是在实例级设置的,这里你一共有2个SQL实例,因此就须要对这2个SQL实例分别进行设置。对于SQL群集实例,在其任一全部者节点上使用SQL Server
configuration manager设置一次就能够了(重启SQL服务后生效)。
咱们一样先将节点三的ALwaysOn高可用×××打开
Failover + ALwaysOn
咱们用SSMS连接实例
Failover + ALwaysOn
咱们都知道高可用性是基于DB的,因此咱们须要建立数据库:HAGourpDB1
Failover + ALwaysOn
同时建立一张表,perinfo
Failover + ALwaysOn
咱们插入数据
Failover + ALwaysOn
咱们开始在集群实例下建立高可用性组
Failover + ALwaysOn
勾选数据库层运行状态检测,定义高可用性组的名称:HA-GP1
Failover + ALwaysOn
提示须要首先完整备份
Failover + ALwaysOn
因此咱们先备份一下
Failover + ALwaysOn
完整备份及备份类型
Failover + ALwaysOn
备份完成
Failover + ALwaysOn
咱们一样备份Log
Failover + ALwaysOn
咱们须要将备份的数据库和log在三节点还原一次
Failover + ALwaysOn
恢复状态:RESTORE WITH NORECOVERY
Failover + ALwaysOn
恢复完成
Failover + ALwaysOn
数据库状态未还原模式
Failover + ALwaysOn
恢复事务log
Failover + ALwaysOn
一样选择恢复状态
Failover + ALwaysOn
恢复完成
Failover + ALwaysOn
咱们继续建立高可用性组,知足条件继续下一步
Failover + ALwaysOn
咱们增长副本
Failover + ALwaysOn
不管是主副本或者辅助副本都选择同步提交模式,辅助副本的Readable Secondary选择为Yes。只是为了后面的只读辅助数据库准备。
Failover + ALwaysOn
AlwaysOn和镜像同样都采用Endpoint(端点)来进行数据传输。AlwaysOn使用端点是为了和辅助副本进行日志传输和心跳线的通讯
Failover + ALwaysOn
备份优先级勾选Prefer Secondary。意思是有限考虑辅助副本上作数据备份。只有在没有辅助副本的状况下才使用主副本。把辅助副本的优先级别调为100,而主副本50。
Failover + ALwaysOn
咱们监听端口稍后建立
Failover + ALwaysOn
确认便可---yes
Failover + ALwaysOn
这个地方是选择初始化数据库的方式。若是你选择Full,你须要提供一个共享地址,AlwaysOn本身自动备份数据库而后还原到目标的辅助副本上。这里咱们选择Join only,因此
咱们须要事先把数据库备份并还原到目标的辅助数据库上----Join only
Failover + ALwaysOn
开始下一步后,咱们查看状态
Failover + ALwaysOn
建立完成
Failover + ALwaysOn
Failover + ALwaysOn
咱们展开数据库高可用性组
Failover + ALwaysOn
咱们查看角色会多出一个高可用性组角色
Failover + ALwaysOn
咱们接着建立一个监听
AlwaysOn建立后,客户端就须要进行链接,为了让应用程序可以透明地链接到主副本而不受故障故障转移的影响,咱们须要建立一个侦听器,侦听器就是一个虚拟的网络名称,能够经过这个虚拟网络名称访问可用性组,而不用关心链接的是哪个节点,它会自动将请求转发到主节点,当主节点发生故障后,辅助节点会变为主节点,侦听器也会自动去侦听主节点。
一个侦听器包括虚拟IP地址、虚拟网络名称、端口号三个元素,一旦建立成功,虚拟网络名称会注册到DNS中,同时为可用性组资源添加IP地址资源和网络名称资源。用户就可使用此名称来链接到可用性组中。与故障转移群集不一样,除了使用虚拟网络名称以外,主副本的真实实例名还能够被用来链接。
SQL Server2012早期版本的SQL Server只有在实例启动的时候地会尝试绑定IP和端口,可是SQL Server2012却容许在副本实例处于运行情况的时候随时绑定新的IP地址、网络名称和端口号。所以能够为随时为为可用性组添加侦听器,并且这个操做会当即生效。当添加了侦听器以后,在SQL Server的错误日志中能够看到相似:在虚拟网络名称上中止和启动侦听器的消息。
要注意的是,SQLBrowser服务是不支持Listener的。这是由于应用程序在使用Listener的虚拟网络名链接SQLServer时,是以一个默认实例的形式进行访问的(只有主机名,没有实例名),所以客户端根本就不会去尝试使用SQLBrowser服务。
Failover + ALwaysOn
定义监听名称及IP
名称:HA-LST;
IP地址:192.168.5.48;
Port为1433
Failover + ALwaysOn
定义完成
Failover + ALwaysOn
咱们在查看角色,就会发现有对应的管理地址了
Failover + ALwaysOn
定义完成后,咱们能够查看高可用行组的显示面板
Failover + ALwaysOn
咱们能够经过显示面板查看高可用性组的状态
Failover + ALwaysOn
接下来咱们切换一下;切换前咱们须要注意一个问题:切换的时候不能在集群管理器里面切换,须要在高可用性组下切换,否则会有问题,就算切换成功了,有些数据也会出现问题
咱们首先在集群管理器里面查看节点全部者
Failover + ALwaysOn
另外咱们链接到群集节点后,发现高可用性组下的可用性副本的节点属于辅助节点;
Failover + ALwaysOn
接下来咱们准备开始切换,咱们使用SSMS链接到第三个节点实例
查看当前可用性组下在第三个节点处于辅助副本状态
Failover + ALwaysOn
咱们开始切换
Failover + ALwaysOn
选择主副本
Failover + ALwaysOn
确认信息
Failover + ALwaysOn
转移完成
Failover + ALwaysOn
咱们再查看AO1第三节点的AG状态就成了主副本了
Failover + ALwaysOn
咱们再从主切换到备
Failover + ALwaysOn
选择新的主副本
Failover + ALwaysOn
连接副本
Failover + ALwaysOn
开始链接
Failover + ALwaysOn
连接成功
Failover + ALwaysOn
确认转移信息
Failover + ALwaysOn
转移完成
Failover + ALwaysOn
咱们从SQLCLUSTER上插入一条数据
Failover + ALwaysOn
而后从AO1上查看数据
Failover + ALwaysOn
咱们从AO1上插入数据提示,数据库为只读,因此没法插入数据
Failover + ALwaysOn
缘由是因为当前节点属于第二节点,若是可读可写的话,须要将该节点转移到主副本节点才能够
Failover + ALwaysOn
咱们将AO1\ALWAYON下的AG下的HA-GP1从从副本转移到主副本咱们再次插入数据
Failover + ALwaysOn
转移完成
Failover + ALwaysOn
Failover + ALwaysOn
咱们再次尝试插入数据
Failover + ALwaysOn
咱们从SQLCLUSTER集群节点查看数据是否同步
Failover + ALwaysOn
咱们再次到SQLCLUSTER节点插入数据,提示错误
缘由是节点属于AO1
Failover + ALwaysOn
可是咱们查看数据,从当前节点从AO1插入的数据依然能够同步到SQLCLUSTER
Failover + ALwaysOn
各副本间的数据同步
AlwaysOn必需要维护各副本间的数据一致性,当主副本上的数据发生变化,会同步到辅助副本上。这里AlwaysOn经过三个步骤来完成:
步骤1:主副本记录发生变化的数据;
步骤2:将记录传输到各个辅助副本;
步骤3:把数据变化操做在辅助副本上执行一遍。
具体实现以下:
在主副本和辅助副本上,SQL Server都会启动相应的线程来完成相应的任务。对于通常的SQL Server服务器,即没有配置高可用性,会运行Log Writer的线程,当发生数据修改事务时,此线程负责将本次操对应的日志信息记录到日志缓冲区中,而后再写入到物理日志文件。但若是配置了AlwaysOny主副本的数据库,SQL Server会为它创建一个叫Log Scanner的线程,不间断的工做,负责将日志从日志缓冲区或日志文件里读出,打包成日志块,发送到辅助副本。所以能够保证发生的数据变化,不断送给各辅助副本。
辅助副本上存在固化和重作两个线程完成数据更新操做,固化线程会将主副本Log Scanner所发过来的日志块写入辅助副本磁盘上的日志文件里,所以称为固化,而后重作线程负责从磁盘上读取日志块,将日志记录对应的操做重演一遍,此时主副本和辅助副本上的数据就一致了。重作线程每隔固定的时间点,会跟主副本通讯,告知本身的工做进度。主副本由此知道两边数据的差距。Log Scanner负责传送日志块,不须要等待Log Writer完成日志固化;辅助副本完成日志固化之后就会发送消息到主副本,告知数据传输完成,而不须要等待重作完成,这样各自独立的设计,是尽量减小 AlwaysOn所带来的操做对数据库性能的影响。数据库

相关文章
相关标签/搜索