SQL Server 2016 + AlwaysOn 无域集群

原文:SQL Server 2016 + AlwaysOn 无域集群

目录

  • AlwaysOn

    • 搭建 WSFC
    • 配置 AlwaysOn
    • 可读副本的负载均衡
    • 使用故障转移

[========]

AlwaysOn

AlwaysOn 可用性组概述 (SQL Server)

搭建 WSFC

配置计算机的 DNS 后缀

  1. 配置计算机的 DNS 后缀,注意在同个工作组

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

安装故障转移集群

  1. 节点服务器添加故障转移群集功能

  2. 等待安装完成

验证集群

  1. 打开故障转移集群管理工具

  2. 点击验证配置

  3. 添加集群节点

  4. 运行所有测试

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

创建集群

  1. 配置集群的管理名称和管理IP

  2. 等待配置完成

  3. 可以查看集群报告,稍后配置文件共享见证

创建文件共享见证

由于我们是两个节点的故障转移集群,所以需要加上共享文件夹,如果是奇数节点,这一步是不需要做的!

  1. 配置集群仲裁

  2. 选择文件共享见证

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

配置 AlwaysOn

  1. 开启 AlwaysOn

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

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

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

新建可用性组

但是既然节点没有加入AD,那么久不能用域认证,只能用证书认证,因此需要创建证书和端点。在配置可用性组前各节点进行证书认证信任。

  1. 修改 SQL 服务登陆账号为本机管理员账号

  2. 创建证书,两个节点都要创建证书,注意修改证书名称
--节点二:创建主密钥/证书,备份证书。
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

注意:备份证书的文件夹要先创建好,并且赋予权限

  1. 将创建好的证书放到另一台节点服务器,并加入证书
--节点二:创建其他节点证书
USE master;
GO
CREATE CERTIFICATE Cert_server227
FROM FILE = 'C:\Storage\Cert_server227.cer';
GO

证书创建好后如下

  1. 重新创建端点,授权账号设置为本机管理员账号,验证方式使用上面创建的证书
--节点:创建端点
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

如果存在已有的端点,则需要将已有端点删除

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

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

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

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

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

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

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

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

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

创建侦听器

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

  1. 添加侦听器

  2. 选择使用静态 IP

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

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

可读副本的负载均衡

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

设置数据库实例监听端口

  1. Sql Server 配置管理工具找到数据库实例的网络配置,

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

  3. 这里修改为固定端口 1433

  4. 最后需要重启 Sql Server 服务。

配置可用性组只读路由

执行下面 sql 获取可用性组名称:

select name,* from  sys.availability_groups

执行下面 sql 获取要配置的可用性副本名称(服务器实例):

select replica_server_name,* from sys.availability_replicas
  1. 为可用性副本(服务器实例)配置只读路由 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 方式更改

  1. 每个自动转移副本配置只读路由列表
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‘

按如下方式工作:

  1. 路由到第一个列表中的副本,如果第一个列表存在多个副本,则对读取连接进行轮询分发。
  2. 如果第一列表中任一副本不可用了,路由将继续到第一个列表中的其他可用副本。
  3. 如果第一个列表中的所有副本都不可访问,将会路由到下一个列表
  4. 如果第一个列表中的任一副本可用,将会恢复路由到第一个列表
  5. 测试只读路由效果,sqlcmd 使用 Readonly 指定为只读连接,
sqlcmd -S 10.98.98.231 -K Readonly -d test -Q "select @@servername" -e

只读连接被连接到辅助副本

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

注意:

想要使用辅助副本负载读操作,必须要在连接字符串中配置为只读连接,然后在程序中指定使用只读连接进行数据库读取操作,AlwaysOn 自身不能自动负载均衡。

配置账号

为每个数据库节点配置登陆账号,然后通过监听器使用该账号登陆数据库。

  1. 主副本创建登陆账号 satest
  2. 查看主库上该账号的 sid 为库名
SELECT * FROM [test]..sysusers
  1. 在副本数据库上创建对应账号,其中 sid对应的值是主库上所查到的sid的值
CREATE LOGIN [satest] WITH PASSWORD=N'xxxxxxx',
SID =0x99AD266AFD26F841B3E49EF9633B0D4B, DEFAULT_DATABASE=[test],
 CHECK_EXPIRATION=OFF, CHECK_POLICY=OFF

使用故障转移

建议使用 SSMS 中 AlwaysOn 进行手动故障转移。

原文地址:https://www.cnblogs.com/lonelyxmas/p/10903735.html

时间: 2024-10-10 13:40:27

SQL Server 2016 + AlwaysOn 无域集群的相关文章

SQL SERVER 2016 AlwaysOn 无域集群+负载均衡搭建与简测

之前和很多群友聊天发现对2016的无域和负载均衡满心期待,毕竟可以简单搭建而且可以不适用第三方负载均衡器,SQL自己可以负载了.windows2016已经可以下载使用了,那么这回终于可以揭开令人憧憬向往的AlwaysOn2016 负载均衡集群的神秘面纱了. 本篇主要描述个人集群搭建中遇到的坑和一些注意事项,以及2016无域负载均衡的简单体验测试. 搭建体验 基础环境 想要不使用域环境来搭建AlwaysON 必须使用windows 2016 和sql server2016 本篇我使用3台虚拟机(主

SQL Server 2016 AlwaysOn 安装及配置介绍

SQL Server 2016  AlwaysOn 安装及配置介绍 Always On 可用性组功能是一个提供替代数据库镜像的企业级方案的高可用性和灾难恢复解决方案. SQL Server 2012 中引入了 Always On 可用性组功能,此功能可最大程度地提高一组用户数据库对企业的可用性. "可用性组" 针对一组离散的用户数据库(称为"可用性数据库" ,它们共同实现故障转移)支持故障转移环境. 一个可用性组支持一组读写主数据库以及一至八组对应的辅助数据库. (

Windows Server 2016基于工作组的集群

Windows Server 2016基于工作组的集群 Part1: 资源分配 成员1 Server01 192.168.10.10 Windows Server 2016 Datacenter SQL Server 2016 Enterprise With SP1 成员2 Server02 192.168.10.11 Windows Server 2016 Datacenter SQL Server 2016 Enterprise With SP1 成员3 Server03 192.168.1

Windows Server 2016下配置NFS集群

说到Windows下集群,大家都会想到Windows系统自带的故障转移的集群服务,详细的我们就不多说了,今天主要介绍的Windows Server 2016下配置NFS服务集群,我们为什么搭建今天的服务呢?是有一定的原因的,在此我们就说说原因吧~从去年年开始公司就一直上线OA系统,OA系统中有一个附件服务器,通过Mount的方式做共享数据,由于之前做的是单点,供应商也没有好的方法,所以就想到了用windows的NFS做集群,经过尝试确实效果还不错,所以分享给有需要的同学参考. 环境介绍: Hos

SQL Server 2016 Alwayson新增功能

标签:SQL SERVER/MSSQL SERVER/数据库/DBA/ 概述 SQLServer2016发布版本到现在已有一年多的时间了,目前最新的稳定版本是SP1版本.接下来就开看看2016在Alwyson上做了哪些改进,记得之前我在写2014Alwayson的时候提到过几个需要改进的问题在2016上已经做了改进. 一.自动故障转移副本数量 在2016之前的版本自动故障转移副本最多只能配置2个副本,在2016上变成了3个. 说明:自动故障转移增加到三个副本影响并不是很大不是非常的重要,多增加一

配置SQL Server 2016无域AlwaysOn(转)

Windows Server 2016 以及 SQL Server 2016出来已有一段时间了,因为Windows Server 2016可以配置无域的Windows群集,因此也能够以此来配置无域的SQL Server AlwaysOn 高可用. 下面就来一步一步配置无域的SQL AlwaysOn 环境准备: (1)操作系统:Windows Server 2016 Datacenter (2)SQL Server 2016 注意:只有Windows Server 2016 才能无域配置群集 IP

部署SQL Server 2016基于工作组的AlwaysOn AG

部署SQL Server 2016基于工作组的AlwaysOn AG 部署说明: 以下部署不用证书.启动账号为Users组成员.各节点位于同一网段. 前期环境准备参考之前的文章: 部署Windows Server 2016基于工作组的集群 安装和配置SQL Server 2016 With SP1 Part1:创建测试数据库 CREATE DATABASE Chapter5App1Customers ; GO ALTER DATABASE Chapter5App1Customers SET RE

SQL Server 2012 AlwaysOn集群配置指南

1. AlwaysOn介绍 AlwaysOn是SQL Server 2012提供的全新综合.灵活.高效经济的高可用性和灾难恢复解决方案.它整合了镜像和群集的功能,基于OS 故障转移群集(Windows Server FailOver Cluster),通过在同一个WSFC的不同Node上,安装独立的SQL Server实例,定义AlwaysOn Group,一个数据库最多可以部署4个镜像.当热备机出现故障时,可以手工或自动实现故障转移,交换主.辅数据库的角色. AlwaysOn的亮点在于镜像可读

从0开始搭建SQL Server 2012 AlwaysOn 第二篇(配置故障转移集群)

本篇主要讲配置Windows 故障转移集群及遇到的相关问题(坑),因为AlwaysOn是基于Windows的故障转移集群的 在讲解步骤之前需要了解一下故障转移集群仲裁配置 四种集群的仲裁配置: 1.多数节点:这种配置不会用到仲裁磁盘,而所谓多数节点就是在正常节点数量占多数的情况下,集群才会提供服务,否则就停止服务.这种配置适用于奇数节点的集群,例如5个节点的集群,其正常节点数量必须至少3个,集群才会提供服务 2.多数节点和磁盘:适用于偶数节点的集群,他在计算法定数量时会将仲裁磁盘计算进来,例如,