IP |
名称 |
说明 |
192.168.1.111 |
WIN16-TEST.test.com |
节点1 |
192.168.1.112 |
WIN16-TEST02.test.com |
节点2 |
192.168.1.113 |
test-cluster |
Windows群集名 |
192.168.1.114 |
lsnr-test |
SQL Server侦听器名 |
系统选择,一定要选择带【桌面体验】的,不然就会安装了没有GUI界面
区别参考
https://www.cnblogs.com/jerryguo/articles/11027039.html
安装完会自动重启,然后设置管理员密码
好了,可以用了
参考 https://jingyan.baidu.com/article/6b182309ed8479ba58e159a1.html
配置主机ip及DNS
克隆一台机器作为从库
2. 配置计算机名和DNS后缀
每个节点的计算机不需要加入域,但需要添加DNS后缀,且每个节点的后缀必须要相同(例如:test.com,需重启生效),如下图:
3. 将DNS服务器地址改为本地
如果是直接分配好的机器,需要修改DNS地址为本地
4. 添加sqlserver管理用户
在每个节点上都添加一个本地用户(mssql.admin),且用户名及密码每个节点都一致,使2台服务器能访问共享文件夹,也作为sqlserver管理员用户。
5. 配置主机名解析
在每个节点的 hosts 文件中添加每个节点的服务器IP地址和主机名称、群集IP地址和名称、侦听器IP地址和名称:
hosts文件路径:C:\Windows\System32\drivers\etc
6. 设置允许应用或功能通过防火墙
所有节点均要设置,按照下面图中红框设置,注意选项后面打勾的位置。
7. 启用所需服务并且改成自启动
8. 创建故障转移群集
可以用administrator或者添加到管理员组的普通用户来创建,两节点用户名密码必须相同;如果是后者,还需要在两节点注册表添加 LocalAccountTokenFilterPolicy为1
以管理员模式打开powershell,执行:
new-itemproperty -path HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System -Name LocalAccountTokenFilterPolicy -Value 1
https://support.microsoft.com/zh-cn/help/942817/how-to-change-the-remote-uac-localaccounttokenfilterpolicy-registry-se
否则添加第二台机器时会遇到以下报错
开始创建
直接输入服务器名称然后点添加,通过浏览来查找可能会报错
注意不要勾下面这个,否则磁盘会从本地offline
7. 配置群集仲裁设置
由于我们是两个节点的故障转移集群,所以需要配置群集仲裁设置,如果是奇数节点,这一步是不需要做的
也可以点击浏览直接新建一个共享文件夹
略,参考单实例安装手册,注意两边版本和选择安装的功能要一样
注:sqlserver 2016 SP2开始可以不安装.NET Framework 3.5
https://docs.microsoft.com/en-us/sql/sql-server/install/hardware-and-software-requirements-for-installing-sql-server?view=sql-server-2017
两边用户名和密码要设成一样
重启SQL Server服务
以下将开始数据库中操作,可以先打个虚拟机快照备份
所有节点均需操作
节点1
USE master;
GO
--创建主密钥
CREATE MASTER KEY ENCRYPTION BY PASSWORD = 'xxxx';
--创建证书 这里有两个"CERT1",建议每台机器都改成不同的名称以作区分
CREATE CERTIFICATE CERT1 WITH SUBJECT = 'CERT1', START_DATE = '2017-01-01',EXPIRY_DATE = '2099-12-30';
--把刚才创建的证书备份到文件 这里也有两个CERT1要改
BACKUP CERTIFICATE CERT1 TO FILE = 'C:\cert\CERT1.cer';
--创建终结点,设为证书验证 这里第二行有1个CERT1要改
CREATE ENDPOINT [group0_endpoint] AUTHORIZATION [sa] STATE=STARTED AS TCP (LISTENER_PORT = 5022, LISTENER_IP = ALL)
FOR DATA_MIRRORING (ROLE = ALL,AUTHENTICATION = CERTIFICATE CERT1, ENCRYPTION = REQUIRED ALGORITHM AES)
GO
节点2(注意修改相关内容)
USE master;
GO
--创建主密钥
CREATE MASTER KEY ENCRYPTION BY PASSWORD = 'xxxx';
--创建证书 这里有两个"CERT1",建议每台机器都改成不同的名称以作区分
CREATE CERTIFICATE CERT2 WITH SUBJECT = 'CERT2', START_DATE = '2017-01-01',EXPIRY_DATE = '2099-12-30';
--把刚才创建的证书备份到文件 这里也有两个CERT1要改
BACKUP CERTIFICATE CERT2 TO FILE = 'C:\cert\CERT2.cer';
--创建终结点,设为证书验证 这里第二行有1个CERT1要改
CREATE ENDPOINT [group0_endpoint] AUTHORIZATION [sa] STATE=STARTED AS TCP (LISTENER_PORT = 5022, LISTENER_IP = ALL)
FOR DATA_MIRRORING (ROLE = ALL,AUTHENTICATION = CERTIFICATE CERT2, ENCRYPTION = REQUIRED ALGORITHM AES)
GO
证书通过共享文件互相复制粘贴
载入其它节点证书(不用载入自己的证书)
节点1
CREATE CERTIFICATE CERT2 FROM FILE = 'C:\gdmk\CERT2.cer';
GO
节点2
CREATE CERTIFICATE CERT1 FROM FILE = 'C:\gdmk\CERT1.cer';
GO
在节点1建一个测试库并进行全备
可以选备份配置
配置侦听器(建完ag后配也可以)
关闭节点一 sqlserver服务,可以看到节点2变成了主库
重新启动节点一服务,开启后主从不会自动再次切换
测试数据同步
可以看到角色发生了变化
参考
https://blog.csdn.net/WSD_CSDN/article/details/90410208
https://www.mssqltips.com/sqlservertip/4991/implement-a-sql-server-2016-availability-group-without-active-directory-part-1/
https://www.mssqltips.com/sqlservertip/4996/implement-a-sql-server-2016-availability-group-without-active-directory-part-2/