SQL Server 2016 Failover Cluster + ALwaysOn 环境的搭建

 

近期公司为了提高服务的可用性,就想到了部署AlwaysOn,之前的环境只是部署了SQL Server Failover Cluster,所以决定将云端放一台SQL Server来配置ALwaysOn,具体思路就是在本地的SQL Server Failover Cluster中再增加一个节点,然后将新家的节点放到Azure云端,然后在这两个实例之间配置AlwaysOn,部署后,有个问题就是集群之间无法自动故障转移,需要手动干预才可以具体后期我们再做详细介绍,废话就不多说了,开始实践配置;
环境介绍:

 

Hostname:DC1
Role:DC
IP:192.168.5.20
Domain:ixmsoft.com
Hostname:ISCSI
IP:192.168.5.38
Role:Storage
Hostname:S1
Role:SQL Server 2016
IP:192.168.5.41
Hostname:S2
Role:SQL Server 2016
IP:192.168.5.42
Hostname:AO1
Role:SQL Server 2016
IP:192.168.5.43
SQL-CLUSTER
192.168.5.46
SQLCLUSTER
192.168.5.47
HA-LP1
ListenIP:192.168.5.48
SQL Server 2016 Failover Cluster + ALwaysOn_SQL Server
因为要做磁盘共享,所以我们使用系统自带的ISCSI做为连接器;
我们首先安装配置ISCSI服务器:
首先是挂载两块盘:一块是Data:50G,一块是仲裁:10G
SQL Server 2016 Failover Cluster + ALwaysOn_SQL Server_02
然后安装ISCSI目标服务器
SQL Server 2016 Failover Cluster + ALwaysOn_SQL Server_03
我们安装后,我们打开ISCSI管理---创建ISCSI虚拟磁盘
SQL Server 2016 Failover Cluster + ALwaysOn_SQL Server_04
我们新选择DATA盘
SQL Server 2016 Failover Cluster + ALwaysOn_SQL Server_05
我们增加需要分配磁盘的计算机IP
我们增加两台SQL Server服务器
SQL Server 2016 Failover Cluster + ALwaysOn_SQL Server_06
确认信息
SQL Server 2016 Failover Cluster + ALwaysOn_SQL Server_07
创建完成
SQL Server 2016 Failover Cluster + ALwaysOn_SQL Server_08
SQL Server 2016 Failover Cluster + ALwaysOn_SQL Server_09
再次新建一个虚拟磁盘用于仲裁
SQL Server 2016 Failover Cluster + ALwaysOn_SQL Server_10
设置磁盘名称
SQL Server 2016 Failover Cluster + ALwaysOn_SQL Server_11
所有的磁盘已增加完成
SQL Server 2016 Failover Cluster + ALwaysOn_SQL Server_12
我们开始从5.41上通过ISCSI连接程序连接共享磁盘
SQL Server 2016 Failover Cluster + ALwaysOn_SQL Server_13
提示确认启动服务
SQL Server 2016 Failover Cluster + ALwaysOn_SQL Server_14
输入ISCSI服务器地址,快速链接
SQL Server 2016 Failover Cluster + ALwaysOn_SQL Server_15
已连接
SQL Server 2016 Failover Cluster + ALwaysOn_SQL Server_16
卷和设备已加载
SQL Server 2016 Failover Cluster + ALwaysOn_SQL Server_17
我们此时就可以在192.168.5.41上看见分配的两块磁盘了
SQL Server 2016 Failover Cluster + ALwaysOn_SQL Server_18
我们同理也按照上面的方法,在192.168.5.42上进行ISCSI链接
准备好以上操作后,我们就可以开始安装故障转移集群了;
我们首先在S1上进行操作安装
SQL Server 2016 Failover Cluster + ALwaysOn_SQL Server_19
安装完成
SQL Server 2016 Failover Cluster + ALwaysOn_SQL Server_20
安装后,我们同样在第二台S2上进行安装,安装后,我们就打开集群管理器
右击故障转移集群管理器----验证配置
SQL Server 2016 Failover Cluster + ALwaysOn_SQL Server_21
增加两台SQL Server服务器
SQL Server 2016 Failover Cluster + ALwaysOn_SQL Server_22
验证通过后,点击完成
SQL Server 2016 Failover Cluster + ALwaysOn_SQL Server_23
验证通过后,我们就可以创建了;
我们定义集群名称及IP
SQL-CLUSTER
192.168.5.46
SQL Server 2016 Failover Cluster + ALwaysOn_SQL Server_24
定以后,确认信息
SQL Server 2016 Failover Cluster + ALwaysOn_SQL Server_25
开始创建集群
SQL Server 2016 Failover Cluster + ALwaysOn_SQL Server_26
定义完成
SQL Server 2016 Failover Cluster + ALwaysOn_SQL Server_27
两个节点信息
SQL Server 2016 Failover Cluster + ALwaysOn_SQL Server_28
磁盘信息
SQL Server 2016 Failover Cluster + ALwaysOn_SQL Server_29
配置仲裁
SQL Server 2016 Failover Cluster + ALwaysOn_SQL Server_30
高级仲裁选项
SQL Server 2016 Failover Cluster + ALwaysOn_SQL Server_31
选择所有节点
SQL Server 2016 Failover Cluster + ALwaysOn_SQL Server_32
选择仲裁磁盘
SQL Server 2016 Failover Cluster + ALwaysOn_SQL Server_33
我们同时将第一个磁盘增加到群集共享卷
SQL Server 2016 Failover Cluster + ALwaysOn_SQL Server_34
我们准备安装SQL Server 2016
SQL Server 2016 Failover Cluster + ALwaysOn_SQL Server_35
定义SQL Server网络名称
SQLCLUSTER
SQL Server 2016 Failover Cluster + ALwaysOn_SQL Server_36
选择数据磁盘
SQL Server 2016 Failover Cluster + ALwaysOn_SQL Server_37
定义群集网络IP
192.168.5.47
SQL Server 2016 Failover Cluster + ALwaysOn_SQL Server_38
定义账户信息
SQL Server 2016 Failover Cluster + ALwaysOn_SQL Server_39
定义数据目录,自动选择磁盘共享卷目录
SQL Server 2016 Failover Cluster + ALwaysOn_SQL Server_40
安装完成
SQL Server 2016 Failover Cluster + ALwaysOn_SQL Server_41
我们在群集管理器中就可以看见多了一个角色及管理IP
SQL Server 2016 Failover Cluster + ALwaysOn_SQL Server_42
我们准备安装第二个节点
SQL Server 2016 Failover Cluster + ALwaysOn_SQL Server_43
下一步即可
SQL Server 2016 Failover Cluster + ALwaysOn_SQL Server_44
默认即可
SQL Server 2016 Failover Cluster + ALwaysOn_SQL Server_45
确认信息
SQL Server 2016 Failover Cluster + ALwaysOn_SQL Server_46
SQL Server 2016 Failover Cluster + ALwaysOn_SQL Server_47
节点增加完成
SQL Server 2016 Failover Cluster + ALwaysOn_SQL Server_48
测试集群
我们从节点1切换到节点2
SQL Server 2016 Failover Cluster + ALwaysOn_SQL Server_49
切换中
SQL Server 2016 Failover Cluster + ALwaysOn_SQL Server_50
切换完成
SQL Server 2016 Failover Cluster + ALwaysOn_SQL Server_51
我们使用SSMS进行连接测试
我们使用SQL集群地址进行连接
SQL Server 2016 Failover Cluster + ALwaysOn_SQL Server_52
我们使用群集网络地址链接
SQL Server 2016 Failover Cluster + ALwaysOn_SQL Server_53
我们查看集群属性----集群化--true
SQL Server 2016 Failover Cluster + ALwaysOn_SQL Server_54
到此我们SQL Server的Failover Cluster已经配置完成。。

 

SQL Server 2016 Failover + ALwaysOn功能配置介绍

 

我们上一篇介绍了SQL Server 2016 Failover Cluster的配置,今天我们继续上一篇没有完成的配置介绍,准备增加一个节点,然后配置实现AlwaysOn配置,实现SQL Server 2016 Failover Cluster+ ALwaysOn达到SQL Server的单点故障及高可用性,SQL Server 2016 Failover Cluster已经完成了配置,接着我们配置 ALwaysOn,我们准备了一台SQL服务器,但是也需要加入到集群节点;我们下面是上节的配置介绍图;
Hostname:DC1
Role:DC
IP:192.168.5.20
Domain:ixmsoft.com
Hostname:ISCSI
IP:192.168.5.38
Role:Storage
Hostname:S1
Role:SQL Server 2016
IP:192.168.5.41
Hostname:S2
Role:SQL Server 2016
IP:192.168.5.42
Hostname:AO1
Role:SQL Server 2016
IP:192.168.5.43
SQL-CLUSTER
192.168.5.46
SQLCLUSTER
192.168.5.47
HA-LP1
ListenIP:192.168.5.48
SQL Server 2016 Failover Cluster + ALwaysOn_SQL Server
我们首先在新的节点上安装集群故障转移角色
SQL Server 2016 Failover Cluster + ALwaysOn_SQL Server_56
我们现在在群集节点上增加节点,将第三台SQL加入该节点
SQL Server 2016 Failover Cluster + ALwaysOn_SQL Server_57
输入新节点的名称
SQL Server 2016 Failover Cluster + ALwaysOn_SQL Server_58
验证通过
SQL Server 2016 Failover Cluster + ALwaysOn_SQL Server_59
测试通过后,直接增加节点
SQL Server 2016 Failover Cluster + ALwaysOn_SQL Server_60
节点增加完成
SQL Server 2016 Failover Cluster + ALwaysOn_SQL Server_61
我们再次查看节点信息
SQL Server 2016 Failover Cluster + ALwaysOn_SQL Server_62
我们接着安装独立SQL实例
SQL Server 2016 Failover Cluster + ALwaysOn_SQL Server_63
我们安装功能角色
SQL Server 2016 Failover Cluster + ALwaysOn_SQL Server_64
必须要命名一个实例,因为已经在集群中创建了一个默认实例;如果你已在群集中装了一个SQL群集实例,则再在群集中的节点上安装SQL实例时(无论单机
还是群集的),不能再使用这个实例名称。也就是说你已经在群集节点1、2上装了群集的SQL
默认实例的话,则在节点3上也不能再安装单机的SQL默认实例。这种情况下可以选择在节点
上3安装一个SQL命名实例,
SQL Server 2016 Failover Cluster + ALwaysOn_SQL Server_65
定义账户信息
SQL Server 2016 Failover Cluster + ALwaysOn_SQL Server_66
服务器配置信息
SQL Server 2016 Failover Cluster + ALwaysOn_SQL Server_67
数据目录我们定义到本地即可
SQL Server 2016 Failover Cluster + ALwaysOn_SQL Server_68
安装完成
SQL Server 2016 Failover Cluster + ALwaysOn_SQL Server_69
节点三安装完后,我们发现服务没有端口,默认额SQL 端口是1433,所以我们修改默认端口---SQL Server配置管理中
SQL Server 2016 Failover Cluster + ALwaysOn_SQL Server_70
SQL Server 2016 Failover Cluster + ALwaysOn_SQL Server_71

 

 

 

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服务后生效)。
我们还是继续回顾上面的架构图
SQL Server 2016 Failover Cluster + ALwaysOn_SQL Server
接下来我们配置ALwaysOn High Availability,我们发现提示错误,但是有引导我们如何配置
SQL Server 2016 Failover Cluster + ALwaysOn_SQL Server_73
我们通过SSMS右击--AlwayOn High Avaliablity 会有一个提示,意思是必须为服务器实例启用AlwaysOn功能,之后才能在此实例上创建可用性组,若要启用AlowaysOn,请打开SQL Server配置管理器,右键单击SQL Server实例名称,选择属性,然后使用SQL Server属性对话框的AlwaysOn高可用性选项卡,我们链接集群地址,点击ALways High Availability,提示我们开启的方法了
注意:我们使用SSMS连接到SQL Server后,在服务器属性对话框中,单击一般页面。 的HADR启用属性
显示下列值之一:真正的如果启用了总是在可用性组织;假,如果总是在可用性组是禁用的。
SQL Server 2016 Failover Cluster + ALwaysOn_SQL Server_74
所以我们要开启功能
SQL Server 2016 Failover Cluster + ALwaysOn_SQL Server_75
SQL Server服务---属性--右击
SQL Server 2016 Failover Cluster + ALwaysOn_SQL Server_76
我们将SQL Server服务的登录账户换成域账户
SQL Server 2016 Failover Cluster + ALwaysOn_SQL Server_77
我们勾选启用AlwayOn可用性组
SQL Server 2016 Failover Cluster + ALwaysOn_SQL Server_78
应用--确认后,需要重启数据库服务
SQL Server 2016 Failover Cluster + ALwaysOn_SQL Server_79
正在重启服务
SQL Server 2016 Failover Cluster + ALwaysOn_SQL Server_80
第二台服务器的AlwaysOn当节点切换到节点2的时候,发先是自动勾选的;所以不用勾选;另外当角色不在操作的节点的时候,我们就会发现LWAYSON高可用无法操作;属于正常现
象;我们可以通过系统提示的信息就会知道
SQL Server 2016 Failover Cluster + ALwaysOn_SQL Server_81
我们再次查看角色的状态:以下状态属于正常现象,原因是由于启用了ALwaysOn高可用
SQL Server 2016 Failover Cluster + ALwaysOn_SQL Server_82
这种情况下可以选择在节点上3安装一个SQL命名实例,然后在它和之前的SQL群集实例之间创建AlwaysOn可用性组关系。
另外AlwaysOn功能的开启是在实例级设置的,这里你一共有2个SQL实例,所以就需要对这2个SQL实例分别进行设置。对于SQL群集实例,在其任一所有者节点上使用SQL Server
configuration manager设置一次就可以了(重启SQL服务后生效)。
我们同样先将节点三的ALwaysOn高可用性功能打开
SQL Server 2016 Failover Cluster + ALwaysOn_SQL Server_83
我们用SSMS链接实例
SQL Server 2016 Failover Cluster + ALwaysOn_SQL Server_84
我们都知道高可用性是基于DB的,所以我们需要创建数据库:HAGourpDB1
SQL Server 2016 Failover Cluster + ALwaysOn_SQL Server_85
同时创建一张表,perinfo
SQL Server 2016 Failover Cluster + ALwaysOn_SQL Server_86
我们插入数据
SQL Server 2016 Failover Cluster + ALwaysOn_SQL Server_87
我们开始在集群实例下创建高可用性组
SQL Server 2016 Failover Cluster + ALwaysOn_SQL Server_88
勾选数据库层运行状态检测,定义高可用性组的名称:HA-GP1
SQL Server 2016 Failover Cluster + ALwaysOn_SQL Server_89
提示需要首先完整备份
SQL Server 2016 Failover Cluster + ALwaysOn_SQL Server_90
所以我们先备份一下
SQL Server 2016 Failover Cluster + ALwaysOn_SQL Server_91
完整备份及备份类型
SQL Server 2016 Failover Cluster + ALwaysOn_SQL Server_92
备份完成
SQL Server 2016 Failover Cluster + ALwaysOn_SQL Server_93
我们同样备份Log
SQL Server 2016 Failover Cluster + ALwaysOn_SQL Server_94
我们需要将备份的数据库和log在三节点还原一次
SQL Server 2016 Failover Cluster + ALwaysOn_SQL Server_95
恢复状态:RESTORE WITH NORECOVERY
SQL Server 2016 Failover Cluster + ALwaysOn_SQL Server_96
恢复完成
SQL Server 2016 Failover Cluster + ALwaysOn_SQL Server_97
数据库状态未还原模式
SQL Server 2016 Failover Cluster + ALwaysOn_SQL Server_98
恢复事务log
SQL Server 2016 Failover Cluster + ALwaysOn_SQL Server_99
同样选择恢复状态
SQL Server 2016 Failover Cluster + ALwaysOn_SQL Server_100
恢复完成
SQL Server 2016 Failover Cluster + ALwaysOn_SQL Server_101
我们继续创建高可用性组,满足条件继续下一步
SQL Server 2016 Failover Cluster + ALwaysOn_SQL Server_102
我们增加副本
SQL Server 2016 Failover Cluster + ALwaysOn_SQL Server_103
无论是主副本或者辅助副本都选择同步提交模式,辅助副本的Readable Secondary选择为Yes。只是为了后面的只读辅助数据库准备。
SQL Server 2016 Failover Cluster + ALwaysOn_SQL Server_104
AlwaysOn和镜像一样都采用Endpoint(端点)来进行数据传输。AlwaysOn使用端点是为了和辅助副本进行日志传输和心跳线的通信
SQL Server 2016 Failover Cluster + ALwaysOn_SQL Server_105
备份优先级勾选Prefer Secondary。意思是有限考虑辅助副本上做数据备份。只有在没有辅助副本的情况下才使用主副本。把辅助副本的优先级别调为100,而主副本50。
SQL Server 2016 Failover Cluster + ALwaysOn_SQL Server_106
我们监听端口稍后创建
SQL Server 2016 Failover Cluster + ALwaysOn_SQL Server_107
确认即可---yes
SQL Server 2016 Failover Cluster + ALwaysOn_SQL Server_108
这个地方是选择初始化数据库的方式。如果你选择Full,你需要提供一个共享地址,AlwaysOn自己自动备份数据库然后还原到目标的辅助副本上。这里我们选择Join only,所以
我们需要事先把数据库备份并还原到目标的辅助数据库上----Join only
SQL Server 2016 Failover Cluster + ALwaysOn_SQL Server_109
开始下一步后,我们查看状态
SQL Server 2016 Failover Cluster + ALwaysOn_SQL Server_110
创建完成
SQL Server 2016 Failover Cluster + ALwaysOn_SQL Server_111
SQL Server 2016 Failover Cluster + ALwaysOn_SQL Server_112
我们展开数据库高可用性组
SQL Server 2016 Failover Cluster + ALwaysOn_SQL Server_113
我们查看角色会多出一个高可用性组角色
SQL Server 2016 Failover Cluster + ALwaysOn_SQL Server_114
我们接着创建一个监听
AlwaysOn创建后,客户端就需要进行连接,为了让应用程序能够透明地连接到主副本而不受故障故障转移的影响,我们需要创建一个侦听器,侦听器就是一个虚拟的网络名称,可以通过这个虚拟网络名称访问可用性组,而不用关心连接的是哪一个节点,它会自动将请求转发到主节点,当主节点发生故障后,辅助节点会变为主节点,侦听器也会自动去侦听主节点。
一个侦听器包括虚拟IP地址、虚拟网络名称、端口号三个元素,一旦创建成功,虚拟网络名称会注册到DNS中,同时为可用性组资源添加IP地址资源和网络名称资源。用户就可以使用此名称来连接到可用性组中。与故障转移群集不同,除了使用虚拟网络名称之外,主副本的真实实例名还可以被用来连接。
SQL Server2012早期版本的SQL Server只有在实例启动的时候地会尝试绑定IP和端口,但是SQL Server2012却允许在副本实例处于运行状况的时候随时绑定新的IP地址、网络名称和端口号。因此可以为随时为为可用性组添加侦听器,而且这个操作会立即生效。当添加了侦听器之后,在SQL Server的错误日志中可以看到类似:在虚拟网络名称上停止和启动侦听器的消息。
要注意的是,SQLBrowser服务是不支持Listener的。这是因为应用程序在使用Listener的虚拟网络名连接SQLServer时,是以一个默认实例的形式进行访问的(只有主机名,没有实例名),因此客户端根本就不会去尝试使用SQLBrowser服务。
SQL Server 2016 Failover Cluster + ALwaysOn_SQL Server_115
定义监听名称及IP
名称:HA-LST;
IP地址:192.168.5.48;
Port为1433
SQL Server 2016 Failover Cluster + ALwaysOn_SQL Server_116
定义完成
SQL Server 2016 Failover Cluster + ALwaysOn_SQL Server_117
我们在查看角色,就会发现有对应的管理地址了
SQL Server 2016 Failover Cluster + ALwaysOn_SQL Server_118
定义完成后,我们可以查看高可用行组的显示面板
SQL Server 2016 Failover Cluster + ALwaysOn_SQL Server_119
我们可以通过显示面板查看高可用性组的状态
SQL Server 2016 Failover Cluster + ALwaysOn_SQL Server_120
接下来我们切换一下;切换前我们需要注意一个问题:切换的时候不能在集群管理器里面切换,需要在高可用性组下切换,不然会有问题,就算切换成功了,有些数据也会出现问题
我们首先在集群管理器里面查看节点所有者
SQL Server 2016 Failover Cluster + ALwaysOn_SQL Server_121
另外我们连接到群集节点后,发现高可用性组下的可用性副本的节点属于辅助节点;
SQL Server 2016 Failover Cluster + ALwaysOn_SQL Server_122
接下来我们准备开始切换,我们使用SSMS连接到第三个节点实例
查看当前可用性组下在第三个节点处于辅助副本状态
SQL Server 2016 Failover Cluster + ALwaysOn_SQL Server_123
我们开始切换
SQL Server 2016 Failover Cluster + ALwaysOn_SQL Server_124
选择主副本
SQL Server 2016 Failover Cluster + ALwaysOn_SQL Server_125
确认信息
SQL Server 2016 Failover Cluster + ALwaysOn_SQL Server_126
转移完成
SQL Server 2016 Failover Cluster + ALwaysOn_SQL Server_127
我们再查看AO1第三节点的AG状态就成了主副本了
SQL Server 2016 Failover Cluster + ALwaysOn_SQL Server_128
我们再从主切换到备
SQL Server 2016 Failover Cluster + ALwaysOn_SQL Server_129
选择新的主副本
SQL Server 2016 Failover Cluster + ALwaysOn_SQL Server_130
链接副本
SQL Server 2016 Failover Cluster + ALwaysOn_SQL Server_131
开始连接
SQL Server 2016 Failover Cluster + ALwaysOn_SQL Server_132
链接成功
SQL Server 2016 Failover Cluster + ALwaysOn_SQL Server_133
确认转移信息
SQL Server 2016 Failover Cluster + ALwaysOn_SQL Server_134
转移完成
SQL Server 2016 Failover Cluster + ALwaysOn_SQL Server_135
我们从SQLCLUSTER上插入一条数据
SQL Server 2016 Failover Cluster + ALwaysOn_SQL Server_136
然后从AO1上查看数据
SQL Server 2016 Failover Cluster + ALwaysOn_SQL Server_137
我们从AO1上插入数据提示,数据库为只读,所以无法插入数据
SQL Server 2016 Failover Cluster + ALwaysOn_SQL Server_138
原因是由于当前节点属于第二节点,如果可读可写的话,需要将该节点转移到主副本节点才可以
SQL Server 2016 Failover Cluster + ALwaysOn_SQL Server_139
我们将AO1\ALWAYON下的AG下的HA-GP1从从副本转移到主副本我们再次插入数据
SQL Server 2016 Failover Cluster + ALwaysOn_SQL Server_140
转移完成
SQL Server 2016 Failover Cluster + ALwaysOn_SQL Server_141
SQL Server 2016 Failover Cluster + ALwaysOn_SQL Server_142
我们再次尝试插入数据
SQL Server 2016 Failover Cluster + ALwaysOn_SQL Server_143
我们从SQLCLUSTER集群节点查看数据是否同步
SQL Server 2016 Failover Cluster + ALwaysOn_SQL Server_144
我们再次到SQLCLUSTER节点插入数据,提示错误
原因是节点属于AO1
SQL Server 2016 Failover Cluster + ALwaysOn_SQL Server_145
但是我们查看数据,从当前节点从AO1插入的数据依然可以同步到SQLCLUSTER
SQL Server 2016 Failover Cluster + ALwaysOn_SQL Server_146
各副本间的数据同步
AlwaysOn必须要维护各副本间的数据一致性,当主副本上的数据发生变化,会同步到辅助副本上。这里AlwaysOn通过三个步骤来完成:
步骤1:主副本记录发生变化的数据;
步骤2:将记录传输到各个辅助副本;
步骤3:把数据变化操作在辅助副本上执行一遍。
具体实现如下:
在主副本和辅助副本上,SQL Server都会启动相应的线程来完成相应的任务。对于一般的SQL Server服务器,即没有配置高可用性,会运行Log Writer的线程,当发生数据修改事务时,此线程负责将本次操对应的日志信息记录到日志缓冲区中,然后再写入到物理日志文件。但如果配置了AlwaysOny主副本的数据库,SQL Server会为它建立一个叫Log Scanner的线程,不间断的工作,负责将日志从日志缓冲区或日志文件里读出,打包成日志块,发送到辅助副本。因此可以保证发生的数据变化,不断送给各辅助副本。
辅助副本上存在固化和重做两个线程完成数据更新操作,固化线程会将主副本Log Scanner所发过来的日志块写入辅助副本磁盘上的日志文件里,因此称为固化,然后重做线程负责从磁盘上读取日志块,将日志记录对应的操作重演一遍,此时主副本和辅助副本上的数据就一致了。重做线程每隔固定的时间点,会跟主副本通信,告知自己的工作进度。主副本由此知道两边数据的差距。Log Scanner负责传送日志块,不需要等待Log Writer完成日志固化;辅助副本完成日志固化以后就会发送消息到主副本,告知数据传输完成,而不需要等待重做完成,这样各自独立的设计,是尽可能减少 AlwaysOn所带来的操作对数据库性能的影响。

 

 

SQL Server 2016 ALwaysOn 增多个客户端访问点(侦听器)

我们前面3片文章介绍了SQL Server 2016 Failover Cluster+ ALwaysOn的完整配置,今天我们介绍一下如果给ALwaysOn增加多个客户端访问点,常规情况下,每个可用性组只有一个单独的可用性组侦听器(Listener),但是在某些极端情况下可能会对相同的可用性组创建多个侦听器。比如一些历史遗留问题。此时可能需要创建一个额外的侦听器用于硬编码。
但是,通过图形化界面(SSMS)、T-SQL甚至PowerShell都不能创建第二个侦听器,必须使用Failover Cluster Manager来实现。我们在我们的“SQLAG”角色内创建一个客户端接入点(Client Access Point)资源。按下面步骤:
我们打开故障转移群集管理器----角色---选择AG---增加资源--客户端访问点
SQL Server 2016 Failover Cluster + ALwaysOn_SQL Server_148
我们就可以定义客户端访问点名称及对应的访问点IP
SQL Server 2016 Failover Cluster + ALwaysOn_SQL Server_149
确认信息
SQL Server 2016 Failover Cluster + ALwaysOn_SQL Server_150
增加完成
SQL Server 2016 Failover Cluster + ALwaysOn_SQL Server_151
此时我们就可以在角色---AG下看见两个访问名称及IP地址
SQL Server 2016 Failover Cluster + ALwaysOn_SQL Server_152
状态是部分运行中
SQL Server 2016 Failover Cluster + ALwaysOn_SQL Server_153
我们资源---发现刚才新增加的是脱机状态
SQL Server 2016 Failover Cluster + ALwaysOn_SQL Server_154
此时我们右键新的客户端访问点并选择属性:
SQL Server 2016 Failover Cluster + ALwaysOn_SQL Server_155
依赖关系
SQL Server 2016 Failover Cluster + ALwaysOn_SQL Server_156
选择之前的监听器
SQL Server 2016 Failover Cluster + ALwaysOn_SQL Server_157
我们右击联机即可
SQL Server 2016 Failover Cluster + ALwaysOn_SQL Server_158
联机后,我们用这两个监听器地址都可以链接管理的
SQL Server 2016 Failover Cluster + ALwaysOn_SQL Server_159

 

 

 

 

 

SQL Server 2016 Failover +AlwaysOn 增加数据库到可用性组

SQL Server Failover +AlwaysOn 增加数据库到可用性组
前面几篇文章都已经详细介绍了SQL Server Failover +AlwaysOn 的配置,今天我们主要介绍SQL Server Failover Cluster+AlwaysOn下 增加数据库到可用性组
我们首先需要创建一个数据库及表
SQL Server 2016 Failover Cluster + ALwaysOn_SQL Server_161
数据库名称
HAGroupDB2
SQL Server 2016 Failover Cluster + ALwaysOn_SQL Server_162
创建表
SQL Server 2016 Failover Cluster + ALwaysOn_SQL Server_163
给表插入数据
SQL Server 2016 Failover Cluster + ALwaysOn_SQL Server_164
我们把这个数据库增加到高可用性组中;当前新建的数据库没有同步
SQL Server 2016 Failover Cluster + ALwaysOn_SQL Server_165
我们再高可用性组下增加数据库
SQL Server 2016 Failover Cluster + ALwaysOn_SQL Server_166
提示需要我们完整备份一下
SQL Server 2016 Failover Cluster + ALwaysOn_SQL Server_167
所以我们备份
SQL Server 2016 Failover Cluster + ALwaysOn_SQL Server_168
我们同时也备份事务日志
SQL Server 2016 Failover Cluster + ALwaysOn_SQL Server_169
备份完成后,我们换需要将备份的数据库和事物log在节点3上进行还原
SQL Server 2016 Failover Cluster + ALwaysOn_SQL Server_170
还原数据库
SQL Server 2016 Failover Cluster + ALwaysOn_SQL Server_171
还原时候,选项中必须选择还原状态:RESTORE WITH NORECOVERY
SQL Server 2016 Failover Cluster + ALwaysOn_SQL Server_172
数据库还原完成
SQL Server 2016 Failover Cluster + ALwaysOn_SQL Server_173
我们查看还原状态
SQL Server 2016 Failover Cluster + ALwaysOn_SQL Server_174
再还原事物日志
SQL Server 2016 Failover Cluster + ALwaysOn_SQL Server_175
SQL Server 2016 Failover Cluster + ALwaysOn_SQL Server_176
还原选项---我们选择第二个选项---RESOTRE WITH NORECOVERY
SQL Server 2016 Failover Cluster + ALwaysOn_SQL Server_177
还原完成
SQL Server 2016 Failover Cluster + ALwaysOn_SQL Server_178
我们还原了数据库和事务日志后,数据库的状态未正在还原状态
SQL Server 2016 Failover Cluster + ALwaysOn_SQL Server_179
接下来我们就开始增加数据库到AG中了
SQL Server 2016 Failover Cluster + ALwaysOn_SQL Server_180
我们选择Join only
SQL Server 2016 Failover Cluster + ALwaysOn_SQL Server_181
我们链接已存在的副本服务器
SQL Server 2016 Failover Cluster + ALwaysOn_SQL Server_182
连接成功
SQL Server 2016 Failover Cluster + ALwaysOn_SQL Server_183
加入成功
SQL Server 2016 Failover Cluster + ALwaysOn_SQL Server_184
我们查看AG中的数据库信息
SQL Server 2016 Failover Cluster + ALwaysOn_SQL Server_185
查看集群数据库的状态,也成为了已同步
SQL Server 2016 Failover Cluster + ALwaysOn_SQL Server_186
SQL Server 2016 Failover Cluster + ALwaysOn_SQL Server_187
我们查看面板,一切正常
SQL Server 2016 Failover Cluster + ALwaysOn_SQL Server_188
综合上面的操作,我们可以使用powershell来完成

$DatabaseBackupFile = "\\share\backups\MyDatabase.bak"  
$LogBackupFile = "\\share\backups\MyDatabase.trn"  
$MyAgPrimaryPath = "SQLSERVER:\SQL\PrimaryServer\InstanceName\AvailabilityGroups\MyAg"  
$MyAgSecondaryPath = "SQLSERVER:\SQL\SecondaryServer\InstanceName\AvailabilityGroups\MyAg"  

Backup-SqlDatabase -Database "MyDatabase" -BackupFile $DatabaseBackupFile -ServerInstance "PrimaryServer\InstanceName"  
Backup-SqlDatabase -Database "MyDatabase" -BackupFile $LogBackupFile -ServerInstance "PrimaryServer\InstanceName" -BackupAction 'Log'  

Restore-SqlDatabase -Database "MyDatabase" -BackupFile $DatabaseBackupFile -ServerInstance "SecondaryServer\InstanceName" -NoRecovery  
Restore-SqlDatabase -Database "MyDatabase" -BackupFile $LogBackupFile -ServerInstance "SecondaryServer\InstanceName" -RestoreAction 'Log' -NoRecovery  

Add-SqlAvailabilityDatabase -Path $MyAgPrimaryPath -Database "MyDatabase"  
Add-SqlAvailabilityDatabase -Path $MyAgSecondaryPath -Database "MyDatabase"  
©著作权归作者所有:来自51CTO博客作者高文龙的原创作品,如需转载,请注明出处,否则将追究法律责任
为人:谦逊、激情、博学、审问、慎思、明辨、 笃行
学问:纸上得来终觉浅,绝知此事要躬行
为事:工欲善其事,必先利其器。
转载请标注出处!