SQL Server2016无域群集与高可用性AlwaysON配置新手教程
一、准备工作:
1.安装服务器操作系统,这里以为windwows server 2016 标准版为系统环境。
准备至少两台及以上的windows server服务器,本教程以双机热备功能为例。
系统环境为:
①两台服务器均安装 windwows server 2016 标准版操作系统。
②两台计算机均在同一网络环境下。
③**系统。
④先完全关闭两台server的防火墙,配置设置完成后再添加防火墙端口访问规则。
2.配置计算机名及DNS后缀。
(不要使用默认的随机计算机名,会给后续配置群集时输入带来不便)
计算机名称及IP地址配置如下:
计算机名:DB01 IP地址: 192.168.31.49
计算机名:DB02 IP地址: 192.168.31.48
非域环境下DNS后缀必须要配置。
具体步骤如下图:
右键我的电脑->属性->更改设置-
设置完以后需要点击"确定"按钮,才可以保存,保存完之后,提示重启计算机。
因为是新装的服务器,没有相关业务应用,直接重启即可。
(需要在安装SQL server前进行计算名称的配置修改,否则后续会多一些配置步骤)
3.修改hosts文件及确认网络通信正常。
hosts文件路径是:C:\Windows\System32\drivers\etc
符号#为单行注释,前面填写IP地址,空格,后面填写域名或计算机名。
使用文本编辑器编辑hosts,加入配置节如下图:
修改完后,对网络连接进行检查(双向的检查,两台需要测试互通)。
使用ping 命令,ping 计算机名/域名,进行测试(不是ping IP)。
使用ipconfig /all 检查主计算机名称和DNS后缀以及IP地址 子网掩码 网关 等相关配置
4.修改系统设定项。
1.确认当前登陆计算机的用户是管理员用户,两台server具有相同的用户名和密码。
2.检查服务,启动如下服务:
网络共享服务 server
远程注册表服务 Remote Registry
WMI服务 Windows Management Instrumentation
3.组策略gpedit.msc (域用户下面的配置就不需要管这些策略)
后续步骤如有异常,需要注意回来检查如下配置节的设置是否正确:
windows设置->安全设置->本地策略->用户权限分配
windows设置->安全设置->本地策略->安全选项
网络访问: 本地帐户的共享和安全模型-> 必须配置为"经典"
二、安装server群集和故障转移:
添加角色和功能
如果没有安装.net framework3.5,则勾选安装。
中间没有特殊选项的步骤可以直接点下一步,关键选项如下:
勾选故障转移群集->点击添加功能
一直下一步,等待片刻,直到安装过程完成。
安装完成后,打开群集管理工具.如下图:
验证配置:
输入DB01的计算机名或者域名,然后点击添加按钮.
再输入DB02的计算机名或者域名,同样点击添加按钮.
将两台server都添加进列表之后,才点击下一步。
(不要尝试点击"浏览"按钮进行添加,可能根本就不弹出任何列表)
运行所有测试。
测试结果中,测试不适用和已通过测试,都是正常情况。
如果出现红色的测试不成功错误信息,需要额外注意看一下。
除了AD域的错误提示之外的其它错误需要根据信息进行灵活的排错。
比如访问权限受限,或者远程注册表服务没有开启等。
测试成功后,就可以马上利用本次的测试来创建群集了。
如下图所示:(勾选"立即使用经过验证的节点创建群集")
输入群集的名称和群集IP地址。然后下一步。
群集创建完成后的界面如下:
群集创建完成后,注意节点的数量和状态。
创建群集只需要在一台server上面操作创建就可以了。
如果群集状态不正常,在另外一台服务器(非主服务器),可以直接连接到群集,测试和验证一下群集配置。
到目前为止,群集创建基本完成,但是还缺少仲裁配置。
仲裁可以使用仲裁磁盘,也可以使用共享文件夹。
仲裁磁盘需要添加群集磁盘和配置iSCSI发起程序与磁盘联机,比较复杂。
这里使用共享文件夹进行仲裁。
输入计算机名,点击显示共享文件夹,确定->下一步
到此为止,群集配置完毕。
群集已经有了节点,群集的角色功能列表中目前是空着的。
角色功能需要在SQL server中操作AlwaysON,由SQL server来配置角色。
三、SQL server 安装配置
1.安装SQL server 2016 企业版。
①虚拟光驱加载ISO镜像文件。
② 全新或独立安装。
下一步
根据自己需要的功能勾选,通常只需要勾选少量几个功能:
数据库引擎,SQL server复制,客户端工具链接,管理工具-基本/完整
如果是新系统,没有安装过SQL server任何版本和实例。可以选择默认实例,默认实例的配置相对简单。
指定SQL server管理员,点击"添加当前用户"
请选择混合模式,配置sa默认密码
安装完成。
2.配置SQL server 远程访问,开启AlwaysON.
①
找到自己安装的实例对应的TCP/IP服务,确定是已启用。
切换到IP地址,找到本机对应的IP地址,设置为启用,TCP端口设置sql server默认的1433端口即可。(最下面的IPAll不要设置)
②找到自己安装的实例对应的SQL数据库引擎主服务,启用AlwaysON。
(只有在server群集下才可以启用。)
启动AlwaysON和修改IP以后,务必重启当前实例的服务,否则无法生效。
四、Always ON配置
1.前置步骤:
①在主服务器DB01上面恢复和还原数据库。
②右键数据库->属性->选项->修改数据库属性,自动关闭改为False.
2.检查两台SQL服务器的配置。
确认已经启用HADR。
查看计算机名称和实例名称是否正确。
select @@SERVERNAME
--删除server名称
exec sp_dropserver @@ServerName
-- 添加本地server名称
exec sp_addserver 'CHENS\MSSQL','LOCAL'
-- 查询可用server列表
exec sp_helpserver
查看群集节点成员
select * from sys.dm_hadr_cluster_members
select * from sys.dm_hadr_cluster_networks
3.配置证书。
(非域环境下的SQL alwaysON必须配置证书,域环境下则不需要此步骤)
DB01和DB02分别配置和生成一个证书。核心代码如下(两台都需要执行,只需要修改下面的DB01和DB02部分):
1.生成证书
USE master;
GO
--创建证书。
CREATE MASTER KEY ENCRYPTION BY PASSWORD = 'DBserver2016';--指定**
GO
CREATE CERTIFICATE Cert_DB02--证书名称
WITH SUBJECT = 'Cert_DB02',--主题
START_DATE = '2017-01-01',EXPIRY_DATE = '2099-12-30'; --有效时间
GO
BACKUP CERTIFICATE Cert_DB02--备份证书到文件
TO FILE = 'D:\DB02.cer';
GO
CREATE ENDPOINT [DB02_endpoint]--使用指定的证书,创建镜像端点
STATE=STARTED
AS TCP (LISTENER_PORT = 5022, LISTENER_IP = ALL)
FOR DATA_MIRRORING
(ROLE = ALL,AUTHENTICATION = CERTIFICATE Cert_DB02, ENCRYPTION = REQUIRED ALGORITHM AES)
GO
如果不慎配置过程中失败了,可以重新来过。如果已经成功配置完成了,下面的3个删除代码请谨慎使用。
drop endpoint [DB02_endpoint] --删除镜像端点
drop certificate Cert_DB02--删除证书
drop master key --删除主**
2.导入对方的生成证书。
把证书拷贝到仲裁共享目录,或者是使用其它方式拷贝发送。
使得两台计算机分别导入对方生成的证书。
在DB01上导入DB02生成的证书,在DB02上面导入DB01生成的证书。
--例如:在DB02上执行:使用导入方式创建节点一的证书
USE master;
GO
CREATE CERTIFICATE Cert_DB01
FROM FILE = 'C:\certCommon\DB01.cer';
GO
下面附个代码块,如果上面的代码不理解,不清楚怎么生产后互相交换导入的过程,可用参照下面这个代码操作.否则直接跳过.
--因为无域账号认证,故需创建证书,以便节点之间互相信任访问。
USE master;
GO
CREATE MASTER KEY ENCRYPTION BY PASSWORD = 'aaa@qq.com'; ----密码
GO
CREATE CERTIFICATE Cert_DB01
WITH SUBJECT = 'Cert_DB01',
START_DATE = '2017-12-01',EXPIRY_DATE = '2099-12-31';
GO
BACKUP CERTIFICATE Cert_DB01
TO FILE = '\\WindowsServer01\SQLAlwaysOnShare\Cert_DB01.cer';
GO
CREATE ENDPOINT [SQLAG_Endpoint]
AUTHORIZATION [WindowsServer01\administrator]
STATE=STARTED
AS TCP (LISTENER_PORT = 5022, LISTENER_IP = ALL)
FOR DATA_MIRRORING
(ROLE = ALL,AUTHENTICATION = CERTIFICATE Cert_DB01, ENCRYPTION = REQUIRED ALGORITHM AES)
GO
--节点二上执行:创建主**/证书,备份证书。
USE master;
GO
CREATE MASTER KEY ENCRYPTION BY PASSWORD = 'aaa@qq.com';
GO
CREATE CERTIFICATE Cert_DB02
WITH SUBJECT = 'Cert_DB02',
START_DATE = '2017-12-01',EXPIRY_DATE = '2099-12-31';
GO
BACKUP CERTIFICATE Cert_DB02
TO FILE = '\\WindowsServer01\SQLAlwaysOnShare\Cert_DB02.cer';
GO
CREATE ENDPOINT [SQLAG_Endpoint]
AUTHORIZATION [WindowsServer01\administrator]
STATE=STARTED
AS TCP (LISTENER_PORT = 5022, LISTENER_IP = ALL)
FOR DATA_MIRRORING
(ROLE = ALL,AUTHENTICATION = CERTIFICATE Cert_DB02, ENCRYPTION = REQUIRED ALGORITHM AES)
GO
--节点一上执行:创建节点二的证书
USE master;
GO
CREATE CERTIFICATE Cert_DB02
FROM FILE = '\\WindowsServer01\SQLAlwaysOnShare\Cert_DB02.cer';
GO
--节点二上执行:创建节点一的证书
USE master;
GO
CREATE CERTIFICATE Cert_DB01
FROM FILE = '\\WindowsServer01\SQLAlwaysOnShare\Cert_DB01.cer';
GO
4.配置可用性组
证书处理完毕以后,就可以开始真正进行高可用性配置了
(输入可用性组的名字,这里输入的可用性组的名字,其实就是对应着群集角色下面的角色名字)
选择和勾选高可用性数据库,下一步。
添加副本。
检查端点信息:
(这里的端点信息,其实就是上面SQL语句生成的端点,例如DB02_endpoint)
点击下一步,到数据库同步选项,请优先选择<自动种子设定>。(SQL企业版才有的功能,截图的时候由于我的已经创建完成了,不能再次创建,网上找了一个其它版本的截图过来)
可用性验证成功。
一直点击下一步,直到完成。
输入侦听器的IP地址,例如192.168.31.51,端口1533.
侦听器创建完成之后即可使用侦听器的IP地址和端口进行数据库访问。
至此,所有步骤已经写完。剩下的就是恢复启用防火墙,
设置防火墙端口出入站规则。
放行默认SQL的1433端口,侦听器的1533端口,和镜像端点传输专用的5022端口等。
防火墙自行配制出入站端口规则,谢谢。
下一篇: 第一章-Git的安装与启动