在sql server 2016 always on集群里新增一个数据库节点
本篇博客有对应的word版本,有需要的可以点击这里下载。
一 环境介绍
二 操作步骤
2.1 在新节点上安装sql server软件
略
2.2 在新节点上开启‘故障转移群集功能’
打开‘服务管理器’:
点击‘添加角色和功能’:
勾选’DNS服务器’,然后点击‘添加功能’:
2.3 修改hosts文件
修改集群上现有节点的C:\Windows\System32\drivers\etc\hosts 文件,添加新节点的ip和主机名信息,示例:
10.106.210.209 test209.test.com
2.4 把新节点加入现有windows故障转移群集
在集群当前主节点上操作:
打开‘服务器管理器’:
2.5 在新节点上开启always on
2.6 将新节点加入到always on集群里
登录进数据库集群侦听vip,展开‘AlwaysOn 高可用组’-可用性组,右击要加入的组,点‘添加副本’:
2.7 将该副本加入到读路由列表里
连接集群侦听器vip数据库。
-- 查询节点路由
SELECT * FROM master.sys.availability_replicas
-- 查看集群路由情况
SELECT ar.replica_server_name ,
rl.routing_priority ,
( SELECT ar2.replica_server_name
FROM sys.availability_read_only_routing_lists rl2
JOIN sys.availability_replicas AS ar2 ON rl2.read_only_replica_id = ar2.replica_id
WHERE rl.replica_id = rl2.replica_id
AND rl.routing_priority = rl2.routing_priority
AND rl.read_only_replica_id = rl2.read_only_replica_id
) AS 'read_only_replica_server_name'
FROM sys.availability_read_only_routing_lists rl
JOIN sys.availability_replicas AS ar ON rl.replica_id = ar.replica_id
2.7.1 设置节点路由地址
#命令解析:设置从节点test209为只读路由
#GROUP testgroup1:这个是我们设置alwayon指定的可用组名称
ALTER AVAILABILITY GROUP testgroup1
MODIFY REPLICA ON
N'test209' WITH
(SECONDARY_ROLE (READ_ONLY_ROUTING_URL = N'TCP://10.106.210.209:1433'));
2.7.2 修改集群路由规则
#注:需要先设置节点路由地址,不然下面命令执行报错
#命令解析:这里配置当test51为主节点时,test52,test209为只读路由,多个从用逗号分隔USE master
GO
ALTER AVAILABILITY GROUP testgroup1
MODIFY REPLICA ON
N'test51' WITH
(PRIMARY_ROLE (READ_ONLY_ROUTING_LIST=(('test52','test209'))));
--这时候再查询集群路由,可以看到test209加入到集群里了:
2.7.3 验证读写分离
正常连接即可,使用侦听器vip登录
验证方式:select @@servername
点击‘选项’:
在配置正常连接的基础上, 用客户端连接加readonly参数,查看读请求是否转发到从库()
ApplicationIntent = ReadOnly
必须在链接的时候这样配置,否则查询的还是主库。
验证是否查询的是从库。
验证方式:select @@servername ,如果查出来的是另一个副本,不是新副本,则多建几个连接试下。
测试完成后,记得把连接属性改回正常的,否则下次链接的时候还是采用的上面配置的链接属性。
--本篇文章参考自:
SQLServer2012对现有AlwaysOn群集新加节点_ITPUB博客