Windows2022+SQL2022 三节点AlwaysOn搭建

时间:2021-06-07 00:51:34

步骤

  1. 搭建域环境
  2. 配置故障转移集群
  3. 安装数据库
  4. 配置AlwaysOn

以下是系统规划

用途

public IP

private IP

名称


节点1

192.168.1.51

10.0.0.51

sqldb51

sqldb51.xxzx.com

节点2

192.168.1.52

10.0.0.52

sqldb52

sqldb52.xxzx.com

节点3

192.168.1.53

10.0.0.53

sqldb52

sqldb53.xxzx.com

集群

192.168.1.61

sqldbcluster

侦听器

192.168.1.62

sqldbvip

域控制器+DNS

192.168.1.50

10.0.0.50

AD

AD.xxzx.com

搭建域环境

public和private网卡相关设置

Windows2022+SQL2022 三节点AlwaysOn搭建

Windows2022+SQL2022 三节点AlwaysOn搭建

Windows2022+SQL2022 三节点AlwaysOn搭建

Windows2022+SQL2022 三节点AlwaysOn搭建

Windows2022+SQL2022 三节点AlwaysOn搭建

三台数据库节点主机加入域

Windows2022+SQL2022 三节点AlwaysOn搭建

创建域sqluser用户,并加入到三台数据库节点主机的Administrators组中

Windows2022+SQL2022 三节点AlwaysOn搭建

Windows2022+SQL2022 三节点AlwaysOn搭建

配置故障转移集群

三台节点主机上安装故障转移集群,创建集群

Windows2022+SQL2022 三节点AlwaysOn搭建

Windows2022+SQL2022 三节点AlwaysOn搭建

Windows2022+SQL2022 三节点AlwaysOn搭建

安装数据库

三台节点主机上安装SQL Server 2022

Windows2022+SQL2022 三节点AlwaysOn搭建

Windows2022+SQL2022 三节点AlwaysOn搭建

Windows2022+SQL2022 三节点AlwaysOn搭建

注意下面这个坑

Windows2022+SQL2022 三节点AlwaysOn搭建

安装SMSS,过程略

配置AlwaysOn

SQLDB51主机上创建共享目录 D:\SHARE

三台节点主机启用AlwaysOn功能,重启数据库引擎

Windows2022+SQL2022 三节点AlwaysOn搭建

在SQLDB51主机上还原数据库,设置恢复模式为完全,并进行一次完整备份

Windows2022+SQL2022 三节点AlwaysOn搭建

创建AlwaysOn

Windows2022+SQL2022 三节点AlwaysOn搭建

Windows2022+SQL2022 三节点AlwaysOn搭建

Windows2022+SQL2022 三节点AlwaysOn搭建

Windows2022+SQL2022 三节点AlwaysOn搭建

Windows2022+SQL2022 三节点AlwaysOn搭建

Windows2022+SQL2022 三节点AlwaysOn搭建

Windows2022+SQL2022 三节点AlwaysOn搭建

Windows2022+SQL2022 三节点AlwaysOn搭建

Windows2022+SQL2022 三节点AlwaysOn搭建

Windows2022+SQL2022 三节点AlwaysOn搭建

添加侦听器VIP

Windows2022+SQL2022 三节点AlwaysOn搭建

Windows2022+SQL2022 三节点AlwaysOn搭建

切换测试

Windows2022+SQL2022 三节点AlwaysOn搭建

Windows2022+SQL2022 三节点AlwaysOn搭建

配置读写分离

SELECT * FROM master.sys.availability_replicas

Windows2022+SQL2022 三节点AlwaysOn搭建

ALTER AVAILABILITY GROUP SQLDBAG
MODIFY REPLICA ON N'SQLDB51'
WITH(SECONDARY_ROLE(READ_ONLY_ROUTING_URL = N'TCP://SQLDB51.xxzx.com:1433'))

ALTER AVAILABILITY GROUP SQLDBAG
MODIFY REPLICA ON N'SQLDB52'
WITH(SECONDARY_ROLE(READ_ONLY_ROUTING_URL = N'TCP://SQLDB52.xxzx.com:1433'))

ALTER AVAILABILITY GROUP SQLDBAG
MODIFY REPLICA ON N'SQLDB53'
WITH(SECONDARY_ROLE(READ_ONLY_ROUTING_URL = N'TCP://SQLDB53.xxzx.com:1433'))

Windows2022+SQL2022 三节点AlwaysOn搭建

ALTER AVAILABILITY GROUP SQLDBAG
MODIFY REPLICA ON
N'SQLDB51' WITH
(PRIMARY_ROLE(READ_ONLY_ROUTING_LIST=(('SQLDB51','SQLDB52','SQLDB53'))))

ALTER AVAILABILITY GROUP SQLDBAG
MODIFY REPLICA ON
N'SQLDB52' WITH
(PRIMARY_ROLE(READ_ONLY_ROUTING_LIST=(('SQLDB51','SQLDB52','SQLDB53'))))

ALTER AVAILABILITY GROUP SQLDBAG
MODIFY REPLICA ON
N'SQLDB53'WITH
(PRIMARY_ROLE(READ_ONLY_ROUTING_LIST=(('SQLDB51','SQLDB52','SQLDB53'))))

Windows2022+SQL2022 三节点AlwaysOn搭建

SELECT ar.replica_server_name ,
rl.routing_priority ,
(SELECT ar2.replica_server_name
FROM sys.availability_read_only_routing_lists rl2
JOIN sys.availability_replicas AS ar2 ON rl2.read_only_replica_id = ar2.replica_id
WHERE rl.replica_id = rl2.replica_id
AND rl.routing_priority = rl2.routing_priority
AND rl.read_only_replica_id = rl2.read_only_replica_id
) AS 'read_only_replica_server_name'
FROM sys.availability_read_only_routing_lists rl
JOIN sys.availability_replicas AS ar ON rl.replica_id = ar.replica_id

Windows2022+SQL2022 三节点AlwaysOn搭建

#sqldbvip为侦听器名称,BA为数据库名
sqlcmd -S sqldbvip -K ReadOnly -d BA -Q "select @@servername"

Windows2022+SQL2022 三节点AlwaysOn搭建

备注

Windows2022+SQL2022 三节点AlwaysOn搭建

主角色中的连接

  • 允许所有连接
  • 如果当前server是primary角色时,primary instance允许所有连接(如:读/写/管理)
  • 允许读/写连接
  • 如果当前server是primary角色时,primary instance只允许读/写连接(如果通过ssms连接,将报错、sqlcmd也是报错)

Windows2022+SQL2022 三节点AlwaysOn搭建

可读辅助副本

  • 是:如果当前server是primary角色时,所有的secondary servers都是可以看的(通过ssms能看结构、数据,但不能更改)
  • 仅读意向:如果当前server是primary角色时,所有的secondary servers只允许读连接(需要在建立连接时加入key来标明为只读连接:Applicatinotallow=ReadOnly)
  • 否:如果当前server是primary角色时,所有的secondary servers都不可以看(通过ssms能连接,但是看不了,会报错,如下)

Windows2022+SQL2022 三节点AlwaysOn搭建