手把手教学无域搭建SQL server always on 高可用集群部署故障转移
实操!实操!真实生产环境使用!觉对可行!亲测!踩坑无数!绝对靠谱!
查阅网络所有资料,手撸微软官方文档,总结了这篇!
一. 准备环境
额,其实需要额外一台服务器,这台服务器随便什么都行,其实就是选举投票用的。文件服务器也可以。我这里又随便找了一台Windows 10 系统的电脑。
两台数据服务器 + 一台任意服务器
系统
名称
ip地址
服务器
Windows Server 2019
master
192.168.30.251
数据服务器
Windows Server 2019
backup
192.168.30.252
数据服务器
Windows 10
-
192.168.30.130
任意服务器
-
MyCluster
192.168.30.253
虚拟IP
-
MK-SQL
192.168.30.254
虚拟IP
1.设置计算机网络
所有服务器都要配置成上面表格中的ip
2.设置dns
每台服务器都设置
打开文件路径 C:WindowsSystem32driversetc , 编辑 host 文件
添加如下内容,保存。
192.168.30.251 master.supcon.com192.168.30.252 backup.supcon.com192.168.30.253 MyCluster.supcon.com #集群IP,虚拟的192.168.30.254 mk-SQL #监听器IP
然后刷新dns缓存。
打开cmd命令行窗口。输入 ipconfig /flushdns
3.修改计算机名
两台数据服务器都要修改。修改两台,一台叫master,一台叫backup。
二、搭建Windows故障转移集群
打开添加角色和功能,一路下一步,最后勾选 故障转移集群。
最后一步安装完成后,要重启一下服务器,两台数据服务器都要安装,都要重启。
2.配置
打开故障转移集群管理器
创建集群
这一步可以跳过验证,
(因为我已经配置过了,本地不能再配置,所有下面有一些是我在网上找的图,只需要修改我标注的地方)
这里的名字和ip是我们开头的表格中确定好的。上图中如果是多网卡的,要只勾选一个咱们用的的那个网卡。点击下一步。
正在创建
最后会提示创建完成,如果中间失败的话,看错误提示百度问题吧。
完成。 这就会在侧面看到咱们创建好的集群。
如果没有的话,在侧边可打开,
三、251、252安装SqlServer2019
1、C盘中新建一个gdmk文件夹(两台都要建),文件夹权限Everyone读取/写入
2、数据库安装:
略
注意事项:
SqlServer2019安装功能时全选,排除掉”机器学习服务“,用户验证选择“混合模式”,然后下一步…
3、251、252 开启AlwaysOn
开启alwayson
4、在数据库里安装证书
在主服务器运行
USE master;
GOCREATE MASTER KEY ENCRYPTION BY PASSWORD = \'Abc123\';CREATE CERTIFICATE CERT1 WITH SUBJECT = \'CERT1\', START_DATE = \'2017-01-01\',EXPIRY_DATE = \'2099-12-30\';BACKUP CERTIFICATE CERT1 TO FILE = \'C:gdmkCERT1.cer\';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
在从服务器运行
USE master;GOCREATE MASTER KEY ENCRYPTION BY PASSWORD = \'Abc123\';CREATE CERTIFICATE CERT2 WITH SUBJECT = \'CERT2\', START_DATE = \'2017-01-01\',EXPIRY_DATE = \'2099-12-30\';BACKUP CERTIFICATE CERT2 TO FILE = \'C:gdmkCERT2.cer\';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
5、互换和载入对方的证书
将主服务器证书C:gdmkCERT1 拷贝到从服务器目录C:gdmkCERT1
将从服务器证书C:gdmkCERT2 拷贝到主服务器目录C:gdmkCERT2
载入对方证书。
主数据库,在SSMS中执行
CREATE CERTIFICATE CERT2 FROM FILE = ‘C:gdmkCERT2.cer’;
辅助数据库202 ,在SSMS中执行
CREATE CERTIFICATE CERT1 FROM FILE = ‘C:gdmkCERT1.cer’;
SSMS新建可用性组
6、新建数据库,并且运行sql文件导入数据
略
7、数据库备份,
直接确定就可以
8、创建alwayson
名字:myalwayson,下一步
ok,到目前就几本配置完成了,可以测试一下,直接连接 192.168.30.254 这个虚拟IP的数据库就能够连接成功。
4、故障转移仲裁
这一步骤的作用就是,主备切换用的,当主服务器宕机,要把从服务器切换到主。
因为我们只有两台数据服务器是双数,所以默认的多节点选举模式,我们用不了,因为当有任意一台服务器宕机,他们没办法靠自己来判断到底是谁断开连接了,所以咱们就要再让另一台服务器来再投一票,这样就可以知道谁是宕机谁是正常的了。
选择仲裁见证,下一步。
配置文件共享仲裁,下一步
选择共享路径,然后一路下一步,完成。
重点!!!重点!!!重点!!!
因为我们是没加域所以在这里,怎么选择都会报错,(这个地方我搜寻了好几天的资料,网上的几乎所有的博客都没有介绍这里报错怎么搞,最后终于在微软的官网文档找到了解决办法)
如果给服务器加了域,这里应该不会报错。(这我没试过,当初不加域,就是为了省事,省一台域服务器)
所以这个怎么解决呢,看下面。
1、在数据服务器中 打开 PowerShell 提示符。
2、运行以下命令,将群集仲裁配置为使用文件共享见证。 系统会提示输入文件共享见证的本地凭据。
下面的是我的服务器集群名和共享文件夹地址,你们要对应替换成自己的。 将 MyCluster 替换为群集的名称,将 92.168.30.130DSQL_NET 替换为文件共享见证的路径。
Set-ClusterQuorum -Cluster MyCluster -FileShareWitness \\192.168.30.130DSQL_NET -Credential (Get-Credential)
3、验证群集仲裁设置,请运行以下命令。
同样替换MyCluster 为自己的。
Get-ClusterQuorum -Cluster MyCluster | Format-List *
ok , 这就成功了, 在打开集群页面。
可以看到图中的见证,已经配置上了,如果下面的状态显示的不是联机就手动右键连接一下。
这样就完成了,全部配置成功。
四、测试
随意拔掉 主服务器的网线,或者从服务器的网线,我们虚拟的192.168.30.254 的虚拟ip的数据库都可以正常的读写。