目录html
[========]sql
AlwaysOn 可用性组概述 (SQL Server)数据库
配置计算机的 DNS 后缀,注意在同个工做组
windows
每一个节点的机器都要作域名解析,修改 host 文件C:\Windows\System32\drivers\etc
服务器
节点服务器添加故障转移群集功能
网络
等待安装完成负载均衡
配置集群的管理名称和管理IP
工具
等待配置完成
测试
能够查看集群报告,稍后配置文件共享见证.net
因为咱们是两个节点的故障转移集群,因此须要加上共享文件夹,若是是奇数节点,这一步是不须要作的!
\\XIANGMU4TEST01\share
,并设置 Everyone 彻底控制的权限开启 AlwaysOn
须要重启 SQL Server 服务
检查,若是 AlwaysOn 启用成功,在服务器属性里能够看到启用HADR为True
SELECT * FROM sys.dm_hadr_cluster_members;
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
若是存在已有的端点,则须要将已有端点删除
在主节点服务器操做新建可用性组。
选择数据库,要求数据库已经进行了完整备份
添加副本节点,并勾选自动故障转移,设置辅助副本为可读副本
将端点 URL 设置为 IP 方式,这里端点会显示为咱们上面建立的端点,登录帐号为咱们上面设置的帐号
“备份首选项”和“侦听器”不须要设置,保持默认就行,可用性侦听器咱们后面再添加,能够直接点击“下一步”
数据同步这里建议使用完整的数据库和日志备份的方式更方便,须要有一个共享文件夹,而且节点服务器要有相同的数据库文件目录结构
等待可用性组建立成功
建立成功后数据库状态显示为已同步
故障转移集群会显示拥有一个群集角色
显示面板能够查看集群信息
一个侦听器包括虚拟IP地址、虚拟网络名称、端口号三个元素,一旦建立成功,虚拟网络名称会注册到DNS中,同时为可用性组资源添加IP地址资源和网络名称资源。用户就可使用此名称来链接到可用性组中。
添加侦听器
选择使用静态 IP
建立成功后,在故障转移集群管理器里的角色节点,能够看到客户端访问名称和 IP 地址
链接数据库时使用侦听器的地址
SQL Server 2016 支持多个只读副本负载分担只读操做。
右键一个可用性副本能够查看副本的只读性设置:
主角色中支持的链接访问类型:
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
辅助角色支持的链接访问类型:
ApplicationIntent=ReadOnly
的链接,其它的链接方式没法链接。修改脚本:
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
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 -S 10.98.98.231 -K Readonly -d test -Q "select @@servername" -e
只读链接被链接到辅助副本
使用 SSMS 或者 EF 等须要在链接字符串设置参数ApplicationIntent=ReadOnly
注意:
想要使用辅助副本负载读操做,必需要在链接字符串中配置为只读链接,而后在程序中指定使用只读链接进行数据库读取操做,AlwaysOn 自身不能自动负载均衡。
为每一个数据库节点配置登录帐号,而后经过监听器使用该帐号登录数据库。
主副本建立登录帐号 satest
SELECT * FROM [test]..sysusers
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