我是靠谱客的博主 安详摩托,最近开发中收集的这篇文章主要介绍SqlServer2017 AlwaysOn 读写分离 无域控,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

一、说明

配置环境

 Windows server 2019

 SqlServer 2017

设备

 PC1(主节点):JF-SQLDB01  IP地址 192.168.50.199

 PC2(节点):orangePC  IP地址 192.168.50.230

 PC3(节点):pearPC  IP地址 192.168.50.18

 PC4(测试机):DESKTOP-46PCO3Q  

群集名及侦听规划

Windows群集名称:jfqun

可用性组名称:SQLAG

SQL侦听器名称:jfqunLis  IP地址:192.168.50.201(虚拟IP)

DNS 后缀: jf.cn

二、 配置操作系统环境

  1. 修改计算机名添加 dns 后缀名 (所有节点)

  1. 以administrator 登录并添加密码(所有节点)

  1. 打开 路径 C:WindowsSystem32driversetc  下 的hosts 文件配置相关映射 (所有节点+测试机)

  1. 打开防火墙设置允许通过的应用和功能(所有节点)

  1. 网络设置去掉 ipv6、设置 dns 后缀 、禁止 NetBIOS (所有节点)

  1. 控制面板-》所有控制面板项-》网络和共享中心-》更改高级共享设置 -》启用网络发现 (所有节点)

  1. 添加故障转移群集功能(所有节点)

  1. 创建故障转移群集(主节点)

三、 配置故障转移

  1. 安装 SqlServer 2017 和 SSMS (过程略)

  1. 配置SQL Server AlwaysOn (所有节点)

  1. 添加共享文件夹(主节点)

  1. 创建数据库的证书(所有节点)


--主节点上执行:创建主密钥/证书/端点,备份证书到共享文件夹中。
USE master; 
GO 

--drop master key  如果操作失误用这个命令删除
CREATE MASTER KEY ENCRYPTION BY PASSWORD = 'a_123456'; ----密码
GO 

CREATE CERTIFICATE Cert_DB01 
WITH SUBJECT = 'Cert_DB01', 
START_DATE = '2017-12-01',EXPIRY_DATE = '2099-12-31';  --证书的有效时间
GO 

--要开启  sql server的 xp_cmdshell 否则后面命令会拒绝访问
sp_configure 'show advanced options',1
reconfigure
go
sp_configure 'xp_cmdshell',1
reconfigure
go

 
USE master
exec master..xp_cmdshell 'net use \Jf-sqldb01SQLAlwaysOnShare  a_123456  /user:192.168.50.199administrator '--

BACKUP CERTIFICATE Cert_DB01 
TO FILE = '\Jf-sqldb01SQLAlwaysOnShareCert_DB01.cer'; 
GO 

CREATE ENDPOINT [SQLAG_Endpoint] 
AUTHORIZATION [Jf-sqldb01administrator] 
STATE=STARTED 
AS TCP (LISTENER_PORT = 5022, LISTENER_IP = ALL) 
FOR DATA_MIRRORING 
(ROLE = ALL,AUTHENTICATION = CERTIFICATE Cert_DB01, ENCRYPTION = REQUIRED ALGORITHM AES)
GO 

  1. 加入其它数据库的节点(所有节点)
USE master; 
GO 
CREATE CERTIFICATE Cert_DB02 
FROM FILE = '\Jf-sqldb01SQLAlwaysOnShareCert_DB02.cer'; 
GO 


------------------------------------------

USE master; 
GO 
CREATE CERTIFICATE Cert_DB03 
FROM FILE = '\JF-SQLDB01SQLAlwaysOnShareCert_DB03.cer'; 
GO 

  1. 新增可用性组(主节点)

一路下一步

  1. 设置完后添加侦听器

四、 配置读写分离

20200528 今天试了下界面可以多选的,按住Ctrl 键 多选添加就行

USE [master]
GO
ALTER AVAILABILITY GROUP [SQLAG]
MODIFY REPLICA ON N'PEARPC' WITH (PRIMARY_ROLE(READ_ONLY_ROUTING_LIST = ((N'ORANGEPC',N'JF-SQLDB01'),N'PEARPC')))
GO
USE [master]
GO
ALTER AVAILABILITY GROUP [SQLAG]
MODIFY REPLICA ON N'ORANGEPC' WITH (PRIMARY_ROLE(READ_ONLY_ROUTING_LIST = ((N'PEARPC',N'JF-SQLDB01'),N'ORANGEPC')))
GO
USE [master]
GO
ALTER AVAILABILITY GROUP [SQLAG]
MODIFY REPLICA ON N'JF-SQLDB01' WITH (PRIMARY_ROLE(READ_ONLY_ROUTING_LIST = ((N'PEARPC',N'ORANGEPC'),N'JF-SQLDB01')))
GO

五、 测试读写分离负载均衡

  • 遇到的问题

1.网络发现设置不了

计算机(右键)----管理----服务与应用程序----服务
  分别启动以下服务,
Function Discovery Resource Publication
SSDP Discovery
UPnP Device Host

2.可用性组创建失败

如果出现这个错误,就在【SqlServer 配置管理器】中禁用,再启用 alwaysOn,并重启服务

3.如果遇到群集节点加不上去

请查看是否所有节点都正常,且要加的节点上连上 群集管理器

4.要是出现了侦听器添加失败的问题

,很不幸,找不到原因,只有切换下主从节点多试几次看看,会有差不多1/8 的几率会成功。

也可能是【故障转移群集】界面中 SQLAG 下的 侦听器对象没有清理掉,手动清理掉后再在 【SSMS】 界面重新加一下。

5.遇到测试电脑连接 侦听器 实现只读连接连不上

,请在测试电脑上配置下hosts 文件

6.如果销毁了群集重新搭建时发现副本数据库配置不上

就把副本的SqlServer实例的服务属性的 “AlwaysOn” 勾选去掉保存,再勾上再重新启动就可以了。

7. 遇到数据库节点状态是 “未同步/可疑”

可疑节点 SqlServer 服务重启了下 变成了  “未同步” 还是没连上,

把问题节点删除下,重新再加入一下,会变成 “正在恢复” 过一会儿就好了

如果在添加副本的时候出现,连不上集群,就打开故障转移集群面板连上再,添加一次副本就好

8.重新添加可用性副本的时候要选择【仅连接】就好

 

 

 

 9.如果使用【always on ApplicationIntent=ReadOnly】无法访问数据库了

请检查下面的路由URL路径是否配置正确

 

参考文章

配置SQL Server 2016无域AlwaysOn_左君右峰的博客-CSDN博客

https://www.cnblogs.com/lyhabc/p/6498712.html

https://www.cnblogs.com/chenmh/p/7000236.html

感谢几位博主

在某云搭建问题

正常原理是

SqlServer alwayson 侦听器:对外一个ip 访问群集数据库,通过识别数据库连接是否有

ApplicationIntent = ReadOnly 来区分 是要【读写】还是【只读】,

如果是【读写】就只走主副本,如果是【只读】就走 辅助副本,

尝试一:

配置:默认SqlServer Always On配置

问题:出现侦听器ip 对外无法访问

尝试二:

配置:默认SqlServer Always On配置 + 阿里slb替代侦听器(配置加入了读库写库的地址,配置成侦听器的ip,)

问题:出现slb 不能区分读库写库,会往 读库 里写入造成报错。

结论:slb不能实现上面提到的侦听器所能识别主、辅库,但是能负载均衡功能。

尝试三:

配置:写连接直接连主库,读连接连接阿里slb

问题:

结论: 不能实现自动故障转移,能实现读写分离 和 读的故障转移负载均衡

最后

以上就是安详摩托为你收集整理的SqlServer2017 AlwaysOn 读写分离 无域控的全部内容,希望文章能够帮你解决SqlServer2017 AlwaysOn 读写分离 无域控所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(34)

评论列表共有 0 条评论

立即
投稿
返回
顶部