一、说明

配置环境

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:\Windows\System32\drivers\etc  下 的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
goUSE master
exec master..xp_cmdshell 'net use \\Jf-sqldb01\SQLAlwaysOnShare  a_123456  /user:192.168.50.199\administrator '--BACKUP CERTIFICATE Cert_DB01
TO FILE = '\\Jf-sqldb01\SQLAlwaysOnShare\Cert_DB01.cer';
GO CREATE ENDPOINT [SQLAG_Endpoint]
AUTHORIZATION [Jf-sqldb01\administrator]
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-sqldb01\SQLAlwaysOnShare\Cert_DB02.cer';
GO ------------------------------------------USE master;
GO
CREATE CERTIFICATE Cert_DB03
FROM FILE = '\\JF-SQLDB01\SQLAlwaysOnShare\Cert_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 服务重启了下 变成了  “未同步” 还是没连上,

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

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

参考文章

https://blog.csdn.net/roven257/article/details/78691892

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 读写分离 无域控相关推荐

  1. 无域控AlwaysOn实战教学 (一)

    前言 最近正好给客户安装部署无域控的Always On .详细说明下安装部署的细节和碰到的坑.欢迎各位同学拍砖和评论,有什么问题都可以在下面留言. 什么是Always On SQL Server 20 ...

  2. SQL Server AlwaysOn读写分离配置

    SQL Server AlwaysOn读写分离配置 pursuer.chen 备注: 作者:pursuer.chen 博客:http://www.cnblogs.com/chenmh 本站点所有随笔都 ...

  3. SQL Server AlwaysOn读写分离配置

    标签:MSSQL/只读路由 概述 Alwayson相对于数据库镜像最大的优势就是可读副本,带来可读副本的同时还添加了一个新的功能就是配置只读路由实现读写分离:当然这里的读写分离稍微夸张了一点,只能称之 ...

  4. windows2016+sqlserver2017集群搭建alwayson之域控篇

    IP 用途 10.2.159.218 域控(sqlserver.com) 10.2.159.219 节点一(AAA) 10.2.159.220 节点二(BBB) 10.2.159.221 节点三(CC ...

  5. sqlserver AlwaysOn实现读写分离配置及java/net代码实现

    1.用读写分离的原因: O.读写量很大,为了提升数据库读写性能,将读写进行分离: O.如果多机房下写少读多,同时基于数据一致性考虑,只有一个主库存入所有的数据写入,本地再做从库提供读取,减少多机房间直 ...

  6. sql server 2016 Always on 无域部署教程

    sql server 2016 Always on 无域部署教程 一.环境描述 1.1.前言 SQL Server AlwaysOn功能在SQL Server 2012版本就已经出来了,AlwaysO ...

  7. 安装Windows 2012域控(For SQLServer 2014 AlwaysOn)

    微软针对SQLserver推出了很多高可用技术,诸如早期的复制,到后来的日志传送, 数据库镜像,SQLserver集群等等.在SQLserver 2012又拿出了杀手锏AlwaysOn, 和Oracl ...

  8. 一、安装Windows 2012域控(For SQLServer 2014 AlwaysOn)

    微软针对SQLserver推出了很多高可用技术,诸如早期的复制,到后来的日志传送, 数据库镜像,SQLserver集群等等.在SQLserver 2012又拿出了杀手锏AlwaysOn, 和Oracl ...

  9. 从0开始搭建SQL Server AlwaysOn 第一篇(配置域控)

    AlwaysOn是SQL Server2012推出的最新的高可用技术,用以取代原有的SQL Serve镜像 网上的 AlwaysOn可以说是非常的多,也可以说是非常的千篇一律,而且很多都是搭建非常顺利 ...

最新文章

  1. 由浅入深剖析.htaccess
  2. 在元宇宙里怎么交朋友?Meta发布跨语种交流语音模型,支持128种语言无障碍对话...
  3. Gentoo 下的一些命令
  4. 使用Sysmon和Splunk探测网络环境中横向渗透
  5. Entity Framework在WCF中序列化的问题
  6. LeetCode LCS 02. 完成一半题目(计数+排序)
  7. Mysql学习总结(17)——MySQL数据库表设计优化
  8. 40行代码的人脸识别实践
  9. Mac-录屏软件-视频转gif动图
  10. 2022年最新最全软件测试面试题大全
  11. 青年教师计算机培训美篇,小学生停课不停学美篇 小学生停课不停学美篇开头语...
  12. 大数据背景下网络舆情监督机制的研究(非原创)
  13. 供应链金融产品业务全揭秘
  14. 高效程序员的7个技能
  15. IDEA vs VSCode在java开发上的横向对比
  16. 高通410的随身WiFi公网访问实现远程投屏,远程命令教程
  17. SSM+mysql+微信小程序网易云音乐设计与实现 毕业设计-附源码261620
  18. 前端必学的CSS3波浪效果演示
  19. colorkey唇釉是否安全_colorkey唇釉孕妇可以用吗 colorkey唇釉可以用多久
  20. 基于微信小程序的快递取件及上门服务-计算机毕业设计

热门文章

  1. 神经网络中验证集起了什么作用?
  2. AI上推荐 之 SDM模型(建模用户长短期兴趣的Match模型)
  3. YOLOv5+BiSeNet——同时进行目标检测和语义分割
  4. 浅析cv::cuda::threshold函数的实现
  5. netcat使用总结
  6. pip离线安装第三方包
  7. 雨林木风 Ghost XP SP3 纯净版 Y1.0
  8. back-end 后端开发面试题
  9. 关于Unity3d 2020所有国外版本下载(2020.3.0f1以前)
  10. 视图、创建视图的语法、视图的作用