SQL Server 2016 + AlwaysOn 无域集群
[========]
AlwaysOn
搭建 WSFC
配置计算机的 DNS 后缀
配置计算机的 DNS 后缀,注意在同个工作组




每个节点的机器都要做域名解析,修改 host 文件
C:\Windows\System32\drivers\etc

安装故障转移集群
节点服务器添加故障转移群集功能

等待安装完成
验证集群
- 打开故障转移集群管理工具

- 点击验证配置

- 添加集群节点

- 运行所有测试

- 可以点击查看验证报告,勾选立即使用经过验证的节点创建集群

创建集群
配置集群的管理名称和管理IP

等待配置完成

可以查看集群报告,稍后配置文件共享见证
创建文件共享见证
由于我们是两个节点的故障转移集群,所以需要加上共享文件夹,如果是奇数节点,这一步是不需要做的!
- 配置集群仲裁

- 选择文件共享见证


- 在集群节点之外的一台服务器上创建共享文件夹
\\XIANGMU4TEST01\share,并设置 Everyone 完全控制的权限
配置 AlwaysOn
开启 AlwaysOn


需要重启 SQL Server 服务
检查,如果 AlwaysOn 启用成功,在服务器属性里可以看到启用HADR为True


查看各节点的投票数
SELECT * FROM sys.dm_hadr_cluster_members;

- 查看 cluster
SELECT * FROM SYS.[dm_hadr_cluster]

新建可用性组
但是既然节点没有加入AD,那么久不能用域认证,只能用证书认证,因此需要创建证书和端点。在配置可用性组前各节点进行证书认证信任。
修改 SQL 服务登陆账号为本机管理员账号


创建证书,两个节点都要创建证书,注意修改证书名称
--节点二:创建主密钥/证书,备份证书。
USE master;
GO
CREATE MASTER KEY ENCRYPTION BY PASSWORD = 'AAA111aaa';
GO
CREATE CERTIFICATE Cert_server228
WITH SUBJECT = 'Cert_server228',
START_DATE = '2017-01-01',EXPIRY_DATE = '2099-12-30';
GO
BACKUP CERTIFICATE Cert_server228
TO FILE = 'C:\Storage\Cert_server228.cer';
GO
注意:备份证书的文件夹要先创建好,并且赋予权限
- 将创建好的证书放到另一台节点服务器,并加入证书
--节点二:创建其他节点证书
USE master;
GO
CREATE CERTIFICATE Cert_server227
FROM FILE = 'C:\Storage\Cert_server227.cer';
GO
证书创建好后如下

- 重新创建端点,授权账号设置为本机管理员账号,验证方式使用上面创建的证书
--节点:创建端点
CREATE ENDPOINT [testag_endpoint]
AUTHORIZATION [POSTEST2-2016\Administrator]
STATE=STARTED
AS TCP (LISTENER_PORT = 5023, LISTENER_IP = ALL)
FOR DATA_MIRRORING
(ROLE = ALL,AUTHENTICATION = CERTIFICATE Cert_server228, ENCRYPTION = REQUIRED ALGORITHM AES)
GO
如果存在已有的端点,则需要将已有端点删除

在主节点服务器操作新建可用性组。

设置可用性组名称,建议勾选数据库级别运行状况检测。

- 在之前的 AlwaysOn 2012 和 2014 中,如果实例健康出现问题,将触发故障转移。如果有一个数据库有问题,只要实例OK,可用性组就不会故障转移。
- 在 AlwaysOn 2016 中,勾选之后,不论是一个实例有问题,还是一个或多个数据库有问题,都会发生故障转移。
选择数据库,要求数据库已经进行了完整备份

添加副本节点,并勾选自动故障转移,设置辅助副本为可读副本

将端点 URL 设置为 IP 方式,这里端点会显示为我们上面创建的端点,登陆账号为我们上面设置的账号

“备份首选项”和“侦听器”不需要设置,保持默认就行,可用性侦听器我们后面再添加,可以直接点击“下一步”
数据同步这里建议使用完整的数据库和日志备份的方式更方便,需要有一个共享文件夹,并且节点服务器要有相同的数据库文件目录结构
等待可用性组创建成功

创建成功后数据库状态显示为已同步

故障转移集群会显示拥有一个群集角色


显示面板可以查看集群信息

创建侦听器
一个侦听器包括虚拟IP地址、虚拟网络名称、端口号三个元素,一旦创建成功,虚拟网络名称会注册到DNS中,同时为可用性组资源添加IP地址资源和网络名称资源。用户就可以使用此名称来连接到可用性组中。
添加侦听器

选择使用静态 IP

创建成功后,在故障转移集群管理器里的角色节点,可以看到客户端访问名称和 IP 地址

连接数据库时使用侦听器的地址

可读副本的负载均衡
SQL Server 2016 支持多个只读副本负载分担只读操作。
右键一个可用性副本可以查看副本的只读性设置:

主角色中的连接
主角色中支持的连接访问类型:
- 允许所有连接(ALL):主数据库同时允许读写连接和只读连接。这是主角色的默认行为。
- 仅允许读/写连接(READ_WRITE):允许
ApplicationIntent=ReadWrite或未设置连接条件的连接。不允许ApplicationIntent=ReadOnly的连接。仅允许读写连接可帮助防止客户错误地将读意向工作负荷连接到主副本。
修改脚本:
USE [master]
GO
ALTER AVAILABILITY GROUP [posTestAg]
MODIFY REPLICA ON N'POSTEST1-2016\POSTEST' WITH (PRIMARY_ROLE(ALLOW_CONNECTIONS = READ_WRITE))
GO
可读辅助副本
辅助角色支持的连接访问类型:
- 无连接(NO):不允许任何用户连接。辅助数据库不可用于读访问。这是辅助角色中的默认行为。
- 仅读意向连接(READ_ONLY):辅助数据库仅接受连接参数
ApplicationIntent=ReadOnly的连接,其它的连接方式无法连接。 - 允许任何只读连接(ALL):辅助数据库全部可用于读访问连接。此选项允许较低版本的客户端进行连接。
修改脚本:
USE [master]
GO
ALTER AVAILABILITY GROUP [posTestAg]
MODIFY REPLICA ON N'POSTEST1-2016\POSTEST' WITH (SECONDARY_ROLE(ALLOW_CONNECTIONS = READ_ONLY))
GO
设置数据库实例监听端口
Sql Server 配置管理工具找到数据库实例的网络配置,

右键 TCP/IP,默认配置的是动态端口

这里修改为固定端口 1433

最后需要重启 Sql Server 服务。
配置可用性组只读路由
执行下面 sql 获取可用性组名称:
select name,* from sys.availability_groups
执行下面 sql 获取要配置的可用性副本名称(服务器实例):
select replica_server_name,* from sys.availability_replicas
- 为可用性副本(服务器实例)配置只读路由 URL,路由地址可以填 IP 或者计算机名,端口填数据库实例绑定的 TCP/IP 端口。
执行脚本:
USE [master]
GO
ALTER AVAILABILITY GROUP [posTestAg]
MODIFY REPLICA ON N'POSTEST1-2016\POSTEST' WITH (SECONDARY_ROLE(READ_ONLY_ROUTING_URL = N'TCP://10.98.98.227:1433'))
GO
ALTER AVAILABILITY GROUP [posTestAg]
MODIFY REPLICA ON N'POSTEST2-2016\POSTEST' WITH (SECONDARY_ROLE(READ_ONLY_ROUTING_URL = N'TCP://10.98.98.228:1433'))
GO
也可以右键可用性组选择属性,通过 UI 方式更改

- 每个自动转移副本配置只读路由列表
USE [master]
GO
ALTER AVAILABILITY GROUP [posTestAg]
MODIFY REPLICA ON
N'POSTEST1-2016\POSTEST' WITH
(PRIMARY_ROLE (READ_ONLY_ROUTING_LIST=(('POSTEST2-2016\POSTEST'),'POSTEST1-2016\POSTEST')));
GO
ALTER AVAILABILITY GROUP [posTestAg]
MODIFY REPLICA ON
N'POSTEST2-2016\POSTEST' WITH
(PRIMARY_ROLE (READ_ONLY_ROUTING_LIST=(('POSTEST1-2016\POSTEST'),'POSTEST2-2016\POSTEST')));
GO
使用“()”对只读路由列表进行分组,
List 1: 'POSTEST1-2016\POSTEST'
List 2: 'POSTEST2-2016\POSTEST'
按如下方式工作:
路由到第一个列表中的副本,如果第一个列表存在多个副本,则对读取连接进行轮询分发。
如果第一列表中任一副本不可用了,路由将继续到第一个列表中的其他可用副本。
如果第一个列表中的所有副本都不可访问,将会路由到下一个列表
如果第一个列表中的任一副本可用,将会恢复路由到第一个列表
测试只读路由效果,sqlcmd 使用 Readonly 指定为只读连接,
sqlcmd -S 10.98.98.231 -K Readonly -d test -Q "select @@servername" -e
只读连接被连接到辅助副本

使用 SSMS 或者 EF 等需要在连接字符串设置参数ApplicationIntent=ReadOnly

注意:
想要使用辅助副本负载读操作,必须要在连接字符串中配置为只读连接,然后在程序中指定使用只读连接进行数据库读取操作,AlwaysOn 自身不能自动负载均衡。
配置账号
为每个数据库节点配置登陆账号,然后通过监听器使用该账号登陆数据库。
主副本创建登陆账号 satest
查看主库上该账号的 sid 为库名
SELECT * FROM [test]..sysusers
- 在副本数据库上创建对应账号,其中 sid对应的值是主库上所查到的sid的值
CREATE LOGIN [satest] WITH PASSWORD=N'xxxxxxx',
SID =0x99AD266AFD26F841B3E49EF9633B0D4B, DEFAULT_DATABASE=[test],
CHECK_EXPIRATION=OFF, CHECK_POLICY=OFF
使用故障转移
建议使用 SSMS 中 AlwaysOn 进行手动故障转移。
文章参考:
SQL Server 2016 无域群集配置 AlwaysON 可用性组
SQL Server 2016 AlwaysOn 安装及配置介绍
SQL SERVER 2016 AlwaysOn 无域集群+负载均衡搭建与简测
https://www.cnblogs.com/ajiangg/p/3668936.html
SQL Server 2016 + AlwaysOn 无域集群的更多相关文章
- SQL SERVER 2016 AlwaysOn 无域集群+负载均衡搭建与简测
之前和很多群友聊天发现对2016的无域和负载均衡满心期待,毕竟可以简单搭建而且可以不适用第三方负载均衡器,SQL自己可以负载了.windows2016已经可以下载使用了,那么这回终于可以揭开令人憧憬向 ...
- SQL Server上唯一的数据库集群:负载均衡、读写分离、容灾(数据零丢失、服务高可用)
SQL Server上唯一的数据库集群:负载均衡.读写分离.容灾(数据零丢失.服务高可用).审计.优化,全面解决数据库用户问题.一键安装,易用稳定,性价比高,下载链接:http://www.zheti ...
- sql server 2016 AlwaysOn实现无域高可用全教程
一.简介环境:小编使用的服务器是windows server 2016(系统服务器) + sql server 2016(数据库服务器)(windows server 2016 + sql serve ...
- SQL 2016 AlwaysOn 无域AlwaysOn配置要点
环境准备: (1)操作系统:Windows Server 2016 Datacenter (2)SQL Server 2016 配置SQL 2016 AlwaysOn 要点 1,因为没有域所以需要在 ...
- 将Sql Server迁移到Always on集群 - 账号的同步
Always on环境的建立,网上资料很多,主要是windows集群的建立以及Sql Server Always on的建立,略 容易忽略的是Sql server账号同步问题(Always on能实现 ...
- SQL Server 2016 Alwayson新增功能
标签:SQL SERVER/MSSQL SERVER/数据库/DBA/ 概述 SQLServer2016发布版本到现在已有一年多的时间了,目前最新的稳定版本是SP1版本.接下来就开看看2016在Alw ...
- Windows Server 2008 R2+SQL Server 2014 R2升级到Windows Server 2016+SQL Server 2016
环境: 操作系统:Windows Server 2008 R2 数据库:SQL Server 2014 因SQL Server 2016可以无域创建AlwaysOn集群,集群只剩下单节点也不会挂掉,故 ...
- 配置SQL Server 2016无域AlwaysOn(转)
Windows Server 2016 以及 SQL Server 2016出来已有一段时间了,因为Windows Server 2016可以配置无域的Windows群集,因此也能够以此来配置无域的S ...
- SQL Server 2016 Failover Cluster + ALwaysOn
SQL Server 2016 Failover Cluster + ALwaysOn 环境的搭建 近期公司为了提高服务的可用性,就想到了部署AlwaysOn,之前的环境只是部署了SQL Server ...
随机推荐
- .NET Core 3.0 Preview 5 亮点之一:发布单文件可执行程序
在阅读 Announcing .NET Core 3.0 Preview 5 时发现了 .NET Core 3.0 Preview 5 的一个新特性 —— Publishing Single EXEs ...
- WPF 动态模拟CPU 使用率曲线图
原文:WPF 动态模拟CPU 使用率曲线图 在工作中经常会遇到需要将一组数据绘制成曲线图的情况,最简单的方法是将数据导入Excel,然后使用绘图功能手动生成曲线图.但是如果基础数据频繁更改, ...
- 如何设置程序UAC控制
在做项目的过程中,有很多情况会涉及到权限问题,要求必须以管理员的身份才能运行,如何强制我们的程序必须以管理员身份运行呢?在调查的过程中发现有很多方式,此处介绍一种简单的方式. 1.在VS中,右键点击工 ...
- layui弹出框打开第二次select内容无法显示问题
今天, 在使用layui弹出框的时候, 第一次进入select内容加载是正常的, 将弹出框关闭再次进入后select下拉框内容为空, 经排查是因为每次弹出窗口z-index都会改变, 弹出框的z-in ...
- C#连接oracle 数据库查询时输入中文查询不出来,用plsql就可以
查询语句为:select * from Per where khmc like '%李%',其实是字符集的问题. 解决方案:在连接字符串加一个“Unicode=True;”
- Android零基础入门第2节:Android 系统架构和应用组件那些事
原文:Android零基础入门第2节:Android 系统架构和应用组件那些事 继上一期浅谈了Android的前世今生,这一期一起来大致回顾一下Android 系统架构和应用组件. 一.Android ...
- Windows的远程协助和远程桌面的区别
在Windows的“系统属性-远程”里面,包含了“远程协助”和“远程桌面”两个设置. 远程桌面我们平时用得比较多,但是远程协助却一直没明白什么作用.系统装完以后,“远程协助 - 允许远程协助连接这台计 ...
- oh my zsh安装
引言 最近阿里云搞活动,整了一台服务器,作为Linux的爱好者,又免费,so.......当然不能错过了.以前看到好多炫酷的Linux界面,比如这样的:梦想中…… 通过各种方式得知这是Oh my zs ...
- vista忘记用户名密码的修改方法(使用PE进入系统,用cmd.exe冒充虚拟键盘,然后就可以mmc组策略,或者命令行添加用户并提升权限)
1. 准备Windows Vista安装光盘,进入BIOS将光驱设为第一启动,在出现的安装界面依次单击"修复计算机","命令提示符". 2.输入以下命令: co ...
- AngularJS 1.4对动画系统进行了彻底的重构
分享 <关于我> 分享 [中文纪录片]互联网时代 http://pan.baidu.com/s/1qWkJfcS 分享 <HTML开发MacOSAp ...