> 技术文档 > 手把手教学无域搭建SQL server always on 高可用集群部署故障转移

手把手教学无域搭建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
手把手教学无域搭建SQL server always on 高可用集群部署故障转移
手把手教学无域搭建SQL server always on 高可用集群部署故障转移

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

手把手教学无域搭建SQL server always on 高可用集群部署故障转移
然后刷新dns缓存。
打开cmd命令行窗口。输入 ipconfig /flushdns
手把手教学无域搭建SQL server always on 高可用集群部署故障转移

3.修改计算机名

两台数据服务器都要修改。修改两台,一台叫master,一台叫backup。
手把手教学无域搭建SQL server always on 高可用集群部署故障转移
手把手教学无域搭建SQL server always on 高可用集群部署故障转移

二、搭建Windows故障转移集群

手把手教学无域搭建SQL server always on 高可用集群部署故障转移
打开添加角色和功能,一路下一步,最后勾选 故障转移集群。
手把手教学无域搭建SQL server always on 高可用集群部署故障转移
手把手教学无域搭建SQL server always on 高可用集群部署故障转移
手把手教学无域搭建SQL server always on 高可用集群部署故障转移
手把手教学无域搭建SQL server always on 高可用集群部署故障转移
手把手教学无域搭建SQL server always on 高可用集群部署故障转移
手把手教学无域搭建SQL server always on 高可用集群部署故障转移
最后一步安装完成后,要重启一下服务器,两台数据服务器都要安装,都要重启。

2.配置

打开故障转移集群管理器
手把手教学无域搭建SQL server always on 高可用集群部署故障转移
创建集群
手把手教学无域搭建SQL server always on 高可用集群部署故障转移

手把手教学无域搭建SQL server always on 高可用集群部署故障转移
这一步可以跳过验证,
(因为我已经配置过了,本地不能再配置,所有下面有一些是我在网上找的图,只需要修改我标注的地方)
手把手教学无域搭建SQL server always on 高可用集群部署故障转移
手把手教学无域搭建SQL server always on 高可用集群部署故障转移
这里的名字和ip是我们开头的表格中确定好的。上图中如果是多网卡的,要只勾选一个咱们用的的那个网卡。点击下一步。
手把手教学无域搭建SQL server always on 高可用集群部署故障转移
正在创建
手把手教学无域搭建SQL server always on 高可用集群部署故障转移
最后会提示创建完成,如果中间失败的话,看错误提示百度问题吧。
手把手教学无域搭建SQL server always on 高可用集群部署故障转移
完成。 这就会在侧面看到咱们创建好的集群。
手把手教学无域搭建SQL server always on 高可用集群部署故障转移
如果没有的话,在侧边可打开,
手把手教学无域搭建SQL server always on 高可用集群部署故障转移

三、251、252安装SqlServer2019

1、C盘中新建一个gdmk文件夹(两台都要建),文件夹权限Everyone读取/写入

2、数据库安装:

注意事项:

SqlServer2019安装功能时全选,排除掉”机器学习服务“,用户验证选择“混合模式”,然后下一步…

3、251、252 开启AlwaysOn
手把手教学无域搭建SQL server always on 高可用集群部署故障转移
开启alwayson
手把手教学无域搭建SQL server always on 高可用集群部署故障转移

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新建可用性组
手把手教学无域搭建SQL server always on 高可用集群部署故障转移

6、新建数据库,并且运行sql文件导入数据

7、数据库备份,
手把手教学无域搭建SQL server always on 高可用集群部署故障转移
直接确定就可以
手把手教学无域搭建SQL server always on 高可用集群部署故障转移

8、创建alwayson

手把手教学无域搭建SQL server always on 高可用集群部署故障转移
手把手教学无域搭建SQL server always on 高可用集群部署故障转移
名字:myalwayson,下一步
手把手教学无域搭建SQL server always on 高可用集群部署故障转移
手把手教学无域搭建SQL server always on 高可用集群部署故障转移
手把手教学无域搭建SQL server always on 高可用集群部署故障转移
手把手教学无域搭建SQL server always on 高可用集群部署故障转移
手把手教学无域搭建SQL server always on 高可用集群部署故障转移
手把手教学无域搭建SQL server always on 高可用集群部署故障转移
手把手教学无域搭建SQL server always on 高可用集群部署故障转移
手把手教学无域搭建SQL server always on 高可用集群部署故障转移
手把手教学无域搭建SQL server always on 高可用集群部署故障转移
手把手教学无域搭建SQL server always on 高可用集群部署故障转移

ok,到目前就几本配置完成了,可以测试一下,直接连接 192.168.30.254 这个虚拟IP的数据库就能够连接成功。

4、故障转移仲裁

这一步骤的作用就是,主备切换用的,当主服务器宕机,要把从服务器切换到主。

手把手教学无域搭建SQL server always on 高可用集群部署故障转移

因为我们只有两台数据服务器是双数,所以默认的多节点选举模式,我们用不了,因为当有任意一台服务器宕机,他们没办法靠自己来判断到底是谁断开连接了,所以咱们就要再让另一台服务器来再投一票,这样就可以知道谁是宕机谁是正常的了。

选择仲裁见证,下一步。
手把手教学无域搭建SQL server always on 高可用集群部署故障转移
配置文件共享仲裁,下一步
手把手教学无域搭建SQL server always on 高可用集群部署故障转移
选择共享路径,然后一路下一步,完成。

重点!!!重点!!!重点!!!
因为我们是没加域所以在这里,怎么选择都会报错,(这个地方我搜寻了好几天的资料,网上的几乎所有的博客都没有介绍这里报错怎么搞,最后终于在微软的官网文档找到了解决办法)
如果给服务器加了域,这里应该不会报错。(这我没试过,当初不加域,就是为了省事,省一台域服务器)
手把手教学无域搭建SQL server always on 高可用集群部署故障转移
所以这个怎么解决呢,看下面。

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 , 这就成功了, 在打开集群页面。
手把手教学无域搭建SQL server always on 高可用集群部署故障转移
可以看到图中的见证,已经配置上了,如果下面的状态显示的不是联机就手动右键连接一下。

这样就完成了,全部配置成功。

四、测试

随意拔掉 主服务器的网线,或者从服务器的网线,我们虚拟的192.168.30.254 的虚拟ip的数据库都可以正常的读写。